Astuce Excel VBA 3 : Ouvrir un fichier et transférer des données vers le fichier cible

Voici le troisième billet de blog d’une série de sept destinés à approfondir un certain nombre de techniques qui permettent d’accélérer la transformation des données dans Excel VBA.

  1. Copier des cellules avec VBA
  2. Ajouter des données à un tableau
  3. Ouvrir un fichier et transférer des données vers le fichier cible
  4. Ouvrir une série de fichiers et transférer les données vers le fichier cible
  5. Sauvegarder des données dans un jeu d’enregistrements
  6. Lire les données de plusieurs fichiers avec un jeu d’enregistrements sans ouvrir les fichiers
  7. Réaliser un jeu d’enregistrement, sur la base des données de 2 feuilles de calcul différentes

Ce billet de blog vous montre comment ouvrir 1 fichier et transférer les données vers le fichier cible. Ce billet peut être considéré comme une introduction aux prochains billets de blog de cette série.

Un fichier avec quelques colonnes de données, comme dans l’exemple ci-dessous, est suffisant pour y arriver. Vous pouvez également déterminer vous-même le nombre de lignes.

Pour que tout fonctionne correctement, nous utilisons des variables Object qui renvoient à chaque fois aux classeurs et aux feuilles de calcul dont nous avons besoin pendant le transfert des données.

Les 2 types d’objets que nous allons principalement utiliser sont donc « WorkBook » (classeur) et « WorkSheet » (feuille de calcul).

Nous avons besoin 2 de chacun, 1 pour le fichier principal (fichier cible) et 1 pour le fichier source qui contient les données.

Nous définissons ces variables comme suit :

Dim wbMaster As Workbook
Dim wsMaster As Worksheet
Dim wbData As Workbook
Dim wsData As Worksheet

Commençons par mettre de l’ordre dans la liaison de notre fichier initial.

Set wbMaster = ActiveWorkbook
Set wsMaster = wbMaster.Worksheets("Database")

Nous allons maintenant ouvrir le fichier qui comprend les données et l’affecter aux variables.

Set wbData = Workbooks.Open("C:\Users\Pibo\Data.xlsx")
Set wsData = wbData.worksheets(1)

Supposons maintenant que la plage de données du fichier source doive être totalement copiée dans le fichier cible. En utilisant les objets que nous avons définis, nous ne devons pas nous inquiéter du classeur ou de la feuille de calcul qui est active.

La méthode « copy » contient un argument « Destination » de sorte que vous ne deviez pas procéder à une sélection avant de coller vos données.

wsData.Cells(1, 1).CurrentRegion.Copy wsMaster.Cells(1, 1)

Toutes les données de la plage source se retrouvent désormais dans la plage cible. Il ne nous reste plus qu’à fermer le fichier cible. Dans ce cadre, il est aussi important de nettoyer correctement les variables utilisées.

wbdata.Close False

Le paramètre « SaveChanges »renvoie la valeur « False » étant donné qu’aucune modification n’a été apportée au fichier source.

Pour terminer, il convient encore de nettoyer les variables. Vous n’avez plus besoin de la référence au fichier. Voici comment procéder afin d’éviter que l’espace utilisé soit encore repris dans le code.

Set wbData = nothing

Voici l’ensemble du code :

Dim wbMaster As Workbook
Dim wsMaster As Worksheet
Dim wbData As Workbook
Dim wsData As Worksheet
Set wbMaster = ActiveWorkbook
Set wsMaster = wbMaster.Worksheets("Database")
Set wbData = Workbooks.Open("C:\Users\MyName\Data.xlsx")
Set wsData = wbData.worksheets(1)
wsData.Cells(1, 1).CurrentRegion.Copy wsMaster.Cells(1, 1)
wbdata.Close False
Set wbData = nothing

Cette méthode est la plus simple pour ouvrir un fichier et en extraire des données.

Remarque : Un désavantage de cette méthode réside dans le temps nécessaire à chaque fois pour exécuter le code dont vous auriez également besoin pour ouvrir vous-même le fichier. Plus le fichier est grand, plus votre code aura besoin de temps pour l’exécution.

Remarque : Essayez de refermer le plus rapidement possible votre fichier de données. Une fois que les données se retrouvent dans votre fichier cible, vous n’avez plus besoin du fichier source. De cette manière, vous ne bloquez pas le fichier pour d’autres utilisateurs.

Dans notre prochain blog, nous utiliserons la même méthode pour ouvrir une série de fichiers et ajouter à chaque fois les données à notre fichier cible. Plus tard, nous apprendrons aussi à extraire des données d’une série de fichiers sans devoir les ouvrir physiquement.

Billet de blog suivant : Ouvrir une série de fichiers et transférer les données vers le fichier cible (4/7).

Suivez-vous ce blog et avez-vous le sentiment que vous avez besoin d’une sérieuse mise à niveau de vos connaissances ? Dans ce cas, n’hésitez pas à suivre notre formation « Excel : Programmation VBA ».

Partager cet article de blog
Categories: Excel
Tags: Excel

Also interesting for you

Réactions

Donut
09/10/2021

super merci, par contre j'ai un souci quand j'utilise ce code, ça copie l'intégralité de ma feuille sur la même colonne séparé par des ;
J'ai 2 classeurs en csv comment faire pour avoir mes 7 colonnes au lieux de 1 ?
Merci

shetheede
15/05/2022

Infelp shetheede Infelp

Laissez une réponse

Votre adresse email ne sera pas publiée. Les champs requis sont indiqués.

Améliorez votre connaissance et vos compétences 

Inscrivez-vous pour notre bulletin et recevez tous les mois :

  • Des trucs et astuces exclusifs 
  • L'information sur nos formations
  • Des tendances de la formation
  • Des invitations pour des séminaires et des évènements

Formations populaires