Commentaires sur un code VBA

Bonjour

J'aimerais pouvoir adapter à mes propres besoins un code VBA qui m'a été donné avec un tableau d'exemple. Il répond bien à ce que je recherche, c'est à dire faire apparaître les lignes d'un tableau contenant la chaîne de caractères tapée dans la cellule C1.

Mais ce code m'a été donné sans commentaire et ma connaissance très très très primaire de VBA ne me permet pas de savoir ce qui se passe à chaque ligne d'écriture, et donc de pouvoir l'adapter sur mon propre fichier.

Je serais très reconnaissant à qui pourrait m'expliquer...

Voici le code :

Private Sub Worksheet_Change(ByVal Target As Range)

Dim C As Range, Plage As Range

If Target.Address = "$C$1" And Target.Count = 1 Then

Application.EnableEvents = False

[H7].Resize(65000).ClearContents

Set Plage = Range("B7", Cells(Rows.Count, 2).End(xlUp))

For Each C In Plage

If IsNumeric(Application.Match("*" & [C1].Value & "*", C.Offset(, 2).Resize(, 5), 0)) Then

C.Offset(, 6) = "X"

End If

Next C

Set Plage = Range("A6", Cells(Rows.Count, 1).End(xlUp)).Resize(, 8)

Plage.AutoFilter

Plage.AutoFilter 8, "X"

Application.EnableEvents = True

End If

End Sub

Merci

Bonjour,

voir commentaires dans le code

Private Sub Worksheet_Change(ByVal Target As Range) 'procédure qui se déclenche quand il y a un changement sur la feuille
Dim C As Range, Plage As Range 'définition des variables
If Target.Address = "$C$1" And Target.Count = 1 Then 'si le changement est dans la cellule A1 et qu'il n'y a qu'une seule cellule sélectionnée
Application.EnableEvents = False ' on empêche la prise en compte d'autres évènements
[H7].Resize(65000).ClearContents ' on vide la colonne H de h7 à H65006
Set Plage = Range("B7", Cells(Rows.Count, 2).End(xlUp)) ' on définit la plage de recherche de B7 à la dernière cellule non vide de la colonne B
For Each C In Plage ' on considère chaque cellule de cette plage
If IsNumeric(Application.Match("*" & [C1].Value & "*", C.Offset(, 2).Resize(, 5), 0)) Then 'on regarde si on trouve une partie du texte dans les cases qui suivent de D à H
C.Offset(, 6) = "X" 'si texte trouvé on met en X en colonne H
End If
Next C 'on prend la cellule suivante de la plage
Set Plage = Range("A6", Cells(Rows.Count, 1).End(xlUp)).Resize(, 8) 'on redéfinit la plage A6 à H dernière ligne utilisée
Plage.AutoFilter 'on supprime tous les filtres
Plage.AutoFilter 8, "X" 'on filtre les lignes de la plage qui ont en X en colonne 8 (=colonne H)
Application.EnableEvents = True 'on réarme la gestion des événements
End If
End Sub

Merci.

Ça m'a l'air absolument parfait.

Je devrais pouvoir adapter à mon fichier.

Bonne soirée

Rechercher des sujets similaires à "commentaires code vba"