Re : Calendrier Excel VBA (qui marche sur toutes les versions d'Excel)
re
je me suis tout de même intéressé à ton cas !
effectivement filtrer depuis vb avec des dates ça pose problème !
en fouillant sur le net j'ai trouvé la réponse !
c'est ceci qui ne fonctionne pas (même chez moi !)
ActiveSheet.Range("$A$1:$" & lettre & I).AutoFilter Field:=1, Criteria1:=">" & Filters.DTPDateDebut, Operator:=xlAnd, Criteria2:="<" & Filters.DTPDateFin
il faut le mofifier comme ceci pour inverser de vb à excel et là même chez moi c'est ok !
Format(DTPDateDebut, "mm/dd/yyyy") et idem pour fin !
Format(CalendrierDateDebutSELECT, "mm/dd/yyyy") < ce serait mieux !
car n'oublies pas CalendrierDateDebutSELECT c'est un format date
et DTPDateDebut n'est que du texte dans un label !
soit ceci à reprendre:
ActiveSheet.Range("$A$1:$" & lettre & I).AutoFilter Field:=1, Criteria1:=">" & Format(CalendrierDateDebutSELECT, "mm/dd/yyyy"), Operator:=xlAnd, Criteria2:="<" & Format(CalendrierDateFinSELECT, "mm/dd/yyyy")
mais tu peux garder ça si tu veux, ça fonctionne aussi comme ceci :
ActiveSheet.Range("$A$1:$" & lettre & I).AutoFilter Field:=1, Criteria1:=">" & Format(DTPDateDebut, "mm/dd/yyyy"), Operator:=xlAnd, Criteria2:="<" & Format(DTPDateFin, "mm/dd/yyyy")
c'est pareil lorsque l'on colle une date sur une cellule c'est du texte !
il faut rajouter Cdate() exemple Range("A1")= Cdate(MaDate)
et entre nous ton truc > & lettre & I
qui se baladent dans la nature c'est pas très catholique ! ça manque de clarté !
il faut fouiller pour voir d'où ça vient !? ce serait mieux de mettre ça en fonction !
une fonction nb_lignes() ainsi tu aurais I = nb_lignes ça c'est plus clair !
soit au lieu de Sub nb_lignes()
tu mets Function nb_lignes()
et dans le code au lieu de I remplacer par
nb_lignes = Sheets(1).Range("A1").End....
et faire idem avec nb_colonnes pour lettre
ensuite dans l'userf il est inutile de mettre tout le temps Filters.machun ou alors remplacer par Me.
car si tu changes ton userf de nom tu devras modifier tout ton code, alors qu'avec Me c'est inutile !
exemple Filters.DTPDateDebut
DTPDateDebut c'est suffisant ou alors Me.DTPDateDebut
EDIT: voir ci-joint avec toutes les modif ! et voir avec en entrées les dates de la base !