Incomprehension Autofilter VBA [Résolu]

Signaler
Messages postés
83
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
19 février 2012
-
Messages postés
83
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
19 février 2012
-
Bien le bonjour a vous,

J'ai une incomprehension total sur un autofilter

cond1 = "=" & date1
cond2 = "<=" & date2
Selection.AutoFilter Field:=1, Criteria1:=cond1, Operator:=xlOr, Criteria2:=cond2
   
Selection.AutoFilter Field:=1, Criteria1:="=27/10/2009", Operator:=xlOr, _
        Criteria2:="<=11/05/2009"


Le premier autofilter est celui que j'ai fait
Le second celui generer par l'enregistreur de macro

Problème : Dans mon autofilter seule la première condition est pris en compte alors que cond1 et 2 me renvoie la meme chose que dans celui générer

Une explication serait la bienvenue ?

Merci d'avance

6 réponses

Messages postés
83
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
19 février 2012
1
Solution adoptée :
cond1= Format(date1, "MM/dd/yyyy")

Parfois on a l'erreur sous les yeux depuis le debut mais on ne s'en rend pas compte

En tout cas merci a vous !!

Enfin je donne un sujet de reflexion :
Mon premier critére est 27/10/2009, le second est 05/11/2009.
On a pu voir que l'autoform utilise le format de date anglais (05/11/2009 transformé en 11/05/2009)

Pourquoi ne transforme t'il pas aussi le 27/10/2009 en 10/27/2009 ?
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Salut
Que sont date1 et date2 ? quel type ? quel format ?
A mon avis, c'est là que se trouve le secret

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
83
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
19 février 2012
1
Les 2 date sont de type Date
J'ai tester en les castant aux format string (CStr) mais cela ne change rien

Lorsque je regarde les valeur des variables je ne voie aucune difference avec les conditions généré par la macro
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

ouai ben a mon avis il y a un nom dit d'excel car même la methode enregisté d'excel ne devrait pas fonctioner !
Et oui il ne faut pas oublier qu' une date dans une cellule est une valeur de date excel au format date

En clair c'est un nombre calculé soit depuis 1900 soit depuis 1904. Donc la date "11/05/2009" pour excel est egale à 39944.

Donc dans ton cas il ne faut pas rechercher une date au format date mais une date au format excel.
le probleme c'est qu'il n'existe pas de fonction de conversion dans le VBA. Pour t'en convaincre pour commencer tu peux faire comme ceci:

pose tes dates dans 2 cellules par exemple A1 et A2
cond1 = Range("A1").Value2 'ici value2 recupere la valeur excel et pas ce que l'on voi
cond2 = Range("A2").Value2
Selection.AutoFilter Field:=1, Criteria1:="=" & cond1, Operator:=xlOr, Criteria2:="<=" & cond2

A+
Messages postés
83
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
19 février 2012
1
Date1 et date2 sont affecté par cells().value
Je viens de tester en les remplacant par value2 pas de changement.
Autre test effectué : je me suis dit que si le type date posé probléme autant le mettre en variant, pas de changement non plus.
De plus lorsque j'affecte avec Value2, la valeur contenu dans la variable est la meme que celle de value

Mode incomprehension ON !!!
Messages postés
83
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
19 février 2012
1
Bien début de reponse:
Lorsque je regarde la valeur contenu dans date2 je voie 05/11/2009, or lorsque je regarde manuellement le 2eme critère du filtre automatique ma seconde date est devenu
11/05/2009 (format anglais il me semble)