Créez une créativité dynamique, Excel VBA
Voici un code VBA détaillé qui crée une plage dynamique dans Excel, accompagné d’une explication approfondie.
Objectif :
Ce code VBA définit dynamiquement une plage nommée en fonction des données présentes dans une feuille Excel. La plage s’étend automatiquement à mesure que de nouvelles données sont ajoutées.
Code VBA :
Sub CreerPlageDynamique() Dim ws As Worksheet Dim derniereLigne As Long Dim derniereColonne As Long Dim nomPlage As String Dim plageDynamique As Range ' Définir la feuille de travail où la plage dynamique sera créée Set ws = ThisWorkbook.Sheets("Feuil1") ' Modifier le nom si nécessaire ' Définir le nom de la plage nomPlage = "DonnéesDynamiques" ' Trouver la dernière ligne contenant des données dans la colonne A derniereLigne = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' Trouver la dernière colonne contenant des données dans la ligne 1 derniereColonne = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column ' Définir la plage dynamique Set plageDynamique = ws.Range(ws.Cells(1, 1), ws.Cells(derniereLigne, derniereColonne)) ' Supprimer la plage nommée existante si elle existe déjà On Error Resume Next ws.Names(nomPlage).Delete On Error GoTo 0 ' Créer une nouvelle plage nommée dynamique ws.Names.Add Name:=nomPlage, RefersTo:=plageDynamique ' Afficher un message de confirmation MsgBox "La plage dynamique '" & nomPlage & "' a été créée avec succès !", vbInformation, "Succès" End Sub
Explication détaillée :
1. Sélection de la feuille de travail :
Set ws = ThisWorkbook.Sheets("Feuil1")
- Cette ligne définit la feuille de travail cible où la plage dynamique sera créée.
- Modifier « Feuil1 » en fonction du nom de votre feuille.
2. Recherche de la dernière ligne contenant des données :
derniereLigne = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
- Cette commande recherche la dernière ligne contenant des données dans la colonne A.
- Elle part du bas de la feuille (ws.Rows.Count) et remonte (xlUp).
3. Recherche de la dernière colonne contenant des données :
derniereColonne = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
- Cette commande identifie la dernière colonne contenant des données dans la ligne 1.
- Elle part de l’extrême droite (ws.Columns.Count) et se déplace vers la gauche (xlToLeft).
4. Définition de la plage dynamique :
Set plageDynamique = ws.Range(ws.Cells(1, 1), ws.Cells(derniereLigne, derniereColonne))
- Elle crée une plage de cellules allant de A1 (coin supérieur gauche) jusqu’à la dernière ligne et colonne contenant des données.
- Cela garantit que toutes les données présentes sont incluses dynamiquement.
5. Suppression de la plage nommée existante :
On Error Resume Next ws.Names(nomPlage).Delete On Error GoTo 0
- Cette section empêche les doublons en supprimant toute plage nommée préexistante ayant le même nom.
6. Création de la plage nommée dynamique :
ws.Names.Add Name:=nomPlage, RefersTo:=plageDynamique
- Cette ligne crée une plage nommée dynamique « DonnéesDynamiques », qui s’ajuste automatiquement.
7. Message de confirmation :
MsgBox "La plage dynamique '" & nomPlage & "' a été créée avec succès !", vbInformation, "Succès"
- Un message s’affiche pour informer l’utilisateur que la plage dynamique a été correctement créée.
Utilisation :
- Après l’exécution de cette macro, la plage nommée « DonnéesDynamiques » sera automatiquement mise à jour lorsque les données changent.
- Vous pouvez utiliser =DonnéesDynamiques dans des formules ou des tableaux croisés dynamiques pour référencer les données mises à jour.
Améliorations possibles :
Si vous souhaitez que la plage dynamique s’adapte à une colonne ou une ligne spécifique, des modifications peuvent être apportées.