au secours je craque (combobox autofilter date)

ledzepfred

XLDnaute Impliqué
Bonjour à tous,:D

voila deux jours que je me casse les dents sur le fichier ci-joint :

je vous explique : j'ai un combobox nommé Periode dans la feuille excel (et non dans un userform) contenant des dates au format (mmm-yy).
Je souhaite filtrer sur les dates de la colonne B en utilisant le code ci-dessous

Private Sub Periode_Change()
On Error Resume Next
Periode.Value = Format(Periode, "mmm-yy")
crit = Left(Format(Periode, "mm-yyyy"), 2) & "/2008"
If Periode <> "" Then [B5].AutoFilter Field:=2, Criteria1:="=*" & crit,Operator:=xlAnd
If Periode = "" Then [B5].AutoFilter Field:=2
Periode.Value = Format(Periode, "mmm-yy") 'force l'affichage de la valeur sous le format mmm-yy
end sub

Eh ben ça fonctionne pas pourtant quand je vais dans filtre personnalisé, il est écrit exactement ce que je souhaite pour que ça marche!!!!!

J'ai tout essayé : déclarer CRIT as long, Cdate... etc..., j'ai épluché des tonnes et des tonnes de pages de forum pour trouver la solution mais rien
ça ne marche pas!!!!!:confused:

Alors si enfin une ame charitable arrive à trouver une solution , je suis sur que ça aidera plein de pov p'tit développeur amateur
Merci d'avance
 

Pièces jointes

  • suivi budget.zip
    26.8 KB · Affichages: 54
  • suivi budget.zip
    26.8 KB · Affichages: 53
  • suivi budget.zip
    26.8 KB · Affichages: 55

kjin

XLDnaute Barbatruc
Re : au secours je craque (combobox autofilter date)

Bonsoir,
Essaie peut-être comme ceci :
Private Sub Periode_Change()
On Error Resume Next
Periode.Value = Format(Periode, "mmm-yy")
If Periode <> "" Then [B5].AutoFilter field:=2, Criteria1:=">=" & Month(Periode) _
& "/01/2008", Operator:=xlAnd, Criteria2:="<=" & Month(Periode) & "/30/2008"
If Periode = "" Then [B5].AutoFilter field:=2
Periode.Value = Format(Periode, "mmm-yy")
End Sub
A+
kjin
 

ledzepfred

XLDnaute Impliqué
Re : au secours je craque (combobox autofilter date)

merci kjin pour ta réponse,

ton code m'a bien aidé pour trouver la solution. Tu étais sur la bonne piste mais cela ne fonctionne que pour les mois à 31 jours et ne récupère pas les lignes éventuelles correspondant au 31 du mois.:p
J'ai tout d'abord ajouté des conditions pour les autres mois mais février et décembre posait encore problème (à cause de l'année bisextile et du changement d'année) et comme j'avais pas envie d'avoir 4 pages de if (j'exagères:confused::confused:) je me suis dit plutôt que de filtrer entre le 01(>=) et le 30 (<=) du même mois, essayons entre le 01(>=) du mois saisi et le 01(<) du mois+1 sauf pour décembre bien entendu:rolleyes:;). Au final le code ci-dessous fonctionne à merveille!!
Autre chose : la première ligne 'Periode.Value = Format(Periode, "mmm-yy")
est superflue
Sans toi je n'y serai pas arriver, un grand merci à toi!!!!:D

Private Sub Periode_Change()
On Error Resume Next
'Periode.Value = Format(Periode, "mmm-yy")
MOIS1 = Month(Periode)
MOIS2 = Month(Periode) + 1
If MOIS1 <= 11 Then [B5].AutoFilter Field:=2, Criteria1:=">=" & MOIS1 & "/01/2008", Operator:=xlAnd, Criteria2:="<" & MOIS2 & "/01/2008"
If MOIS1 = 12 Then [B5].AutoFilter Field:=2, Criteria1:=">=" & MOIS1 & "/01/2008", Operator:=xlAnd, Criteria2:="<=" & MOIS1 & "/31/2008"
If MOIS1 = "" Then [B5].AutoFilter Field:=2
Periode.Value = Format(Periode, "mmm-yy")
End Sub
 

kjin

XLDnaute Barbatruc
Re : au secours je craque (combobox autofilter date)

Bonjour,
Je n'étais pas allé plus loin, en attendant une solution qui me satisfasse vraiment !
Private Sub Periode_Change()
On Error Resume Next
Periode = Format(Periode, "mmm-yy")
DateCrit1 = "01/" & Periode
Crit1 = DateAdd("m", 0, DateCrit1)
Crit2 = DateAdd("m", 1, Crit1)
If Periode <> "" Then [B5].AutoFilter field:=2, Criteria1:=">=" & CDbl(Crit1), _
Operator:=xlAnd, Criteria2:="<" & CDbl(Crit2)
If Periode = "" Then [B5].AutoFilter field:=2
End Sub
C'est bien mieux
Par contre, il faut mettre la ligne...
Periode = Format(Periode, "mmm-yy")
...en début de code et non à la fin
A+
kjin
 

ledzepfred

XLDnaute Impliqué
Re : au secours je craque (combobox autofilter date)

Salut kjin,

ben personnellement je ne vois pas ce que tu reproches à ton code, il est plus concis que le mien et puis il marche parfaitement.
Mon côté perfectionniste est amplement satisfait par ta solution.
Merci encore à toi
A+
 

Statistiques des forums

Discussions
314 450
Messages
2 109 726
Membres
110 552
dernier inscrit
jasson