[Résolu] VBA Problème avec les filtres sur dates (variables)

Gecko62

XLDnaute Nouveau
Bonjour,

Impossible d'obtenir un filtre sur une plage de dates par VBA.
J'obtiens bien les données correctes dans la fenêtre de filtre lorsque je contrôle en manuel, mais le filtre ne fonctionne pas.
Un peu comme si la variable était passée en String et ne fonctionnait pas sur les dates.

Et pourtant lorsque je contrôle en Manuel, lors du clic sur le bouton OK les dates sont bien filtrées !!!

Les dates sont définies dans l'onglet DBases, les données doivent être filtrées sur l'onglet Donnees

Ci joint un fichier exemple contenant la macro ci-dessous

Code:
Sub FiltreDates()

Dim Lu2, Ve2 As String
Dim NoSemaine As Variant
Dim Lu, Ve As Variant

    NoSemaine = InputBox("Indique moi le numéro de semaine à imprimer ?", "N° de semaine")

    If NoSemaine = "" Then
        MsgBox "Vous avez oublié de saisir le N° de la semaine", vbOKOnly + vbInformation, "Informations"
        Exit Sub
    Else
        Lu = Application.VLookup(CInt(NoSemaine), Worksheets("DBases").Range("E4:G56"), 2, False)
        Ve = Application.VLookup(CInt(NoSemaine), Worksheets("DBases").Range("E4:G56"), 3, False)
        Worksheets("Donnees").Range("P1").Value = NoSemaine
        Worksheets("Donnees").Range("Q1").Value = Lu
        Worksheets("Donnees").Range("R1").Value = Ve
    
    ' Récupération des critères
        Lu2 = Worksheets("Donnees").Range("S1").Value
        Ve2 = Worksheets("Donnees").Range("T1").Value
    
    ' Filtrage des données
        Sheets("Donnees").Select
        Range("A1:J72").Select
        Selection.AutoFilter
        ActiveSheet.Range("$A$1:$j$72").AutoFilter Field:=10, Criteria1:= _
            Lu2, Operator:=xlAnd, Criteria2:=Ve2
    
    End If

End Sub

Merci de votre aide

Bien à vous

Gecko62
 

Pièces jointes

  • FiltrePlageDates.xlsm
    33.4 KB · Affichages: 53
  • FiltrePlageDates.xlsm
    33.4 KB · Affichages: 60
Dernière édition:

Gecko62

XLDnaute Nouveau
Re : VBA Problème avec les filtres sur dates (variables)

Bonjour,

Merci pour votre réponse, mais malheureusement elle ne produit aucune modifications sur le résultat attendu.

A savoir :
aucune ligne n'est apparente après l'application du filtre par macro
l'affichage du filtre et sa validation (sans y avoir modifié quoi que ce soit) de manière manuelle fait apparaître les lignes désirées !!

Bien cordialement

Gecko62
 

Gecko62

XLDnaute Nouveau
Re : VBA Problème avec les filtres sur dates (variables)

Bonjour,

Les variables Lu2 et Ve2 sont une concaténation des critères logiques "<=" ou ">=" et d'une date [=CONCATENER("<=";TEXTE(R1;"jj.MM.aaaa"))], dès lors il me semble logique qu'elles soient du type String

Le changement du type de variable en Long provoque un message d'erreur lors de l'attribution de la valeur

Merci néanmoins pour votre aide

Bien cordialement

Gecko62
 

Pierrot93

XLDnaute Barbatruc
Re : VBA Problème avec les filtres sur dates (variables)

Re,

essaye avec ceci :
Code:
    Dim Lu2 As Long, Ve2 As Long
    With Worksheets("Donnees")
        Lu2 = .Range("Q1").Value
        Ve2 = .Range("R1").Value
        .Range("$A$1:$j$72").AutoFilter Field:=10, Criteria1:=">=" & Lu2, _
            Operator:=xlAnd, Criteria2:="<=" & Ve2
    End With
 

