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 objetRange
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 surCtrl + 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 dansdynamicRange
à 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.