Créer une plage dynamique, Excel VBA

Créer une plage dynamique, Excel VBA

Voici une explication détaillée en français pour créer une plage dynamique avec VBA dans Excel, ainsi qu’un exemple de code. 

Créer une Plage Dynamique Accessible avec VBA dans Excel 

Les plages dynamiques sont essentielles lorsque vous travaillez avec des ensembles de données qui changent fréquemment. Par exemple, si vous avez un tableau de données auquel vous ajoutez ou supprimez régulièrement des lignes, une plage dynamique s’ajustera automatiquement pour inclure les nouvelles lignes ou exclure celles qui ont été supprimées. Cela est particulièrement utile pour les formules, graphiques ou tableaux croisés dynamiques qui dépendent de l’évolution des données. 

Étape 1 : Comprendre ce dont nous avons besoin 

  • Une plage dynamique est une plage dans Excel qui s’étend ou se rétracte automatiquement à mesure que des données sont ajoutées ou supprimées. 
  • En VBA, cela peut être réalisé en faisant référence à la plage à l’aide de UsedRange, End(xlDown), End(xlUp) ou en utilisant des plages nommées qui s’adaptent dynamiquement. 

Étape 2 : Écrire le Code 

Nous allons créer une procédure VBA pour générer une plage dynamique basée sur les cellules utilisées dans une colonne ou un tableau. 

Exemple : Créer une Plage Dynamique Basée sur les Données de la Colonne A 

Cet exemple créera une plage dynamique qui commence au sommet de la colonne A et s’ajuste dynamiquement au fur et à mesure que des lignes sont ajoutées ou supprimées. 

Code VBA : 

Sub CreerPlageDynamique() 
    Dim ws As Worksheet 
    Dim plageDynamique As Range 
    Dim derniereLigne As Long 
    Dim celluleDeDebut As Range 
    ' Définir la feuille de calcul où la plage dynamique sera créée 
    Set ws = ThisWorkbook.Sheets("Feuille1") 
    ' Définir la cellule de début (le sommet de la plage) 
    Set celluleDeDebut = ws.Range("A1")  ' Début des données dans la colonne A 
    ' Trouver la dernière ligne avec des données dans la colonne A 
    derniereLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 
    ' Créer la plage dynamique de A1 à la dernière ligne utilisée dans la colonne A 
    Set plageDynamique = ws.Range(celluleDeDebut, ws.Cells(derniereLigne, "A")) 
    ' Optionnel : Si vous voulez créer une plage nommée, vous pouvez utiliser cette ligne 
    ' ThisWorkbook.Names.Add Name:="MaPlageDynamique", RefersTo:=plageDynamique 
    ' Exemple d'utilisation de la plage dynamique : afficher l'adresse de la plage 
    MsgBox "La plage dynamique est : " & plageDynamique.Address 
End Sub

Explication : 

1. Variables : 

  • ws : Fait référence à l’objet de la feuille de calcul où la plage sera créée. 
  • plageDynamique : Cette variable contiendra la référence à la plage dynamique. 
  • derniereLigne : La dernière ligne de la colonne A contenant des données. 
  • celluleDeDebut : La première cellule de la plage (ici, A1). 

2. Trouver la Dernière Ligne : 

  • La ligne derniereLigne = ws.Cells(ws.Rows.Count, « A »).End(xlUp).Row est une méthode courante pour trouver la dernière ligne utilisée dans une colonne. Elle commence à partir du bas de la feuille et se déplace vers le haut jusqu’à trouver la première cellule non vide. 

3. Créer la Plage Dynamique : 

  • Set plageDynamique = ws.Range(celluleDeDebut, ws.Cells(derniereLigne, « A »)) définit dynamiquement la plage de A1 à la dernière ligne de la colonne A avec des données. 

4. Plage Nommée (Optionnel) : 

  • Si vous voulez rendre la plage accessible par un nom (pour l’utiliser dans des formules, graphiques, etc.), vous pouvez utiliser ThisWorkbook.Names.Add pour créer une plage nommée. 

5. Afficher la Plage : 

  • MsgBox « La plage dynamique est :  » & plageDynamique.Address affiche l’adresse de la plage dynamique dans une boîte de message pour que vous puissiez vérifier que la plage a été définie correctement. 

Étape 3 : Appliquer la Plage Dynamique 

Une fois ce code exécuté, la plageDynamique fera toujours référence aux données de la colonne A, peu importe combien de lignes sont ajoutées ou supprimées. Par exemple : 

  • Si de nouvelles données sont ajoutées à la ligne 10, la plage dynamique s’ajustera automatiquement pour inclure les lignes de 1 à 10. 
  • Si des lignes sont supprimées, la plage se rétrécira en conséquence. 

Cas d’utilisation des Plages Dynamiques 

  • Tableaux Croisés Dynamiques : Vous pouvez utiliser des plages dynamiques pour créer des tableaux croisés dynamiques qui se mettent à jour automatiquement lorsque de nouvelles données sont ajoutées. 
  • Graphiques : Si vous créez des graphiques basés sur des données, les plages dynamiques garantissent que votre graphique représente toujours les données actuelles, sans nécessiter d’ajustements manuels. 

Amélioration : Utilisation d’une Plage Dynamique avec Plusieurs Colonnes 

Si vos données s’étendent sur plusieurs colonnes et que vous souhaitez une plage dynamique qui inclut toutes ces colonnes, voici comment vous pouvez modifier le code : 

Sub CreerPlageDynamiqueMultiColonnes() 
    Dim ws As Worksheet 
    Dim plageDynamique As Range 
    Dim derniereLigne As Long 
    Dim derniereColonne As Long 
    Dim celluleDeDebut As Range 
    ' Définir la feuille de calcul où la plage dynamique sera créée 
    Set ws = ThisWorkbook.Sheets("Feuille1") 
    ' Définir la cellule de début (le coin supérieur gauche de la plage) 
    Set celluleDeDebut = ws.Range("A1") 
    ' Trouver la dernière ligne avec des données dans la colonne A 
    derniereLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 
    ' Trouver la dernière colonne avec des données dans la ligne 1 
    derniereColonne = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column 
    ' Créer la plage dynamique de A1 à la dernière ligne et colonne utilisées 
    Set plageDynamique = ws.Range(celluleDeDebut, ws.Cells(derniereLigne, derniereColonne)) 
    ' Exemple d'utilisation de la plage dynamique : afficher l'adresse de la plage 
    MsgBox "La plage dynamique est : " & plageDynamique.Address 
End Sub

Dans ce cas, derniereColonne trouve la dernière colonne utilisée dans la première ligne, assurant que la plage dynamique inclut plusieurs colonnes. 

Conclusion 

En utilisant VBA pour créer des plages dynamiques, vous automatisez le processus d’adaptation à la taille changeante de vos données. Cela est extrêmement utile pour traiter des données en direct dans des rapports, des tableaux de bord ou des outils interactifs. L’exemple ci-dessus devrait vous aider à démarrer, et vous pouvez l’adapter pour différents types de plages, de colonnes ou même de tableaux entiers. 

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