Le maniement de fichiers avec des macros VBA dans Excel est la base de l’extraction et de la manipulation de données dans Excel. En effet, avant de transformer, normaliser et manipuler les données, on doit d’abord y accéder. Cet article présente donc 3 trucs indispensables pour gérer vos fichiers à l’aide de macros VBA. Si vous souhaitez développer vos compétences avec les macros VBA, nous vous suggérons de suivre notre formation Excel – Analyse et modélisation de données (niveau 3) – VBA.
Je souhaite en savoir davantage
TRUC No. 1 – Ouvrir un fichier dont on connaît l’emplacement et le nom
Dans ce cas le plus simple, on connaît déjà où se trouve le fichier convoité, ainsi que son nom, il devient alors facile de l’ouvrir, de faire les manipulations et, finalement, de le fermer.
Voici l’exemple en VBA :
Public Sub Ouvrir_Fichier_Connu()
Dim wbSource, wbFichierUsager As Workbook ‘Déclarer les variables de base
Set wbFichierUsager = ThisWorkbook
‘ ThisWorkbook est toujours le fichier duquel la macro VBA s’exécute. C’est bon de l’assigner à une variable afin de passer d’un fichier à l’autre facilement lors des traitements requis
Workbooks.Open « C:\Directory\Subdirectory\File_Name.xlsm » ‘Évidemment, vous devrez d’abord savoir où se trouve votre fichier dans votre environnement
‘ Il s’agit d’une procédure toute simple qui permet d’ouvrir un fichier dont on connaît l’emplacement et le nom
Set wbSource = ActiveWorkbook
‘On assigne une variable à ce fichier, dès l’ouverture, il devient le fichier actif
‘ Ici, on insère le code qui applique les changements voulus au fichier ouvert, qui sera ensuite refermé
wbSource.Close SaveChanges :=False ‘On ferme le fichier sans le sauver
End Sub
Attention: Si vous copiez collez simplement le code ci-dessus dans un module VBA, vous obtiendrez des erreurs. C’est que WordPress et Excel n’affichent pas les apostrophes et les guillemets de la même façon. Vous devrez donc modifier les apostrophes et les guillemets manuellement. Aussi, pour insérer le code VBA dans votre fichier Excel, vous n’avez qu’à appuyer sur ALT+F11 et ensuite insérer un nouveau module via le menu « Insert ».
TRUC No. 2 – Ouvrir n’importe quel fichier
Le meilleur moyen d’accéder à un quelconque fichier est d’utiliser l’interface fourni par MS Office afin de nous faciliter la tâche. Il y a sans doute, à ce sujet, de nombreuses variantes, je vous montre celle que j’utilise de mon côté. Cette technique est utile quand le nom du fichier convoité change couramment de nom et peut même changer d’emplacement. Cette méthode est donc très flexible.
Voici donc le code VBA à cette fin :
Public Sub Ouvrir_Fichier_Quelconque()
Dim wbSource, wbFichierUsager As Workbook
Dim strFileName As String
Dim intChoice As Integer ‘Déclarer les variables de base
Set wbFichierUsager = ThisWorkbook
‘ On va appeler une application de MS Office afin de chercher et d’ouvrir le bon fichier
‘ Avec la commande qui suit, on indique que nous ne voulons qu’un seul fichier
Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False
‘ On affiche l’écran de dialogue de MS Office
intChoice = Application.FileDialog(msoFileDialogOpen).Show
‘ On s’assure que l’usager a fait un choix
If intChoice <> 0 Then
‘ On récupère le nom complet du fichier
strFileName = Application.FileDialog(msoFileDialogOpen).SelectedItems(1)
Workbooks.Open strFileName
Set wbSource = ActiveWorkbook
‘ Sinon, on arrête tout en notifiant l’usager
Else
‘ S’il n’y a pas de fichier, on quitte sans rien faire
MsgBox « La procédure est annulée car aucun fichier n’a été entré. »
Exit Sub
End If
‘ Ici, on insère le code qui applique les changements voulus au fichier ouvert, qui sera ensuite refermé
wbSource.Close SaveChanges :=False ‘On ferme le fichier sans le sauver
End Sub
TRUC No. 3 – Ouvrir, successivement, tous les fichiers contenus dans un répertoire
Il arrive souvent qu’on puisse déposer, au besoin, les fichiers qui demandent un traitement ou une extraction dans un répertoire défini d’avance. À ce moment, on ne connaît ni les noms exacts, ni le nombre de fichiers à traiter.
Une procédure VBA peut effectuer le travail d’ouvrir chacun des fichiers, de faire le traitement voulu, de le fermer, puis de passer au suivant. Encore une fois, il existe plusieurs méthodes pour un tel travail, je propose l’approche que j’utilise personnellement.
Voici donc ce code VBA :
Public Sub Ouvrir_Fichiers()
Dim wbSource, wbFichierUsager As Workbook
Dim strFileName, strPath, strSpec As String
Dim strFileList() As String
Dim i, FoundFiles As Integer ‘Déclarer les variables de base
Set wbFichierUsager = ThisWorkbook
‘ On commence par identifier le chemin où les fichiers se trouvent
strPath = “C:\Directory\Subdirectory\” ‘ Évidemment, ce chemin sera différent dans chaque cas
strSpec = strPath & “*.xlsx” ‘ Il faut spécifier l’extension des fichiers convoités
‘ On extrait le contenu du répertoire
strFileName = Dir(strSpec)
‘ Avons-nous des fichiers?
If strFileName <> « » Then
FoundFiles = 1
ReDim Preserve FileList(1 To FoundFiles)
FileList(FoundFiles) = strPath & strFileName
Else ‘ Le repertoire est vide, donc on annule tout!
MsgBox « Aucun fichier trouvé »
Exit Sub
End If
‘ Trouver tous les autres noms de fichiers
Do
strFileName = Dir
If strFileName = « » Then Exit Do
FoundFiles = FoundFiles + 1
ReDim Preserve FileList(1 To FoundFiles)
FileList(FoundFiles) = strPath & strFileName
Loop
‘ On fait les traitements requis pour chaque fichier
For i = 1 To FoundFiles
Workbooks.Open strFileName:=FileList(i)
Set wbSource = ActiveWorkbook
‘ Ici, on retrouve le code VBA afin de faire les traitements de ce fichier. Ensuite, on le ferme, sans le sauvegarder
wbSource.Close SaveChanges := False
Next i
End Sub
Comme vous pouvez le voir, les macros VBA peuvent être très puissantes afin de faciliter l’extraction de données provenant de fichiers externes à votre fichier principal, ce qui constitue souvent la première étape essentielle à l’automatisation de tout processus.
Je veux m’inscrire à la formation VBA
NOTRE OFFRE DE FORMATIONS
Le CFO masqué vous offre 13 formations, réparties dans 4 catégories: Tableaux de bord, Modélisation financière, Finance corporative et Analyse et modélisation de données. Ces formations sont offertes en classe, en entreprise et en ligne. Nos formateurs sont des experts dans leur domaine et sont accrédités par Emploi-Québec et vous remettent un certificat, à la fin de chaque formation, que vous pouvez notamment utiliser pour faire reconnaître des heures de formation continue auprès de votre ordre professionnel.
Consulter la liste des formations offertes
Pour info: 514-605-7112 ou info@lecfomasque.com