Erreur macro avec filtre par date

  • Initiateur de la discussion Initiateur de la discussion martial58
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

martial58

XLDnaute Junior
Bonjour à tous.

J'essais depuis un moment de faire fonctionner cette macro sans succès.
Pouvez-vous m'aider à trouver mon erreur ?

Merci.


Code:
Sub Annufiltres()
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Sheets
If sh.FilterMode = True Then sh.ShowAllData
Next
End Sub


Sub Tridate()

Dim onglet As String
Dim datedebut As Date
Dim datefin As Date

If Range("U10") = "" Then
MsgBox "Entrer Une Date De Début"
Else
If Range("U11") = "" Then
MsgBox "Entrer Une Date De Fin"
 
Else

If IsDate(Range("U10").Value) = False Or _
IsDate(Range("U11").Value) = False Then
MsgBox "Le format n'est pas une date !"
Exit Sub
End If

datedebut = Worksheets("Graphi").Range("U10").Value
datefin = Worksheets("Graphi").Range("U11").Value
onglet = Worksheets("Graphi").Range("J2").Value

Sheets(onglet).Range("A1").Select

Selection.AutoFilter Field:=1, Criteria1:=">" & datedebut, _
Operator:=xlAnd, Criteria2:="<" & datefin
        
End If
End If

End Sub
 
Dernière édition:
Re : Erreur macro avec filtre par date

Bonjour,

Ce n'est pas que je n'aime pas le rose, mais pour écrire ton code dans un message, utilise les balises de codes (le signe # au dessus de la fenêtre), pour le reste, ça serait plus facile pour tester avec un extrait de quelques lignes de ton fichier (sans données confidentielles)

Bon après-midi,

mth
 
Re : Erreur macro avec filtre par date

Bonjour
ci joint du code et des renseignements glanés sur le net il y a quelques temps déjà .
Le filtrage de dates par Vba peut entraîner qques fortes prises de tête !
On est tributaire du format de la plage à filtrer, des formats de dates
définis dans les paramètres régionaux, de l'expression des formats en anglais
et..... de qques autres vicissitudes.
Filtrer en utilisant, non pas les dates formatées, mais les numéros
de série,pas de problème de langue et/ou de formats !
Avec le même exemple de tableau et les même critères de filtre.
Les formats de dates (quels qu'ils soient) de la plage "lesDates"
doivent être uniformes sinon la remise au format d'origine ne se
fera pas
Sub zz_Filtre_Dates()
Application.ScreenUpdating = False
With [lesDates]
mémo = .NumberFormat
.NumberFormat = "General"
crit1 = DateSerial(2002, 12, 24) * 1
crit2 = DateSerial(2002, 12, 31) * 1
[C:C].AutoFilter Field:=1, Criteria1:="=" & crit1, Operator:=xlOr,
Criteria2:="=" & crit2
End With
'pour remettre au bon format en gardant la plage filtrée
For Each c In [lesDates]
c.NumberFormat ="General"
Next
End Sub
Bon courage
flyonets
 
Re : Erreur macro avec filtre par date

re 🙂

Merci martial pour les balises et le fichier, pas le temps de regarder tout de suite, mais les réponses viendront vite (la preuve 🙂 )

Tant qu'on y est flyonets44, si tu pouvais prendre exemple sur martial pour les balises de code .... 🙄

@ +

mth
 
Re : Erreur macro avec filtre par date

re bonsoir tout le monde 🙂

Une petite tentative avec ce code:
Code:
Sub Tridate()
Dim onglet As String
Dim datedebut As Date, datefin As Date
With Sheets("Graphi")
    datedebut = .Range("U10")
    datefin = .Range("U11")
    onglet = .Range("J2")
    
    If .Range("U10") = "" Then
        MsgBox "Entrer Une Date De Début"
    Else
        If .Range("U11") = "" Then
            MsgBox "Entrer Une Date De Fin"
        Else
            If IsDate(datedebut) = False Or IsDate(datefin) = False Then
                MsgBox "Le format n'est pas une date !"
            Exit Sub
            End If
        End If
    End If
    
    With Sheets(onglet)
        .Range("A1").AutoFilter Field:=4, Criteria1:=">" & datedebut, _
            Operator:=xlAnd, Criteria2:="<" & datefin
    End With
End With
End Sub

Un idée en passant, mettre une validation de données dans la cellule U11 de l'onglet graphique pour qu'elle soit >= à U10, et pourquoi pas un évènement sur la U10 qui efface U11 dès qu'il y a modification (bon, c'est pour fignoler 🙂 )

Bonne soirée à tous 🙂

mth
 
Re : Erreur macro avec filtre par date

Merci pour les idées d'amélioration et pour le code !!!

Par contre, le tri ne fonctionne pas.

Si je ne rempli pas la cellule au format date, j'ai également un message "Incompatibilité de type".

Merci pour votre aide.
 
Re : Erreur macro avec filtre par date

Bonjour,

Il n'y a pas de tri dans cette maco, le problème à régler concernait le filtre pour le graphique.
Si tu veux trier ta base, voici un code:
Code:
Sub tribase()
Dim lig As Long
With Sheets("X1")
lig = .Cells(Rows.Count, 1).End(xlUp).Row
    .AutoFilter.Sort.SortFields.Clear
    .AutoFilter.Sort.SortFields.Add Key:=Range( _
        "D2:D" & lig), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With .AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End With
End Sub

Ceci dit, c'est un code qui fonctionne sur Excel 2007, et je ne suis pas sûre du tout qu'il soit compatible avec Excel 2003.
Si tel est le cas refais un petit up pour qu'un forumer équipé de 2003 puisse te venir en aide.

Bonne journée,

mth
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
203
Réponses
7
Affichages
218
  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
169
Réponses
4
Affichages
202
Réponses
2
Affichages
160
Réponses
5
Affichages
272
Réponses
10
Affichages
292
Retour