Erreur macro avec filtre par date

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:

mth

XLDnaute Barbatruc
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
 

martial58

XLDnaute Junior
Re : Erreur macro avec filtre par date

J'ai modifié la balise de code.

Je vais essayer de placer un bout de mon fichier.

Merci.
 

Pièces jointes

  • Copie de Enregistrement défauts ligne.xls
    158.5 KB · Affichages: 48
Dernière édition:

flyonets44

XLDnaute Occasionnel
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
 

mth

XLDnaute Barbatruc
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 .... :rolleyes:

@ +

mth
 

mth

XLDnaute Barbatruc
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
 

martial58

XLDnaute Junior
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.
 

mth

XLDnaute Barbatruc
Re : Erreur macro avec filtre par date

Bonsoir martial,

Ton fichier en retour avec une validation de données en U10 et U11, et une remise à blanc de U11 si l'on modifie U10.
Vois si cela peut t'aider.

Bonne soirée :)

mth
 

Pièces jointes

  • Copie%20de%20Enregistrement%20défauts%20ligne(1).xls
    162 KB · Affichages: 89

mth

XLDnaute Barbatruc
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
 

Statistiques des forums

Discussions
312 228
Messages
2 086 421
Membres
103 205
dernier inscrit
zch