Macro pour filtrer une colonne selon le contenu d'une cellule

Fermé
Djoulay88100 Messages postés 1 Date d'inscription jeudi 5 décembre 2019 Statut Membre Dernière intervention 5 décembre 2019 - 5 déc. 2019 à 17:13
m@rina Messages postés 21292 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 24 janvier 2025 - 5 déc. 2019 à 19:09
Bonjour à tous,

Je viens vers vous, aujourd'hui, pour solliciter votre aide concernant une macro. Après multiples recherches sur les forums, je ne trouve toujours pas de réponse. Voilà mon problème : je souhaiterais, dans le cadre de mon travail, pouvoir établir le plan de charge des contrôles que je devrai effectuer l'année suivante.
J'ai constitué une matrice qui se met à jour à jour au fur et à mesure des contrôles, de façon automatique.
J'ai utilisé l'enregistreur de macro pour donner forme à ce que je recherche et j'obtiens :

Sub Prévi2()
ActiveSheet.Range("$A$3:$F$1001").AutoFilter Field:=5, Operator:= _
xlFilterValues, Criteria2:=Array(0, "12/30/2020")
End Sub


Jusqu'à là, cela fonctionne. Mais afin de ne pas "bidouiller" dans les macros quand viendra 2021 et, plus généralement, les années suivantes, je souhaiterais que la date "12/30/2020" soit remplacée par la valeur contenue dans une cellule. J'ai essayé ceci :

Sub Prévi1()
Dim d As Variant
d = Sheets("Matrice").Range("F2").Value
ActiveSheet.Range("$A$3:$F$1001").AutoFilter Field:=5, Operator:= _
xlFilterValues, Criteria2:=Array(0, d)
End Sub


Mais seulement voilà, cela ne fonctionne pas. Le code erreur est : Erreur d'exécution '1004': La méthode Autofilter de la classe Range a échoué.

Je suis loin de connaître toutes les subtilités de VBA et c'est pour ça que je vous demande de l'aide.

En vous remerciant par avance
A voir également:

1 réponse

m@rina Messages postés 21292 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 24 janvier 2025 11 382
5 déc. 2019 à 19:09
Bonsoir,

Moi j'utilise le Criteria1 et ça marche avec une date écrite au format français dans ta cellule (jj/mm/aaa) :

ActiveSheet.Range("$A$3:$F$1001").AutoFilter Field:=5, Criteria1:=Format(Date, d)

Je te conseille de donner u nom à ta plage de cellules.

m@rina
0