Créer des plages dynamiques, Excel VBA
Voici un code VBA détaillé pour créer des plages dynamiques dans Excel, ainsi qu’une explication approfondie :
Code VBA pour Créer des Plages Dynamiques
Ce code définit une plage nommée dynamique qui s’étend ou se rétrécit en fonction du nombre de cellules remplies dans une colonne spécifique.
Sub CreateDynamicRange()
Dim ws As Worksheet
Dim rng As Range
Dim lastRow As Long
Dim rangeName As String
' Définir la feuille de travail
Set ws = ThisWorkbook.Sheets("Sheet1") ' Modifiez selon vos besoins
' Définir la colonne où la plage dynamique doit être créée
Dim col As String
col = "A" ' Modifiez selon vos besoins
' Trouver la dernière ligne non vide dans la colonne spécifiée
lastRow = ws.Cells(ws.Rows.Count, col).End(xlUp).Row
' Définir la plage dynamiquement
Set rng = ws.Range(ws.Cells(2, col), ws.Cells(lastRow, col)) ' Ajustez la ligne de départ si nécessaire
' Définir le nom de la plage
rangeName = "DynamicRange"
' Supprimer la plage nommée si elle existe déjà
On Error Resume Next
ws.Names(rangeName).Delete
On Error GoTo 0
' Créer la plage nommée
ws.Names.Add Name:=rangeName, RefersTo:=rng
' Informer l'utilisateur
MsgBox "La plage nommée dynamique '" & rangeName & "' a été créée avec succès.", vbInformation, "Succès"
' Nettoyage
Set ws = Nothing
Set rng = Nothing
End Sub
Explication Détaillee
1. Sélection de la Feuille de Travail
Set ws = ThisWorkbook.Sheets("Sheet1")
- Cette ligne attribue la feuille
Sheet1à la variablews. - Vous pouvez modifier
"Sheet1"pour cibler une autre feuille.
2. Définition de la Colonne
Dim col As String
col = "A"
- La colonne pour la plage dynamique est définie sur la colonne « A ».
- Vous pouvez changer cette valeur pour indiquer une autre colonne.
3. Trouver la Dernière Ligne Non Vide
lastRow = ws.Cells(ws.Rows.Count, col).End(xlUp).Row
ws.Rows.Countdonne le nombre total de lignes (par exemple, 1 048 576 dans Excel 2016+)..End(xlUp).Rowremonte depuis la dernière ligne pour trouver la dernière cellule remplie.
4. Définition de la Plage Dynamique
Set rng = ws.Range(ws.Cells(2, col), ws.Cells(lastRow, col))
- La plage commence à partir de la ligne
2(modifiable) et s’étend jusqu’à la dernière ligne remplie. - Cela rend la plage flexible pour s’agrandir ou se réduire au fur et à mesure des modifications des données.
5. Nommer la Plage Dynamique
rangeName = "DynamicRange"
- La plage se voit attribuer le nom
"DynamicRange". - Vous pouvez changer ce nom selon vos préférences.
6. Gérer les Plages Nommées Existantes
On Error Resume Next
ws.Names(rangeName).Delete
On Error GoTo 0
- Si la plage nommée existe déjà, elle est supprimée pour éviter les erreurs.
On Error Resume Nextempêche les erreurs d’exécution.
7. Créer la Plage Nommée
ws.Names.Add Name:=rangeName, RefersTo:=rng
- Cette ligne crée la plage nommée qui fait référence à la plage dynamique définie précédemment.
8. Notification à l’Utilisateur
MsgBox "La plage nommée dynamique '" & rangeName & "' a été créée avec succès.", vbInformation, "Succès"
- Un message de confirmation indique que la plage dynamique a été créée avec succès.
9. Nettoyage
Set ws = Nothing
Set rng = Nothing
- Cela libère la mémoire en affectant
Nothingaux objets.
Comment Utiliser le Code
1. Ouvrez Excel et appuyez sur ALT + F11 pour ouvrir l’Éditeur VBA.
2. Allez dans Insertion > Module pour créer un nouveau module.
3. Copiez et collez le code ci-dessus dans le module.
4. Exécutez la macro CreateDynamicRange.
5. Vérifiez dans Formules > Gestionnaire de noms (CTRL + F3) pour voir la nouvelle plage nommée.
Avantages des Plages Dynamiques
- Expansion Automatique : Pas besoin de modifier manuellement les références de plage.
- Flexibilité des Données : Pratique pour les Tableaux Croisés Dynamiques, Graphiques et Formules.
- Efficacité : Réduit les erreurs manuelles et améliore l’automatisation.