mon filtre automatique ne marche pas avec les dates

mon filtre automatique ne marche pas avec les dates - VB/VBA/VBS - Programmation

Marsh Posté le 30-06-2005 à 15:49:21    

voici un code qui me permet à l'aide d'une boite de dialogue d'effectuer ce que fait un filtre automatique:
if combobox1.value="tous" then
range("A1" ).autofilter field=1
else
range("A1" ).autofilter field=1,criteria:=combobox1.value
end if
 
malheureusement si la colonne comprend des dates ma macro n'arrive pas a les filtrer alors que ça marche lorsqu'il s'agit de texte.
je pense avoir un pb de format de date mais je ne sais pas trop.
merci d'avance.

Reply

Marsh Posté le 30-06-2005 à 15:49:21   

Reply

Marsh Posté le 01-07-2005 à 00:11:00    

Essais de mettre un espion sur la combobox1.value, histoire de voir comment est stocké la valeur date.
 
Si c'est stocké sous format texte genre "01/01/20005", tu doit pouvoir le convertir et mettre ton filtre sur  
=datevalue(combobox1.value)
 
Si c'est sous la forme '38353' (pour le 01/01/2005), ou un truc comme ca, tu mets le filtre sur  
=cdate(combobox1.value)
 
Sinon, il reste la possibilité de stocker cette valeur dans une cellule non utilisée et de filtrer sur cette cellule...  
Pas très propre, mais bon!


Message édité par Gusdabo le 01-07-2005 à 01:03:59
Reply

Marsh Posté le 01-07-2005 à 10:49:50    

bonjour
effectivement mes dates se mettent sous la forme 38353 mais ta solution ne marche pas
je n'arrive pas à m'en sortir
merci pour ton aide

Reply

Marsh Posté le 01-07-2005 à 11:57:36    

et le coup de mettre dans une cellule sur ta feuille de calcul ne marche pas non plus??

Reply

Marsh Posté le 01-07-2005 à 13:47:53    

c'est à dire
je ne comprend pas

Reply

Marsh Posté le 01-07-2005 à 18:41:28    

Si tu prend une cellule non utilisée de ton tableau et tu colle la valeur de ta combo box dedans.
 
genre, si Z1 est vide
range("z1" ).value= combobox1.value
range("A1" ).autofilter field=1,criteria:=range("z1" )
Let range("z1" ).value=""
 
 
Mais quand même, t'es sûr que:
range("A1" ).autofilter field=1,criteria:=cdate(combobox1.value )
ne marche pas??
 
Peut être avec une variable intermédiaire?
 
let varint = combobox1.value  
range("A1" ).autofilter field=1,criteria:=cdate(varint)


Message édité par Gusdabo le 01-07-2005 à 18:44:07
Reply

Marsh Posté le 06-07-2005 à 11:54:09    

non malheureusement je suis dans l'impasse
je cherche mais je ne trouve pas
le filtre auto semble avoir du mal avec les date lorsqu'on passe par une combobox
je cherche mais rien y fait
merci de ton aide
si t'as une autre info je suis preneur

Reply

Marsh Posté le 06-07-2005 à 11:56:46    

davidan a écrit :


si t'as une autre info je suis preneur


 
Tu veux pas m'envoyer ton fichier que je regarde de + près?...

Reply

Marsh Posté le 06-07-2005 à 12:14:59    

il suffit de reprendre mon code au dessus en l'associant  à une combobox
tu verra si tu met du texte dans la colonne à filtrer ça marche mais si tu met des dates il ne trouve rien
alors que si j'utilise le filtre auto directement sans passer par la combobox ça marche
c'est vraiment bizarre
j'ai cherché dans d'autre forum et apparement c'est un pb qui revient souvent:
le filtrage auto de date en passant par une combobox pose des pb( en général cela filtre toutes les lignes sans en selectionner: c'est exactement ce qui m'arrive, il ne semble pas reconnaitre les dates)
il faut que je trouve car ainsi j'aurai bouclé mon projet.
merci pour ton aide précieuse

Reply

Marsh Posté le 06-07-2005 à 13:00:58    

bah oui, j'aurais juste préféré ne pas voir à refaire tout le bignou, la combo box et tout...
 

Reply

Marsh Posté le 06-07-2005 à 13:00:58   

Reply

Marsh Posté le 06-07-2005 à 13:04:41    

Tu veux qu'il y ait quelle valeurs, dans la combobox?
L'utilisateur rentre tout seul?
C'est la liste des valeur de la colonne??

Reply

Marsh Posté le 06-07-2005 à 13:59:47    

C'est moche mais ca marche...
 
If ComboBox1.Value = "tous" Then
    Range("A1" ).AutoFilter Field = 1
Else
    Selection.AutoFilter Field:=1
    Columns("A:A" ).NumberFormat = "0"
    Range("b1" ) = CDate(ComboBox1.Value)
    Range("b1" ).NumberFormat = "0"
    Range("A1" ).AutoFilter Field:=1, Criteria1:=Range("b1" )
    Range("b1" ) = ""
End If
Columns("A:A" ).NumberFormat = "dd/mm/yy"
 
l'idée c'est de mettre les dates de la colonne A au format chiffre.
Ensuite tu prends la valeur de ta combo.box, tu la converti en date, et tu colle cela dans une cellule vierge (ici B2)
Tu met b2 au format chiffre et tu appliques ton filtre sur la valeur de B2 avant de repasser la cellule sélectionnée en A au fromat date.
 
Le problème c'est que les autres valeurs dans la colonne A restent au format nombre, donc il faut que tu mettes un  
Columns("A:A" ).NumberFormat = "dd/mm/yy"
dans le cas ou tu fais un filtre sur une autre colomne.
 
Je sais pas si je suis clair?
 
 
 
 

Reply

Marsh Posté le 06-07-2005 à 15:55:12    

oui c'est la liste des valeur de la colonne

Reply

Marsh Posté le 06-07-2005 à 17:27:00    

comment tu récupères liste de valeur??
 
Le seul problème, c'est ces histoires de format, mais à mon sens ca doit être simple à régler.
Pour récupérer les dates sans le format (ie forme 38558...), on peut utiliser value2.
 
Franchement, si tu m'envoies ton fichier, c'est réglé en 10min, alors que là je galère un peu... Si c'est un problème de confidentialité, essaie de virer les infos non essentielles à ce problème précis, pour que je puisse faire qq chose...
 
Tu vois...


Message édité par Gusdabo le 06-07-2005 à 17:37:56
Reply

Marsh Posté le 08-07-2005 à 10:48:37    

merci grace à toi j'ai fini par y arriver!!
merci pour ton aide
j'ai encore un dernier pb avec cette combobox
je te rappelle mon code
Private sub bouton_OK_click()
if Combobox1.value="tous" then
range("g12" )Autofilter field:=7
else
range("G12" ).autofilter fied:=7,criteria1:=combobox1.value
end if
(la combobox contient la liste "G12:G65536" )
comment je peux retirer simplement les doublons dans ma combobox sans les enlever dans mon tableau
j'ai trouver des trucs mais c'est trop compliquer,je n'arrive pas à les adapter à mon cas.
merci encore

Reply

Marsh Posté le 03-08-2006 à 18:20:16    

J'ai le même souci ... Quand j'essaye de filtrer avec une date ma liste excel en utilisant une date comme critère de tri.
 
Ca marche avec certaine MAIS pas avec d'autres dates.
 
Exemple du 13/07/2006 au 31/07/2006 CA FILTRE
MAIS du 12/07/2006 au 31/07/2006 : IL REMPLACE le 12/07/2006 par un nombre dans le filtre

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed