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 objetRangequi 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 Nextpermet de ne pas afficher d’erreur si la plage nommée n’existe pas.ThisWorkbook.Names(rngName).Deletesupprime une plage nommée existante si elle a le même nom.On Error GoTo 0réinitialise la gestion des erreurs.
6. Créer la Plage Nommée
ThisWorkbook.Names.Add Name:=rngName, RefersTo:=dynamicRange
- La méthode
Names.Addassigne 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.