Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

filtre sur une date par VBA ne fonctionne pas

9 réponses
Avatar
G.W.
Bonjour à tous
La macro ci dessous me permet de filtrer une colonne ( format date "
jj-mmm") pour un mois donné
Le probème est qu'elle ne fonctionne pas ( la liste filtrée est vide )
Pourtant si je clique sur la flèche bleue de filtrage de la colonne et que
je choisis format personnalisé, les valeurs inscrites sont bonnes
et si je clique sur OK dans cette boite de dialogue ( sans rien changer ) le
filtre est appliqué correctement
si une bonne âme pouvait m'expliquer ??? merci
Guy.W

Sub choix_mois()
mo = InputBox("Pour quel mois ?", "Choix du mois")
mo1 = Format("01-" & mo & "-2004", "dd-mmm")
mo2 = Format("01-" & CStr(Val(mo) + 1) & "-2004", "dd-mmm")
Selection.AutoFilter Field:=1, Criteria1:=">=" & mo1, Operator:=xlAnd, _
Criteria2:="<" & mo2
End Sub

9 réponses

Avatar
LeSteph
Bonsoir,
Une question qui pourrait devenir une piste:
les dates dans la feuille sont elles forcément au format "jj-mm-aaaa" ?

"G.W." a écrit dans le message de
news:cee2ft$5di$
Bonjour à tous
La macro ci dessous me permet de filtrer une colonne ( format date "
jj-mmm") pour un mois donné
Le probème est qu'elle ne fonctionne pas ( la liste filtrée est vide )
Pourtant si je clique sur la flèche bleue de filtrage de la colonne et que
je choisis format personnalisé, les valeurs inscrites sont bonnes
et si je clique sur OK dans cette boite de dialogue ( sans rien changer )
le

filtre est appliqué correctement
si une bonne âme pouvait m'expliquer ??? merci
Guy.W

Sub choix_mois()
mo = InputBox("Pour quel mois ?", "Choix du mois")
mo1 = Format("01-" & mo & "-2004", "dd-mmm")
mo2 = Format("01-" & CStr(Val(mo) + 1) & "-2004", "dd-mmm")
Selection.AutoFilter Field:=1, Criteria1:=">=" & mo1, Operator:=xlAnd,
_

Criteria2:="<" & mo2
End Sub




Avatar
Daniel.M
Salut Guy,

si une bonne âme pouvait m'expliquer ??? merci
Guy.W


Tu fais des comparaisons de String.
Utilise des nombres et tout va baigner dans l'huile, peu importe ton format de
dates.

Exemple:
Sub choix_mois()
mo = InputBox("Pour quel mois ?", "Choix du mois")
mo1 = DateSerial(2004, mo, 1)
mo2 = DateSerial(2004, mo + 1, 1)
Selection.AutoFilter Field:=1, Criteria1:=">=" & mo1, Operator:=xlAnd, _
Criteria2:="<" & mo2
End Sub

Salutations,

Daniel M.

Avatar
Daniel.M
Il vaut mieux déclarer explicitement les mo1 et mo2 au début de la Sub()

Dim mo1 As Long, mo2 As Long

Salutations,

Daniel M.
Avatar
AV
Ave Daniel,

Il vaut mieux déclarer explicitement les mo1 et mo2 au début de la Sub()


Ou bien
Selection.AutoFilter Field:=1, Criteria1:=">=" & mo1 * 1 _
, Operator:=xlAnd, Criteria2:="<" & mo2 * 1

AV

Avatar
michdenis
Bonjour Daniel,

Dans une version française d'excel, cette ligne de code ne fonctionne pas :

Selection.AutoFilter Field:=1, Criteria1:=">=" & mo1, Operator:=xlAnd, _
Criteria2:="<" & mo2

Il faut la transformer comme ceci :

Selection.AutoFilter Field:=1, Criteria1:=">=" & mo1 * 1, Operator:=xlAnd, _
Criteria2:="<" & mo2 * 1


Ou comme ceci :
'------------------------------
Sub choix_mois()

Dim Mo1 As Long
Dim Mo2 As Long

mo = InputBox("Pour quel mois ?", "Choix du mois")
Mo1 = DateSerial(2004, mo, 1)
Mo2 = DateSerial(2004, mo + 1, 1)
Selection.AutoFilter Field:=1, Criteria1:=">=" & Mo1, Operator:=xlAnd, _
Criteria2:="<" & Mo2

End Sub
'------------------------------

Ce n'est pas bien grave !!! ;-))


Salutations!









"Daniel.M" a écrit dans le message de news:
Salut Guy,

si une bonne âme pouvait m'expliquer ??? merci
Guy.W


Tu fais des comparaisons de String.
Utilise des nombres et tout va baigner dans l'huile, peu importe ton format de
dates.

Exemple:
Sub choix_mois()
mo = InputBox("Pour quel mois ?", "Choix du mois")
mo1 = DateSerial(2004, mo, 1)
mo2 = DateSerial(2004, mo + 1, 1)
Selection.AutoFilter Field:=1, Criteria1:=">=" & mo1, Operator:=xlAnd, _
Criteria2:="<" & mo2
End Sub

Salutations,

Daniel M.

Avatar
AV
** > Il faut la transformer comme ceci :
Selection.AutoFilter Field:=1, Criteria1:=">=" & mo1 * 1, ....


** Ou comme ceci :
Dim Mo1 As Long


Hé ! Denis ! T'es bien sur que tu as lu au-dessus ?
;-))
AV

Avatar
michdenis
Bonjour AV,

T'es bien sur que tu as lu au-dessus ? NON !

Mais toi, as-tu vu où il avait signé son message ?

;-)))


Salutations!



"AV" a écrit dans le message de news:%
** > Il faut la transformer comme ceci :
Selection.AutoFilter Field:=1, Criteria1:=">=" & mo1 * 1, ....


** Ou comme ceci :
Dim Mo1 As Long


Hé ! Denis ! T'es bien sur que tu as lu au-dessus ?
;-))
AV

Avatar
AV
Bonjour AV,
T'es bien sur que tu as lu au-dessus ? NON !
Mais toi, as-tu vu où il avait signé son message ?


Beu ... je comprends pas ta réponse....
Surement la chaleur ;-)
Je voulais simplement dire que tes 2 propositions (pour éviter bug sur filtrage
dates) étaient déjà écrites au-dessus, dans le fil ...

AV

Avatar
michdenis
Surement la chaleur ;-)

AV


Surtout l'humidité !

;-)


Salutations!