Problème de filtre avec plusieurs critères VBA.
Fitz_Chev
-
Frenchie83 Messages postés 2254 Statut Membre -
Frenchie83 Messages postés 2254 Statut Membre -
Bonjour,
J'ai un soucis tout bête mais je m'arrache les cheveux dessus depuis le début de l'après midi donc je viens vous demander un peu d'aide, car malré mes recherches, je ne trouve pas de réponse à mon problème.
J'ai un tableau dans lequel je veux filtrer, en VBA, les date contenues dans la colonne qui sont entre deux dates données. Jusque là pas de soucis, j'ai résolu mon soucis de format de date en passant par un Cdate, à mettre en place mon filtre pour que ça prenne entre les deux date, MAIS j'ai aussi besoin des cases vides, et là, je bloque!
Voilà ma ligne qui est en débug et je ne comprends pas pourquoi:
Pour vous donner une idée, cette ligne s'intègre juste après ce bout de code (pas forcement très joli mais fonctionnel):
Merci pour votre aide, je suis quasi sur que mon soucis viens d'Operator mais n'étant pas trop doué sur VBA, je m'en remet à vous.
J'ai un soucis tout bête mais je m'arrache les cheveux dessus depuis le début de l'après midi donc je viens vous demander un peu d'aide, car malré mes recherches, je ne trouve pas de réponse à mon problème.
J'ai un tableau dans lequel je veux filtrer, en VBA, les date contenues dans la colonne qui sont entre deux dates données. Jusque là pas de soucis, j'ai résolu mon soucis de format de date en passant par un Cdate, à mettre en place mon filtre pour que ça prenne entre les deux date, MAIS j'ai aussi besoin des cases vides, et là, je bloque!
Voilà ma ligne qui est en débug et je ne comprends pas pourquoi:
ActiveSheet.Range("$A$3:$AN" & derlig).AutoFilter Field:=14, Criteria1:=">=" & startdate2, Operator:=xlAnd, Criteria2:="<=" & enddate2, Operator:=xlOr, Criteria3:="="
Pour vous donner une idée, cette ligne s'intègre juste après ce bout de code (pas forcement très joli mais fonctionnel):
derlig = Range("A65536").End(xlUp).Row
saisie_date:
Date_1 = InputBox(Chr(13) & Chr(10) & Chr(13) & Chr(10) & " Saisissez la date du DEBUT de periode de la prime conquête(format JJ/MM/AAAA)", "Saisie de la date", Format(Date, "dd/mm/yyyy"))
If Date_1 = "" Then
Exit Sub
End If
If Not IsDate(Date_1) Then
MsgBox "Format de date saisie incorrect !"
GoTo saisie_date
End If
If Date_1 <> Format(Date_1, "dd/mm/yyyy") Then
MsgBox "le format doit être jj/mm/aaaa !"
GoTo saisie_date
End If
Date_2 = InputBox(Chr(13) & Chr(10) & Chr(13) & Chr(10) & " Saisissez la date de la FIN de periode de la prime conquête(format JJ/MM/AAAA)", "Saisie de la date", Format(Date, "dd/mm/yyyy"))
If Date_2 = "" Then
Exit Sub
End If
If Not IsDate(Date_2) Then
MsgBox "Format de date saisie incorrect !"
GoTo saisie_date
End If
If Date_2 <> Format(Date_2, "dd/mm/yyyy") Then
MsgBox "le format doit être jj/mm/aaaa !"
GoTo saisie_date
End If
StartDate = CDate(Format(Date_1, "dd/mm/yyyy"))
EndDate = CDate(Format(Date_2, "dd/mm/yyyy"))
Dim startdate2 As Single
startdate2 = StartDate
Dim enddate2 As Single
enddate2 = EndDate
Merci pour votre aide, je suis quasi sur que mon soucis viens d'Operator mais n'étant pas trop doué sur VBA, je m'en remet à vous.
A voir également:
- Problème de filtre avec plusieurs critères VBA.
- Photo filtre 7 gratuit - Télécharger - Retouche d'image
- Filtre whatsapp - Accueil - Messagerie instantanée
- Filtre teams - Accueil - Visio
- Filtre manga - Accueil - TikTok
- Excel compter cellule couleur sans vba - Guide
2 réponses
Bonjour
Comme ceci peut-être:
Cdlt
Comme ceci peut-être:
Startdate = ">=" & Format(Date_1, "dd/mm/yyyy")
enddate = "<=" & Format(Date_2, "dd/mm/yyyy")
ActiveSheet.Range("$A$3:$AN" & derlig).AutoFilter Field:=1, Criteria1:=Startdate, Operator:=xlAnd, Criteria2:=enddate
Cdlt
Bonjour
Avec cette méthode ça fonctionne.
Avant d'appliquer le filtre, remplacez les cellules vides de la colonne à filtrer par une valeur quelconque (un signe particulier: %; $, etc..).
Attention au format de date (mm/dd/yyyy)
A tester
Cdlt
Avec cette méthode ça fonctionne.
Avant d'appliquer le filtre, remplacez les cellules vides de la colonne à filtrer par une valeur quelconque (un signe particulier: %; $, etc..).
Attention au format de date (mm/dd/yyyy)
Startdate = Format(Date_1, "mm/dd/yyyy")
Enddate = Format(Date_2, "mm/dd/yyyy")
ActiveSheet.Range("$A$3:$AN" & derlig).AutoFilter Field:=14, Criteria1:=Array( _
"$"), Operator:=xlFilterValues, Criteria2:=Array(2, Startdate, 2, Enddate)
A tester
Cdlt
ActiveSheet.Range("$A$3:$AN" & derlig).AutoFilter Field:=14, Criteria1:=">=" & startdate2, Operator:=xlAnd, Criteria2:="<=" & enddate2Je voudrais juste ajouter un troisième critère cellule vide