Automatiser l’importation de données à partir de plusieurs feuilles de calcul, Excel VBA
L’automatisation de l’importation de données à partir de plusieurs feuilles de calcul dans Excel à l’aide de VBA peut être très utile lorsque vous travaillez avec de nombreux fichiers similaires ou lorsque vous devez extraire des informations de plusieurs feuilles dans un même classeur. Voici un exemple détaillé d’un code VBA qui permet d’importer des données provenant de plusieurs feuilles de calcul dans un fichier Excel.
Objectif du code
Le but de ce code est d’automatiser l’importation des données depuis différentes feuilles de calcul d’un classeur source dans un autre classeur cible. Le code va :
1. Ouvrir un classeur source.
2. Lire les données de plusieurs feuilles de calcul du classeur source.
3. Coller les données dans un classeur cible, sur une feuille spécifique.
Étape 1 : Préparer le classeur cible
Avant d’exécuter le code, assurez-vous que vous avez un classeur cible avec une feuille vide où les données importées seront collées.
Étape 2 : Code VBA détaillé
Voici un code VBA détaillé qui permet d’importer des données à partir de plusieurs feuilles de calcul.
Explication du code :
• Le code suppose que vous avez un classeur source dont les feuilles contiennent les données à importer.
• Le code ouvre ce classeur source, parcourt chaque feuille et copie les données dans un nouveau classeur cible.
• Le code commence par la première ligne vide de la feuille de destination dans le classeur cible pour coller les données.
Sub ImporterDonnees() ' Déclare les variables nécessaires Dim ClasseurSource As Workbook Dim FeuilleSource As Worksheet Dim ClasseurCible As Workbook Dim FeuilleCible As Worksheet Dim DerniereLigne As Long Dim PlageSource As Range Dim CheminSource As String Dim i As Integer ' Chemin du classeur source à importer CheminSource = "C:\chemin\vers\votre\fichier_source.xlsx" ' Ouvrir le classeur cible (le classeur actuel dans lequel vous travaillez) Set ClasseurCible = ThisWorkbook Set FeuilleCible = ClasseurCible.Sheets("FeuilleCible") ' Nom de la feuille cible où les données seront collées ' Ouvrir le classeur source Set ClasseurSource = Workbooks.Open(CheminSource) ' Initialiser la ligne de départ dans le classeur cible DerniereLigne = FeuilleCible.Cells(FeuilleCible.Rows.Count, 1).End(xlUp).Row + 1 ' Trouver la dernière ligne vide de la colonne 1 (A) ' Parcourir chaque feuille dans le classeur source For Each FeuilleSource In ClasseurSource.Sheets ' Sélectionner la plage de données de la feuille source ' Supposons que vous voulez copier toutes les données de A1 à la dernière cellule utilisée Set PlageSource = FeuilleSource.UsedRange ' Vérifier si la plage n'est pas vide If Not PlageSource Is Nothing Then ' Copier les données de la feuille source PlageSource.Copy ' Coller les données dans la feuille cible à partir de la ligne vide trouvée FeuilleCible.Cells(DerniereLigne, 1).PasteSpecial Paste:=xlPasteValues ' Mettre à jour la dernière ligne vide de la feuille cible après chaque copie DerniereLigne = FeuilleCible.Cells(FeuilleCible.Rows.Count, 1).End(xlUp).Row + 1 End If Next FeuilleSource ' Fermer le classeur source sans enregistrer les modifications ClasseurSource.Close SaveChanges:=False ' Message de fin MsgBox "Importation terminée !" End Sub
Explication détaillée de chaque section du code :
1. Déclaration des variables :
ClasseurSource et FeuilleSource : ces variables sont utilisées pour faire référence au classeur et aux feuilles de calcul dans le classeur source.
ClasseurCible et FeuilleCible : ces variables désignent le classeur et la feuille de calcul dans le classeur cible où les données seront collées.
DerniereLigne : cette variable est utilisée pour trouver la première ligne vide de la feuille cible afin d’y coller les données.
PlageSource : cette variable contient la plage de données à copier dans chaque feuille source.
2. Chemin du fichier source :
CheminSource contient le chemin complet du fichier source. Vous devez remplacer « C:\chemin\vers\votre\fichier_source.xlsx » par le chemin réel du fichier Excel source.
3. Ouverture du classeur source et du classeur cible :
Le classeur source est ouvert avec la méthode Workbooks.Open.
Le classeur cible est récupéré avec ThisWorkbook, qui fait référence au classeur contenant le code.
4. Parcours des feuilles de calcul du classeur source :
Le code parcourt chaque feuille du classeur source avec For Each FeuilleSource In ClasseurSource.Sheets.
Pour chaque feuille, la plage de données est déterminée avec UsedRange, qui sélectionne toutes les cellules utilisées dans la feuille.
5. Copie des données :
Les données de chaque feuille sont copiées et collées dans le classeur cible avec la méthode PasteSpecial, qui permet de coller uniquement les valeurs (pas de formatage, pas de formules).
6. Mise à jour de la dernière ligne vide :
Après chaque importation de données, la variable DerniereLigne est mise à jour pour s’assurer que les données suivantes sont collées à partir de la bonne ligne.
7. Fermeture du classeur source :
Une fois les données copiées, le classeur source est fermé sans enregistrer les modifications avec ClasseurSource.Close SaveChanges:=False.
8. Message de fin :
Un message apparaît une fois l’importation terminée pour informer l’utilisateur.
Conclusion :
Ce code permet d’automatiser l’importation de données depuis plusieurs feuilles de calcul d’un fichier source vers un fichier cible. Vous pouvez adapter ce code pour répondre à des besoins spécifiques, comme choisir des plages de cellules spécifiques, appliquer des filtres ou des transformations avant de coller les données dans la feuille cible.