Créer une créativité de plage dynamique, Excel VBA

Créer une créativité de plage dynamique, Excel VBA

Voici un code VBA détaillé pour créer une plage dynamique dans Excel. Ce code permet de créer une plage nommée dynamique qui s’adapte automatiquement au nombre de lignes et de colonnes occupées par les données. Une explication détaillée suit après le code. 

Code VBA : Création d’une Plage Dynamique 

Sub CreerPlageDynamique() 
    Dim ws As Worksheet 
    Dim derniereLigne As Long 
    Dim derniereColonne As Long 
    Dim nomPlage As String 
    Dim plageDynamique As String 
    ' Définir la feuille de travail où se trouvent les données 
    Set ws = ThisWorkbook.Sheets("Feuil1") 
    ' Trouver la dernière ligne utilisée dans la colonne A (en supposant que la colonne A contient les données principales) 
    derniereLigne = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row 
    ' Trouver la dernière colonne utilisée dans la ligne 1 (en supposant que la ligne 1 contient les en-têtes) 
    derniereColonne = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column 
    ' Définir le nom de la plage dynamique 
    nomPlage = "PlageDynamique" 
    ' Construire la référence de la plage dynamique 
    plageDynamique = ws.Name & "!" & ws.Cells(1, 1).Address(False, False) & ":" & ws.Cells(derniereLigne, derniereColonne).Address(False, False) 
    ' Supprimer l'ancienne plage nommée si elle existe 
    On Error Resume Next 
    ThisWorkbook.Names(nomPlage).Delete 
    On Error GoTo 0 
    ' Créer une nouvelle plage nommée dynamique 
    ThisWorkbook.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 du code 

1. Sélection de la feuille de calcul 

Set ws = ThisWorkbook.Sheets("Feuil1") 

  • Cette ligne définit la feuille « Feuil1 » comme celle où se trouvent les données. 
  • Remplacez « Feuil1 » par le nom réel de votre feuille si nécessaire. 

2. Recherche de la dernière ligne utilisée 

derniereLigne = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row 

  • Utilise End(xlUp), qui simule Ctrl + Flèche Haut pour trouver la dernière ligne occupée dans la colonne A. 

3. Recherche de la dernière colonne utilisée 

derniereColonne = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column 

  • Utilise End(xlToLeft), qui simule Ctrl + Flèche Gauche pour détecter la dernière colonne occupée dans la ligne 1. 

4. Définition de la plage dynamique 

nomPlage = "PlageDynamique" 

  • Le nom de la plage dynamique est défini comme « PlageDynamique », que vous pouvez modifier selon vos besoins. 

plageDynamique = ws.Name & "!" & ws.Cells(1, 1).Address(False, False) & ":" & ws.Cells(derniereLigne, derniereColonne).Address(False, False) 

  • Construit la référence de la plage en utilisant la notation R1C1
  • ws.Cells(1,1).Address(False, False) renvoie « A1 ». 
  • ws.Cells(derniereLigne, derniereColonne).Address(False, False) renvoie, par exemple, « D10 » si les données vont jusqu’à la colonne D, ligne 10. 

5. Suppression de l’ancienne plage nommée 

On Error Resume Next 
ThisWorkbook.Names(nomPlage).Delete 
On Error GoTo 0
  • Supprime la plage nommée « PlageDynamique » si elle existe déjà, pour éviter les doublons. 

6. Création de la plage dynamique 

ThisWorkbook.Names.Add Name:=nomPlage, RefersTo:="=" & plageDynamique 

  • Crée une plage nommée dynamique dans le classeur. 

7. Affichage d’un message de confirmation 

MsgBox "La plage dynamique '" & nomPlage & "' a été créée avec succès !", vbInformation, "Succès" 

  • Affiche une boîte de message pour confirmer la création de la plage. 

Comment utiliser ce code ? 

  1. Ouvrez Excel et appuyez sur ALT + F11 pour ouvrir l’éditeur VBA. 
  2. Insérez un module (Insertion > Module). 
  3. Copiez et collez le code ci-dessus dans le module. 
  4. Modifiez « Feuil1 » si vos données sont sur une autre feuille. 
  5. Exécutez la macro en appuyant sur F5 ou en lançant CreerPlageDynamique depuis la fenêtre des macros. 

Utilisation et mise à jour automatique 

  • Si vous ajoutez ou supprimez des lignes/colonnes, réexécutez la macro pour mettre à jour la plage. 
  • Vous pouvez utiliser « PlageDynamique » dans vos formules, par exemple :  =SOMME(PlageDynamique) 
  • Si utilisée dans un graphique, la plage se mettra à jour après exécution de la macro. 
Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x