Nous examinerons un programme dans Excel VBA qui importe des feuilles d’autres fichiers Excel dans un fichier Excel.
Ajoutez les lignes de code suivantes au bouton de commande:
1. Tout d’abord, nous déclarons deux variables de type String, un objet Worksheet et une variable de type Integer.
Dim repertoire As String, nomfichier As String, feuilcal As Worksheet, total As Integer
2. Désactivez la mise à jour de l’écran et l’affichage des alertes.
Application.ScreenUpdating = False Application.DisplayAlerts = False
3. Initialisez le répertoire des variables. Nous utilisons la fonction Dir pour trouver le premier fichier *.xl ?? stocké dans ce répertoire.
repertoire = "C:\Users\KAMAJOU\Documents\testvba" nomfichier = Dir (repertoire & "*.xl ??")
Remarque: La fonction Dir prend en charge l’utilisation de caractères génériques à plusieurs caractères (*) et à un seul caractère (?) pour rechercher tous les différents types de fichiers Excel.
4. La variable nomfichier contient désormais le nom du premier fichier Excel trouvé dans le répertoire. Ajoutez une boucle Do While.
Do While nomfichier <> "" Loop
Ajoutez les lignes de code suivantes (en 5, 6, 7 et 8) à la boucle.
5. Il n’existe aucun moyen simple de copier des feuilles de calcul à partir de fichiers Excel fermés. Par conséquent, nous ouvrons le fichier Excel.
Workbooks.Open (repertoire & nomfichier)
6. Importez les feuilles du fichier Excel dans importfeuil.xlsx.
For Each feuilcal In Workbooks(nomfichier).Worksheets total = Workbooks("importfeuil.xlsx").Worksheets.count Workbooks(nomfichier).Worksheets(sheet.Name).Copy _ after:=Workbooks("importfeuil.xlsx").Worksheets(total) Next feuilcal
Explication: la variable total conserve la trace du nombre total de feuilles de calcul de importfeuil.xlsx. Nous utilisons la méthode Copy de l’objet Worksheet pour copier chaque feuille de calcul et la coller après la dernière feuille de calcul de importfeuil.xlsx.
7. Fermez le fichier Excel.
Workbooks(nomfichier).Close
8. La fonction Dir est une fonction spéciale. Pour obtenir les autres fichiers Excel, vous pouvez utiliser à nouveau la fonction Dir sans arguments.
nomfichier = Dir ()
Remarque: Lorsque plus aucun nom de fichier ne correspond, la fonction Dir renvoie une chaîne de longueur nulle (“”). Par conséquent, Excel VBA quittera la boucle Do While.
9. Activez la mise à jour de l’écran et affichez à nouveau les alertes (en dehors de la boucle).
Application.ScreenUpdating = True Application.DisplayAlerts = True
10. Testez le programme.
Sub ImporterFeuilleCal() Dim repertoire As String, nomfichier As String, feuilcal As Worksheet, total As Integer Application.ScreenUpdating = False Application.DisplayAlerts = False repertoire = "C:\Users\KAMAJOU\Documents\testvba" nomfichier = Dir(repertoire & "*.xl??") Do While nomfichier <> "" Workbooks.Open (repertoire & nomfichier) For Each feuilcal In Workbooks(nomfichier).Worksheets total = Workbooks("importfeuil.xlsx").Worksheets.Count Workbooks(nomfichier).Worksheets(Sheet.Name).Copy _ after:=Workbooks("importfeuil.xlsx").Worksheets(total) Next feuilcal Workbooks(nomfichier).Close Loop Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub