Magazine Informatique

3 trucs indispensables pour gérer des fichiers avec une macro VBA

Publié le 24 novembre 2014 par Sopmar01 @mon_cher_watson

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.

Formation VBA

Je souhaite en savoir davantage

Truc

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 ».

Ouvrir fichier avec VBA

Truc

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

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


Microsoft Most Valuable Professional

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 [email protected]


Retour à La Une de Logo Paperblog

A propos de l’auteur


Sopmar01 3934 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte

Dossiers Paperblog