Créer une plage dynamique, Excel VBA

Créer une plage dynamique, Excel VBA

Voici un code VBA détaillé pour créer une plage dynamique dans Excel, avec une explication détaillée. Une plage dynamique s’ajuste automatiquement en fonction des données présentes dans la feuille de calcul, ce qui est utile lorsque les données changent fréquemment (ajout ou suppression de lignes ou de colonnes). 

Code VBA pour créer une plage dynamique 

Sub CreateDynamicRange() 
    Dim ws As Worksheet 
    Dim LastRow As Long 
    Dim LastCol As Long 
    Dim dynamicRange As Range 
    ' Définir la feuille de calcul avec laquelle vous travaillez 
    Set ws = ThisWorkbook.Sheets("Sheet1") ' Changez "Sheet1" par le nom de votre feuille 
    ' Trouver la dernière ligne avec des données dans la feuille 
    LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 
    ' Trouver la dernière colonne avec des données dans la feuille 
    LastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column 
    ' Définir la plage dynamique en fonction de la dernière ligne et de la dernière colonne 
    Set dynamicRange = ws.Range(ws.Cells(1, 1), ws.Cells(LastRow, LastCol)) 
    ' Vous pouvez maintenant utiliser la plage dynamique dans votre code, par exemple, la sélectionner 
    dynamicRange.Select 
    ' Ou si vous voulez nommer la plage dynamiquement 
    dynamicRange.Name = "DynamicRange"  
    ' Afficher le nom de la plage dynamique créée (facultatif) 
    MsgBox "Plage dynamique créée : " & dynamicRange.Address 
End Sub

Explication détaillée du code : 

1. Définir la feuille de calcul : 

Set ws = ThisWorkbook.Sheets("Sheet1") 

Cette ligne définit l’objet ws (feuille de calcul) sur la feuille nommée « Sheet1 ». Vous pouvez remplacer « Sheet1 » par le nom de la feuille sur laquelle vous souhaitez travailler. 

2. Trouver la dernière ligne avec des données : 

LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 

Pour trouver la dernière ligne contenant des données, nous utilisons la méthode End(xlUp) qui commence à partir de la dernière cellule de la colonne A et remonte jusqu’à la première cellule non vide. La propriété Row permet d’obtenir le numéro de ligne de cette cellule. 

  • ws.Rows.Count donne le nombre total de lignes de la feuille (en général, 1048576 pour les versions modernes d’Excel). 
  • .End(xlUp) se déplace vers le haut jusqu’à rencontrer la première cellule non vide. 

3. Trouver la dernière colonne avec des données : 

LastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column 

De manière similaire à la recherche de la dernière ligne, nous utilisons la méthode End(xlToLeft) pour trouver la dernière colonne avec des données. Cela part de la dernière colonne de la première ligne et se déplace vers la gauche jusqu’à trouver la première cellule non vide. La propriété Column permet de récupérer le numéro de colonne. 

4. Définir la plage dynamique : 

Set dynamicRange = ws.Range(ws.Cells(1, 1), ws.Cells(LastRow, LastCol)) 

Une fois les numéros de la dernière ligne (LastRow) et de la dernière colonne (LastCol) déterminés, nous définissons la plage dynamique allant de la cellule en haut à gauche (A1) jusqu’à la cellule située à l’intersection de la dernière ligne et de la dernière colonne. Cela permet de créer une plage qui s’ajuste automatiquement en fonction des données présentes. 

5. Utilisation de la plage dynamique : Vous pouvez interagir avec la plage dynamique de différentes manières. Par exemple, pour la sélectionner, vous utilisez cette ligne : dynamicRange.Select

Vous pouvez également appliquer des formats, effectuer des calculs ou exporter cette plage selon vos besoins. 

6. Nommer la plage dynamique (facultatif) : 

dynamicRange.Name = "DynamicRange" 

Si vous souhaitez donner un nom à la plage dynamique pour la référencer plus facilement dans vos formules, tableaux croisés dynamiques ou autre code VBA, vous pouvez utiliser cette ligne pour nommer la plage « DynamicRange ». 

7. Message optionnel : 

MsgBox "Plage dynamique créée : " & dynamicRange.Address 

Cette ligne affiche une boîte de message indiquant l’adresse de la plage dynamique créée. Cela peut être utile pour vérifier que le code fonctionne comme prévu. 

Remarques supplémentaires : 

  • Plage dynamique avec des tableaux : Si vous travaillez avec des tableaux Excel, vous n’avez pas besoin de définir manuellement une plage dynamique, car les tableaux Excel redimensionnent automatiquement la plage lorsqu’une ligne ou une colonne est ajoutée ou supprimée. Vous pouvez simplement faire référence au nom du tableau. 
  • Plages plus complexes : Si vos données sont plus complexes (par exemple, irrégulières ou non contiguës), vous devrez peut-être utiliser une méthode plus avancée pour définir la plage. 

Exemple pratique : 

Supposons que vous ayez un jeu de données sous forme de tableau et que vous souhaitiez créer une plage dynamique chaque fois que vous ajoutez de nouvelles lignes ou colonnes. Ce code VBA s’assurera que toutes les nouvelles lignes/colonnes sont automatiquement incluses dans la plage, ce qui peut être utilisé pour des graphiques, des tableaux croisés dynamiques ou d’autres analyses de données. 

Ce code VBA permet de créer une plage dynamique qui s’adapte aux changements de données dans une feuille de calcul, ce qui est particulièrement utile lorsqu’il s’agit de travailler avec des données qui évoluent fréquemment. 

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