[Filtrage] Macro

Bonjour,

Je voudrai réaliser le filtrage d'un tableau part l'intermédiaire d'une cellule.

J'ai essayer mais sans succès. Je n'arrive pas à noter le bon code pour qu'il filtre en fonction de la valeur de la cellule voulue.

Dans l'exemple du fichier :

Sub Quotidien()

Dim dateChoisi As Long

Dim critére1 As String

dateChoisi = CDate(Sheets("KPI QUOTODIEN").Range("B4"))

Sheets("QUOTIDIEN SIPA 1").Range("$A$2:$M$367").AutoFilter _

Field:=1, Criteria1:="=" & dateChoisi Ne fonctionne pas

Field:=1, Criteria1:="7/01/2012" Fonctionne

End Sub

Avez-vous une idée?

Merci

Bonjour

A tester

Sub Quotidien()
Dim DateChoisi As Date

  DateChoisi = Sheets("KPI QUOTODIEN").Range("B4")

  Sheets("QUOTIDIEN SIPA 1").Range("A2:M367").AutoFilter Field:=1, Criteria1:=DateChoisi
End Sub

Merci de ta réponse mais malheureusement, il semblerait que ca ne fonctionne pas.

Bonjour

C'est sur que je ne fais pas de grands tests, mais j'essaie quand même si cela fonctionne

J'ai crée 2 pages, une date en B4 dans une page et j'ai essayé et le filtre passait bien

A force de tester (j'ai eu des essais infructueux) le programme a voulu me faire plaisir, je n'y crois pas

Ton fichier pour tester serait une aide

Il me semblait bien que ça avait aussi fonctionné une fois...

Je viens de retester encore une fois...

Quand je rentre une date : 12/02/2013 soit le 12 février 2013, il filtre sur le 2 décembre 2013...

Merci à toi

12test-forum.xlsm (50.06 Ko)

Il y a bien un problème autre que l'inversion de la date...

Le 1/03 ne fonctionne pas... C'est bizarre...

Bonjour

Oui c'est un problème de date

Tu as les dates au format Anglais, et le filtre filtre au format Français

Et je ne sais pas comment régler ce cas

Réécrire toutes les dates au format Français ?

Si quelqu'un à une idée qu'il la partage

Je vais essayé d'y réfléchir, sans garantie

oui mais QUID du 1/03? Ca devrait marcher puisque le 03/01 est une date correcte pour le filtre francais, non?

Bonjour

Une solution (qui vaut ce qui vaut) mais pas mieux

Sub TEST()
Dim F1 As Worksheet, F2 As Worksheet

  Set F1 = Sheets("Sheet1")
  Set F2 = Sheets("Sheet2")
  With F1
    If .FilterMode = True Then .ShowAllData
    .Range("M2") = "=A2=" & F2.Range("B5").Address(external:=True)
    .Range("A1:J366").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=.Range("M1:M2"), Unique:=False
    .Range("M2").ClearContents
  End With
End Sub

La macro se sert de M1:M2 pour fonctionner

Ca a l'air de fonctionner

Serais-tu m'expliquer un peu son fonctionnement pour que je puisse l'adapter?

Bonjour

C'est un filtre élaboré

Au départ vérification si la zone est déjà filtrée et dans ce cas j'annule le filtrage

If .FilterMode = True Then .ShowAllData

Dans la zone critère je marque comme formule :

=A2=Sheet2!$B$5

Cette formule renvoie VRAI ou FAUX

Ensuite je demande de filtrer en notant la zone à filtrée, la zone de critères, et c'est tout dans ce cas

.Range("A1:J366").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=.Range("M1:M2"), Unique:=False

Dès que le filtre est fait j'efface la zone de critère

.Range("M2").ClearContents

C'est tout

Merci...

Dans l'ensemble, je comprends la macro... Juste une précision avec M1:M2... Je ne vois pas à quoi il sert...

Merci bcp.

Bonjour

M1:M2 est la zone de critère du filtre élaboré

Elle peut-être placée où tu veux, dans ce cas j'ai choisi M1:M2

Il faut au minimum 2 cellules verticales

Une pour le titre de la colonne et une pour le critère

Comme dans ce cas je ne me sers pas du titre de la colonne, c'est pour cela que M1 est vide

Mais n'étant pas spécialiste des filtres je m'arrange des explications que je donne

Si personne ne me contredit je continue comme ça

Merci à toi!

Rechercher des sujets similaires à "filtrage macro"