Incomprehension Autofilter VBA

Résolu
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 - 28 oct. 2009 à 11:02
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 - 28 oct. 2009 à 14:39
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

Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 1
28 oct. 2009 à 14:39
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 ?
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 oct. 2009 à 11:47
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)
0
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 1
28 oct. 2009 à 12:11
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
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
28 oct. 2009 à 13:32
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+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 1
28 oct. 2009 à 14:14
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 !!!
0
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 1
28 oct. 2009 à 14:23
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)
0
Rejoignez-nous