Excel VBA et macro pour filtre automatique

tindette -  
thev Messages postés 1986 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour et bonne année à tous,

J'ai un fichier que je souhaite filtrer selon une valeur contenue dans la cellule B9 de l'onglet Menu.
La formule Worksheets("Menu").Range("B9").Value me renvoie bien la valeur que je veux.
Worksheets("Menu").Range("B9").Value est bien du type String (j'ai vérifié avec VarType).
Mais le programme ci-dessous me renvoie l'erreur "objet requis" dès que j'ajoute la ligne du Set poste sans me préciser la ligne concernée, il se met sur la première (sub macro3()).
Pourquoi cette erreur? Comment y remédier?


Sub Macro3()
Dim poste As String
' test ci-dessous OK
MsgBox Worksheets("Menu").Range("B9").Value
Set poste = Worksheets("Menu").Range("B9").Value
MsgBox poste
Selection.AutoFilter Field:=5, Criteria1:="& poste &"
End Sub

Pouvez-vous m'aider?
Merci d'avance.
A voir également:

2 réponses

wilfried_42 Messages postés 907 Date d'inscription   Statut Contributeur Dernière intervention   245
 
Bonjour

à essayer :
Selection.AutoFilter Field:=5, Criteria1:= Sheets("Menu").range("B9").value 
1
thev Messages postés 1986 Date d'inscription   Statut Membre Dernière intervention   713
 
"Worksheets("Menu").Range("B9").Value" n'est pas un objet . L'objet est : "Worksheets("Menu").Range("B9")" , "value" est une propriété de cet objet. Donc 2 possibilités :

1- soit créer l'objet "poste" avec l'instruction : set poste = Worksheets("Menu").Range("B9")
Selection.AutoFilter Field:=5, Criteria1:=poste.value

2- soit créer une variable "poste" avec l'instruction poste = Worksheets("Menu").Range("B9") .value
Selection.AutoFilter Field:=5, Criteria1:=poste
1