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
wscomme la feuille active. - Il utilise
On Error Resume Nextpour éviter les erreurs si aucune feuille n’est active. - Si
wsestNothing, 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.