Créer une plage dynamique et l’exporter, Excel VBA

Créer une plage dynamique et l’exporter, Excel VBA

Voici une explication détaillée et un code VBA pour créer une plage dynamique et l’exporter dans un autre fichier Excel. Cet exemple montre comment sélectionner dynamiquement une plage en fonction de la dernière cellule utilisée dans vos données, puis l’exporter vers un autre classeur. 

Objectif : 

  1. Sélectionner une plage dynamique qui s’ajuste automatiquement en fonction des données présentes dans votre feuille de calcul. 
  2. Exporter cette plage vers un nouveau classeur. 

Étapes à suivre : 

  1. Déterminer la dernière ligne et la dernière colonne : La première étape consiste à identifier la dernière ligne et la dernière colonne de vos données. Cela permet de s’assurer que la plage sélectionnée soit dynamique et s’ajuste à la taille de vos données. 
  2. Créer un objet Range (plage) : Une fois la dernière ligne et la dernière colonne identifiées, nous pouvons les utiliser pour définir la plage dynamique. 
  3. Copier la plage : Après avoir défini la plage dynamique, vous pouvez copier cette plage dans un nouveau classeur pour l’exporter. 
  4. Sauvegarder le nouveau classeur : Enfin, vous allez sauvegarder le nouveau classeur où les données ont été exportées. 

Code VBA : 

Sub ExporterPlageDynamique() 
    Dim ws As Worksheet 
    Dim derniereLigne As Long, derniereColonne As Long 
    Dim plageDynamique As Range 
    Dim nouveauClasseur As Workbook 
    Dim feuilleExport As Worksheet 
    ' Définir la feuille active 
    Set ws = ThisWorkbook.Sheets("Sheet1") ' Changez "Sheet1" par le nom de votre feuille 
    ' Trouver la dernière ligne avec des données dans la colonne A (changez de colonne si nécessaire) 
    derniereLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 
    ' Trouver la dernière colonne avec des données dans la ligne 1 (changez de ligne si nécessaire) 
    derniereColonne = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column 
    ' Définir la plage dynamique 
    Set plageDynamique = ws.Range(ws.Cells(1, 1), ws.Cells(derniereLigne, derniereColonne)) 
    ' Copier la plage dynamique 
    plageDynamique.Copy 
    ' Créer un nouveau classeur pour exporter les données 
    Set nouveauClasseur = Workbooks.Add 
    Set feuilleExport = nouveauClasseur.Sheets(1) ' Feuille par défaut dans le nouveau classeur 
    ' Coller les données dans le nouveau classeur 
    feuilleExport.Paste 
    ' Optionnel : Nettoyer tout formatage ou effectuer d'autres ajustements si nécessaire 
    feuilleExport.Cells(1, 1).Select ' Optionnel : Aller à la première cellule 
    ' Sauvegarder le nouveau classeur (vous pouvez spécifier le chemin d'enregistrement ici) 
    nouveauClasseur.SaveAs "C:\chemin\vers\enregistrer\données_exportées.xlsx" ' Changez le chemin d'enregistrement 
    ' Fermer le nouveau classeur (optionnel) 
    nouveauClasseur.Close SaveChanges:=False 
    ' Informer l'utilisateur que l'exportation a réussi 
    MsgBox "Données exportées avec succès !", vbInformation 
End Sub

Explication du Code : 

1. Définir la feuille

Set ws = ThisWorkbook.Sheets("Sheet1") 

Cette ligne définit une référence à la feuille contenant les données que vous souhaitez exporter. Remplacez « Sheet1 » par le nom de votre feuille. 

2. Trouver la dernière ligne et la dernière colonne

derniereLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 
derniereColonne = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
  • derniereLigne est calculée en partant de la dernière ligne possible (ws.Rows.Count) dans la colonne « A » et en remontant pour trouver la première cellule contenant des données. 
  • derniereColonne est calculée en partant de la dernière colonne possible (ws.Columns.Count) dans la ligne 1 et en allant vers la gauche pour trouver la première cellule contenant des données. 

3. Définir la plage dynamique

Set plageDynamique = ws.Range(ws.Cells(1, 1), ws.Cells(derniereLigne, derniereColonne)) 

Cette ligne définit une plage dynamique partant de la cellule A1 (ws.Cells(1, 1)) et s’étendant jusqu’à la dernière ligne et colonne avec des données. 

4. Copier la plage : plageDynamique.Copy 

La plage dynamique est copiée dans le presse-papiers pour être collée dans le nouveau classeur. 

5. Créer un nouveau classeur : Set nouveauClasseur = Workbooks.Add 

Un nouveau classeur est créé où la plage dynamique sera exportée. 

6. Coller les données : feuilleExport.Paste 

Les données copiées depuis le classeur original sont collées dans la première feuille du nouveau classeur. 

7. Sauvegarder le nouveau classeur

nouveauClasseur.SaveAs "C:\chemin\vers\enregistrer\données_exportées.xlsx" 

Le nouveau classeur est sauvegardé à l’emplacement spécifié. N’oubliez pas de remplacer « C:\chemin\vers\enregistrer\données_exportées.xlsx » par le chemin et le nom du fichier souhaité. 

8. Fermer le nouveau classeur

nouveauClasseur.Close SaveChanges:=False 

Le nouveau classeur est fermé sans enregistrer de modifications supplémentaires après l’exportation des données. 

10. Message de confirmation

MsgBox "Données exportées avec succès !", vbInformation 

Un message informant l’utilisateur que l’exportation a été réussie s’affiche. 

Personnalisation : 

  • Si vos données commencent dans une autre ligne ou colonne, modifiez les références de ligne/colonne dans le code. 
  • Vous pouvez changer le chemin du fichier et le format dans la ligne SaveAs pour répondre à vos besoins (par exemple, sauvegarder en .csv au lieu de .xlsx). 
  • Si vous souhaitez exporter plusieurs feuilles ou ajuster le formatage, vous pouvez étendre le code en conséquence. 
Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x