Automatiser l’importation de données à partir de plusieurs feuilles de calcul, Excel VBA

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.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x