Automatisation VBA / Excel

Copier-coller entre différents classeurs

Expliquons le contexte dans lequel nous nous trouvons :

Imaginons que nous travaillons sur un fichier Excel que nous complétons au fur et à mesure. Nous souhaitons, à partir de ce fichier contenant une multitude d’informations, remplir de manière automatisée différents fichiers avec des informations spécifiques.

Nous allons pour cela utiliser l’onglet Développeur présent sur Excel, et plus particulièrement le langage VBA (Virtual Basic for Application).

Vérifions tout d’abord que l’onglet Développeur se trouve dans notre ruban Excel. Si ce n’est pas le cas, suivons ces étapes :

  • Cliquer sur Fichier
  • Cliquer sur Options
  • Aller dans l’onglet « Personnaliser le ruban »
  • Cocher « Développeur » dans l’encart « Onglets principaux ».

Une fois ceci effectué, l’onglet Développeur apparaît dans notre ruban.

Pour notre exemple, nous allons utiliser 2 fichiers différents :

  • Le fichier « Base.xlsm », contenant l’ensemble de nos informations. Il est constitué des variables Nom, Prénom, Nom complet (obtenu par concaténation), Age, Sexe, Ville et Pays, ainsi que leurs valeurs. Nous avons besoin de l’extension « xlsm » afin d’utiliser nos macros.
    Automatisation avec VBA - Excel
  • Le fichier « Identite.xlsx », ne contenant aucune information, excepté le nom des variables sur la première ligne. Il est constitué des variables Nom, Age, Sexe et Nom complet. Une colonne est laissée vide après la colonne "Nom" afin d’y mettre la variable "Prénom".
    Automatisation avec VBA - Excel

Nous souhaitons donc automatiser l’import des données du fichier « Base » vers le fichier « Identité ». Nous allons donc proposer ci-après un script permettant cela. Afin de pouvoir commencer à rédiger votre script, sélectionnez l’onglet « Développeur » préalablement ajouté à votre ruban puis cliquez sur Visual Basic. Une fenêtre s’ouvre, il faudra alors cliquer sur « Insertion », puis sur « Module ». Voilà, vous êtes prêts à coder !

Déterminer le nombre de lignes contenues dans le fichier « Base »

Il peut être intéressant de connaître en amont le nombre de lignes que nous allons importer depuis le fichier « Base » (nous illustrerons pourquoi plus tard). Voici un script permettant de faire cela :

Automatisation avec VBA - Excel

Lorsque nous nous plaçons dans ce Sub et que nous l’exécutons (en cliquant sur la flèche verte présente parmi les icônes du bandeau), nous obtenons le résultat suivant, qui correspond bien à notre nombre de lignes :

Automatisation avec VBA - Excel

Copier/Coller du fichier « Base » au fichier « Identité »

Maintenant, nous souhaitons importer les données souhaitées vers le fichier « Identité ». Nous utiliserons le script suivant, en détaillant certains points :

Automatisation avec VBA - Excel

Précision : Je ne tiens pas compte des lignes « Sub » et « End Sub » dans le décompte de mes lignes.

Lignes 1, 5 et 6 : fonctionnent de la même manière, je m’appuierai donc sur la première ligne du code.

Dans celle-ci, je demande de copier les cellules A2 à A4 de la « Feuil1 » du fichier « Base.xlsm » afin de les coller dans la colonne A, à partir de la cellule A2, de la « Feuil1 » du fichier « Identite.xlsx ».
Je copie de la cellule A2 à la cellule A4 car je connais au préalable mon nombre de lignes grâce au code précédent.

Ligne 2 : n’ayant pas le nom de la variable « Prenom » dans mon fichier « Identite.xlsx », je demande de copier coller directement toute la colonne B de mon fichier « Base.xlsm » dans la colonne B de mon fichier « Identite.xlsx ».
Note : j’aurai également pu le faire pour les lignes précédentes, les variables étant les mêmes dans les deux fichiers, mais c’était pour illustrer le remplissage d’une colonne entière ou seulement de certaines cellules de la colonne.

Lignes 3 et 4 : ici, je demande de copier les cellules C2 à C4 de la « Feuil1 » du fichier « Base.xlsm » afin de les coller dans la colonne E, à partir de la cellule E2, de la « Feuil1 » du fichier « Identite.xlsx ».

Mais si je procède comme pour les lignes 1, 5 et 6, le résultat obtenu dans les cellules du fichier « Identite.xlsx » sera la concaténation des colonnes C et D, étant donné que la colonne C du fichier « Base.xlsm » est obtenue par concaténation des colonnes A et B (soit les deux colonnes la précédant).

Autrement dit, j’obtiens par exemple pour la première ligne, « 27 Homme » au lieu de « Guitteny Vincent ». Je veux donc coller les valeurs contenues dans les cellules C2 à C4, et c’est ce que fait la ligne 4 grâce au collage spécial.

Voilà, en adaptant ce code à vos besoins (noms des fichiers, noms des feuilles, cellules concernées, etc), vous êtes en mesure d’automatiser l’import de données d’un fichier Excel à un autre.

Vous souhaitez bénéficier d'experts, de développeurs, ou d'une formation ? Rendez vous sur la page Contact