Créer et dépanner des plages dynamiques, Excel VBA

Créer et dépanner des plages dynamiques, Excel VBA

Voici le code VBA détaillé pour créer et dépanner des plages dynamiques dans Excel, avec une explication complète.
Code VBA pour Créer une Plage Dynamique et Dépanner les Erreurs
Ce code définit dynamiquement une plage en fonction de la dernière ligne et colonne dans un jeu de données, tout en incluant la gestion des erreurs pour le débogage.

Sub CreerPlageDynamique()
    Dim ws As Worksheet
    Dim derniereLigne As Long, derniereCol As Long
    Dim plage As Range
    Dim adressePlage As String
    ' Définir la feuille de calcul
    On Error Resume Next ' Gérer les erreurs potentielles si la feuille n'existe pas
    Set ws = ActiveSheet
    On Error GoTo 0 ' Réactiver la gestion des erreurs
    If ws Is Nothing Then
        MsgBox "Erreur : Aucune feuille active trouvée !", vbCritical, "Erreur Feuille"
        Exit Sub
    End If
    ' Trouver la dernière ligne avec des données dans la colonne A
    On Error Resume Next
    derniereLigne = ws.Cells(Rows.Count, 1).End(xlUp).Row
    On Error GoTo 0
    If derniereLigne < 1 Then
        MsgBox "Erreur : Aucune donnée trouvée dans la colonne A !", vbExclamation, "Erreur Données"
        Exit Sub
    End If
    ' Trouver la dernière colonne avec des données dans la ligne 1
    On Error Resume Next
    derniereCol = ws.Cells(1, Columns.Count).End(xlToLeft).Column
    On Error GoTo 0
    If derniereCol < 1 Then
        MsgBox "Erreur : Aucune donnée trouvée dans la ligne 1 !", vbExclamation, "Erreur Données"
        Exit Sub
    End If
    ' Définir la plage dynamique
    Set plage = ws.Range(ws.Cells(1, 1), ws.Cells(derniereLigne, derniereCol))
    ' Vérifier si la plage est valide
    If plage Is Nothing Then
        MsgBox "Erreur : Impossible de définir la plage dynamique !", vbCritical, "Erreur Plage"
        Exit Sub
    End If
    ' Stocker l'adresse de la plage pour référence
    adressePlage = plage.Address
    MsgBox "Plage dynamique créée avec succès : " & adressePlage, vbInformation, "Succès"
    ' Mettre en surbrillance la plage
    plage.Interior.Color = RGB(200, 200, 255) ' Bleu clair pour la visibilité
    ' Optionnel : Attribuer un nom à la plage
    On Error Resume Next
    ws.Names.Add Name:="PlageDynamique", RefersTo:=plage
    On Error GoTo 0
    MsgBox "Le nom de plage 'PlageDynamique' a été créé !", vbInformation, "Plage Nommée Créée"
End Sub

Explication du Code
1. Initialisation de la Feuille de Calcul

  • Le code commence par essayer de définir ws comme la feuille active.
  • Il utilise On Error Resume Next pour éviter les erreurs si aucune feuille n’est active.
  • Si ws est Nothing, un message d’erreur s’affiche et la macro se termine.

2. Trouver la Dernière Ligne et Colonne Utilisées

  • derniereLigne = ws.Cells(Rows.Count, 1).End(xlUp).Row
  • Cela trouve la dernière cellule non vide de la colonne A.
  • derniereCol = ws.Cells(1, Columns.Count).End(xlToLeft).Column
  • Cela trouve la dernière cellule non vide de la ligne 1.
  • Si l’une de ces valeurs est inférieure à 1, un message d’erreur s’affiche.

3. Définir la Plage Dynamique

  • Le code construit la plage allant de (1,1) (A1) à (derniereLigne, derniereCol).
  • Si la plage est Nothing, un message d’erreur est affiché.

4. Vérification et Mise en Surbrillance de la Plage

  • La plage valide est mise en surbrillance en bleu clair pour la visibilité.
  • L’adresse de la plage est affichée dans une boîte de message.

5. Création d’une Plage Nommée pour une Utilisation Future

  • Le code attribue la plage dynamique à une plage nommée "PlageDynamique".
  • Cela peut être utilisé dans des formules ou dans d’autres automatisations.

Dépannage des Erreurs

Type d’Erreur Cause Possible Solution
« Aucune feuille active trouvée » Aucune feuille n’est ouverte Ouvrez une feuille avant d’exécuter la macro
« Aucune donnée trouvée dans la colonne A » La colonne A est vide Assurez-vous que la colonne A contient des données
« Aucune donnée trouvée dans la ligne 1 » La ligne 1 est vide Assurez-vous que la ligne 1 contient des données
« Impossible de définir la plage dynamique » Erreur non gérée Vérifiez si les valeurs derniereLigne et derniereCol sont correctes

Ce script VBA est bien structuré et robuste pour gérer dynamiquement les plages dans Excel.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x