'...veux bien expliquer ta macro par un commentaire ...'
Sur le plan de la méthode :
Après avoir dessiné un bouton (barre formulaire) comportant la lettre ou les lettres servant de critère de recherche, clic droit sur le bouton (sélection)--- clic gauche dans la barre de formules ---
Nommer le bouton sous la forme 'BoutonXXX'
XXX reprend la(les) lettre(s) cherchée(s)
PS : Pour nommer le bouton, on fait précéder la lettre de recherche par la chaîne 'Bouton' (toute autre chaîne ferait l'affaire) pour éviter une confusion avec les lettres de colonnes.
Pour affecter la macro au nouveaux boutons : clic droit -- affecter une macro...
Concernant les instructions de la macro :
Sub Filtre()
x = Application.Substitute(Application.Caller(1), 'Bouton', '')
On Error Resume Next
Range('B' & Application.Match(x & '*', [B:B], 0)).Select
End Sub
x= Application.Caller(1) permet de récupérer dans la variable x le nom du bouton
x = Application.Substitute(Application.Caller(1), 'Bouton', '') permet de récupérer dans la variable x le nom du bouton et de remplacer le préfixe 'Bouton' par rien pour ne conserver que la(les) lettre(s) pour la recherche.
On Error Resume Next permet d'ignorer l'erreur déclenchée par une recherche infructueuse
Range('B' & Application.Match(x & '*', [B:B], 0)).Select
La partie : Application.Match(x & '*', [B:B], 0))
renvoie la position (ligne) de la chaîne commençant par x dans la plage B:B
Cela correspond, dans une feuille de calcul, à la formulation suivante :
=EQUIV(x &'*';B:B;0)
L'instruction finale : Range('B' & Application.Match(x & '*', [B:B], 0)).Select
Utilise la concaténation ('B' & N° deligne trouvée) pour définir l'adresse de la cellule et la sélectionner.
AV
MVP (Excel)