Gestion dynamique des plages de données, Excel VBA

Gestion dynamique des plages de données, Excel VBA

Voici un code VBA détaillé pour la gestion dynamique des plages de données dans Excel. Ce code permet de créer, mettre à jour et maintenir automatiquement une plage nommée dynamique en fonction des modifications des données. 

📌 Objectif et Explication 

Les plages dynamiques sont essentielles dans Excel pour garantir que les formules, graphiques et tableaux croisés dynamiques s’adaptent automatiquement à l’ajout ou à la suppression de données. Ce code VBA va : 

  1. Définir une plage nommée dynamique basée sur les données de la colonne A. 
  2. Mettre à jour la plage dynamiquement à chaque ajout ou suppression de données. 
  3. Garantir la cohérence de la plage en évitant les erreurs de décalage. 

🖥️ Code VBA pour la Maintenance d’une Plage Dynamique 

Ce code crée une plage nommée « PlageDynamique » sur la colonne A et met à jour automatiquement sa taille. 

📌 Étape 1 : Création d’une plage dynamique 

Sub CreerPlageDynamique() 
    Dim ws As Worksheet 
    Dim derniereLigne As Long 
    Dim nomPlage As String 
    Dim plage As Range 
    ' Définir la feuille de travail où la plage dynamique sera maintenue 
    Set ws = ThisWorkbook.Sheets("Feuil1") ' Adapter selon votre feuille 
    ' Trouver la dernière ligne non vide dans la colonne A 
    derniereLigne = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row 
    ' Définir le nom de la plage dynamique 
    nomPlage = "PlageDynamique" 
    ' Vérifier s'il y a des données dans la colonne A 
    If derniereLigne > 1 Then 
        ' Définir la plage dynamique en fonction de la dernière ligne trouvée 
        Set plage = ws.Range("A2:A" & derniereLigne) 
    Else 
        ' Si la colonne est vide, définir une plage minimale 
        Set plage = ws.Range("A2") 
    End If 
    ' Créer ou mettre à jour la plage nommée 
    ws.Names.Add Name:=nomPlage, RefersTo:=plage 
    MsgBox "Plage dynamique '" & nomPlage & "' mise à jour : " & plage.Address, vbInformation, "Succès" 
    ' Libérer la mémoire 
    Set plage = Nothing 
    Set ws = Nothing 
End Sub

📌 Étape 2 : Mise à Jour Automatique lors de la Modification des Données 

Pour que la plage soit mise à jour automatiquement dès qu’une valeur est ajoutée ou supprimée dans la colonne A, on utilise l’événement Worksheet Change

📌 Comment l’utiliser ? 

  1. Ouvrir l’éditeur VBA (ALT + F11). 
  2. Double-cliquer sur Feuil1 (ou la feuille cible). 
  3. Copier et coller le code suivant dans la fenêtre du module VBA. 
Private Sub Worksheet_Change(ByVal Target As Range) 
    ' Vérifier si la modification a eu lieu dans la colonne A 
    If Not Intersect(Target, Me.Columns(1)) Is Nothing Then 
        ' Désactiver temporairement les événements pour éviter une boucle infinie 
        Application.EnableEvents = False 
        ' Mettre à jour la plage dynamique 
        CreerPlageDynamique 
        ' Réactiver les événements 
        Application.EnableEvents = True 
    End If
End Sub

🔎 Explication Détaillée 

1️ Sub CreerPlageDynamique 

  • Identifie la dernière ligne contenant des données dans la colonne A
  • Crée ou met à jour une plage nommée « PlageDynamique ». 
  • Vérifie que la plage contient bien des données et ajuste sa taille. 

2️ Événement Worksheet_Change 

  • S’exécute automatiquement à chaque modification dans la colonne A
  • Appelle la macro CreerPlageDynamique pour mettre à jour la plage nommée. 

 

✅ Avantages de cette Solution 

Mise à jour automatique sans intervention manuelle. 
Plus fiable que la fonction OFFSET() qui peut ralentir les calculs. 
Évite les erreurs en maintenant une plage toujours correcte. 

 

📌 Comment Tester ? 

  1. Exécutez CreerPlageDynamique (F5 dans l’éditeur VBA). 
  2. Ajoutez ou supprimez des valeurs dans la colonne A et observez la mise à jour automatique. 
Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x