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, accompagné d’une explication complète.
Code VBA : Créer une Plage Dynamique dans Excel
Ce code VBA définit dynamiquement une plage nommée basée sur le nombre de lignes remplies dans une colonne spécifique.

Sub CreateDynamicRange()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim rngName As String
    Dim colLetter As String
    Dim dynamicRange As Range
    ' Définir la feuille de travail
    Set ws = ThisWorkbook.Sheets("Sheet1") ' Changez ici le nom de votre feuille
    ' Définir la colonne à vérifier pour la dernière ligne
    colLetter = "A" ' Changez ici la colonne où vos données dynamiques se trouvent
    ' Trouver la dernière ligne non vide dans la colonne spécifiée
    lastRow = ws.Cells(ws.Rows.Count, colLetter).End(xlUp).Row
    ' Définir la plage dynamique
    Set dynamicRange = ws.Range(ws.Cells(2, colLetter), ws.Cells(lastRow, colLetter)) ' Commence à partir de la ligne 2
    ' Définir le nom de la plage
    rngName = "DynamicData"
    ' Supprimer la plage nommée si elle existe déjà
    On Error Resume Next
    ThisWorkbook.Names(rngName).Delete
    On Error GoTo 0
    ' Créer une nouvelle plage nommée
    ThisWorkbook.Names.Add Name:=rngName, RefersTo:=dynamicRange
    ' Avertir l'utilisateur
    MsgBox "La plage dynamique '" & rngName & "' a été créée avec succès !", vbInformation, "Succès"
End Sub

Explication Détailée du Code VBA
1. Déclaration des Variables

Dim ws As Worksheet
Dim lastRow As Long
Dim rngName As String
Dim colLetter As String
Dim dynamicRange As Range
  • ws: Représente la feuille de calcul sur laquelle la plage dynamique sera créée.
  • lastRow: Contient le numéro de la dernière ligne dans la colonne spécifiée.
  • rngName: Le nom de la plage dynamique.
  • colLetter: Contient la lettre de la colonne où les données dynamiques se trouvent.
  • dynamicRange: Un objet Range qui contiendra les données dynamiques.

2. Définir la Feuille de Travail
Set ws = ThisWorkbook.Sheets("Sheet1")

  • Cette ligne assigne ws à une feuille spécifique. Changez "Sheet1" pour le nom de votre propre feuille de calcul.

3. Trouver la Dernière Ligne avec des Données
lastRow = ws.Cells(ws.Rows.Count, colLetter).End(xlUp).Row

  • ws.Rows.Count: Obtenez le nombre total de lignes dans la feuille (1 048 576 dans Excel 2007+).
  • .End(xlUp): Agit comme si vous appuyiez sur Ctrl + Flèche haut, en partant de la dernière ligne et remontant jusqu’à la première cellule remplie.
  • .Row: Récupère le numéro de la dernière ligne remplie.

4. Définir la Plage Dynamique
Set dynamicRange = ws.Range(ws.Cells(2, colLetter), ws.Cells(lastRow, colLetter))

  • La plage commence à la ligne 2 (supposant que la ligne 1 est une en-tête).
  • La plage s’étend jusqu’à lastRow (la dernière ligne remplie dans la colonne "A").

5. Supprimer la Plage Nommée Précédente

On Error Resume Next
ThisWorkbook.Names(rngName).Delete
On Error GoTo 0
  • On Error Resume Next permet de ne pas afficher d’erreur si la plage nommée n’existe pas.
  • ThisWorkbook.Names(rngName).Delete supprime une plage nommée existante si elle a le même nom.
  • On Error GoTo 0 réinitialise la gestion des erreurs.

6. Créer la Plage Nommée
ThisWorkbook.Names.Add Name:=rngName, RefersTo:=dynamicRange

  • La méthode Names.Add assigne la plage contenue dans dynamicRange à la plage nommée "DynamicData".

7. Afficher un Message de Confirmation
MsgBox "La plage dynamique '" & rngName & "' a été créée avec succès !", vbInformation, "Succès"

  • Cette ligne informe l’utilisateur que la plage dynamique a été créée avec succès.

Comment Utiliser Ce Code
1. Ouvrez votre fichier Excel.
2. Appuyez sur ALT + F11 pour ouvrir l’éditeur VBA.
3. Cliquez sur Insertion > Module pour créer un nouveau module.
4. Copiez et collez le code dans le module.
5. Exécutez CreateDynamicRange en appuyant sur F5 ou en l’exécutant manuellement.
Avantages des Plages Nommées Dynamiques

  • S’ajustent automatiquement lorsque les données changent.
  • Utiles pour les graphiques, les listes déroulantes et les tableaux croisés dynamiques.
  • Assurent une flexibilité dans les rapports et les tableaux de bord.
Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x