Gecko62

XLDnaute Nouveau
Re : VBA Problème avec les filtres sur dates (variables)

Bonjour,

cette solution donne le même résultat que les précédentes ...

A savoir lignes non affichées par macro qui s'affichent dès le moment où l'on visualise le contenu du filtre et que l'on ferme la fenêtre !!

Bizarre, bizarre

Merci quand même

Gecko62
 

Gecko62

XLDnaute Nouveau
Re : VBA Problème avec les filtres sur dates (variables)

Surprenant,

voici les opérations que j'effectue et les résultats que j'obtiens (cf document Word joint)

Y a-t-il quelque chose à changer dans les paramètres Excel ?

Là je dois dire que je suis interpelé, je me permets de remettre également la dernière version du fichier Excel

Merci de votre peine

Bien cordialement
 

Pièces jointes

  • FiltrePlageDates.xlsm
    29 KB · Affichages: 44
  • Question FiltrePlageDate.docx
    161.3 KB · Affichages: 35
  • FiltrePlageDates.xlsm
    29 KB · Affichages: 46

gosselien

XLDnaute Barbatruc
Re : VBA Problème avec les filtres sur dates (variables)

Bonjour,

un essai avec ceci donne le bon résultat: (S1 et T1 en date pas en alphanumerique)

Lu2 = Worksheets("Donnees").Range("S1").Value * 1
Ve2 = Worksheets("Donnees").Range("T1").Value * 1
'
'
' Selection.AutoFilter ActiveSheet.Range("$A$1:$j$72").AutoFilter Field:=10, _
Criteria1:=">=" & Lu2, Operator:=xlAnd, Criteria2:="<=" & Ve2

P.
 

Gecko62

XLDnaute Nouveau
Re : VBA Problème avec les filtres sur dates (variables)

Bonjour à tous

Tout d'abord un grand merci pour votre aide

L'astuce de gosselien, multiplication par 1 [* 1] de la valeur assure un format numérique dans les critères.

Cette astuce ajoutée à la solution de Pierrot93 résout donc mon problème

La macro finale étant

Sub FiltreDates()

Dim Lu2, Ve2 As Long
Dim NoSemaine As Variant
Dim Lu, Ve As Variant

NoSemaine = InputBox("Indique moi le numéro de semaine à imprimer ?", "N° de semaine")

If NoSemaine = "" Then
MsgBox "Vous avez oublié de saisir le N° de la semaine", vbOKOnly + vbInformation, "Informations"
Exit Sub
Else
Lu = Application.VLookup(CInt(NoSemaine), Worksheets("DBases").Range("E4:G56"), 2, False)
Ve = Application.VLookup(CInt(NoSemaine), Worksheets("DBases").Range("E4:G56"), 3, False)
Worksheets("Donnees").Range("P1").Value = NoSemaine
Worksheets("Donnees").Range("Q1").Value = Lu
Worksheets("Donnees").Range("R1").Value = Ve

With Worksheets("Donnees")
Lu2 = .Range("Q1").Value * 1
Ve2 = .Range("R1").Value * 1
.Range("$A$1:$j$72").AutoFilter Field:=10, Criteria1:=">=" & Lu2, _
Operator:=xlAnd, Criteria2:="<=" & Ve2
End With

End If

End Sub

Une fois encore un grand merci

Bien cordialement

Gecko62
 

Pierrot93

XLDnaute Barbatruc
Re : [Résolu] VBA Problème avec les filtres sur dates (variables)

Re,

A noter tout de même, avec cette déclaration :

Code:
Dim Lu2, Ve2 As Long

seule la variable Ve2 sera typée "long", Lu2 sera typée "variant" en l'absence de type défini... tu peux le vérifier dans l'éditeur vba en affichant la fenêtre des variables locales....

bon après midi
@+
 

Statistiques des forums

Discussions
312 176
Messages
2 085 965
Membres
103 069
dernier inscrit
jujulop