Macro filtre sur données, erreur si pas de donnée trouvée...

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 !

Christian0258

XLDnaute Accro
Bonsoir à tout le forum,

Je souhaiterais vos lumières sur une macro afin de filtrer des données.
Comment éviter un message d'erreur lorsque la macro ne trouve pas de données à filtrer...
voir fichier

Merci pour le temps que vous voudrez bien m'accorder.

Bien amicalement,
Christian
 

Pièces jointes

Dernière édition:
Re : Macro filtre sur données, erreur si pas de donnée trouvée...

Bonsoir Christian,

Il faut mettre une condition pour n'exécuter le code que si il y a des valeurs dans la colonne M. Comme ceci :
VB:
Sub FiltrePatiss()
    Range("_BDR").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("ZCpatiss" _
        ), CopyToRange:=Range("ZDpatiss"), Unique:=True
    Range("O3:O20").ClearContents
    Dim cel As Range, ref As Range
    If Range("M65536").End(xlUp).Row <> 2 Then
        For Each cel In Range("M3:M50").SpecialCells(xlCellTypeConstants, 2)
            Set ref = Range("O20").End(xlUp)(2)
            If Application.CountIf(Range("O3", ref), cel) = 0 Then ref = cel
        Next
        Range("O3", ref).Sort Key1:=Range("O3"), Order1:=xlAscending, Header:=xlNo
    End If
    Range("A3").Select
End Sub

A+
 
Re : Macro filtre sur données, erreur si pas de donnée trouvée...

Re, bonjour à tout le forum,

Fred0o, m'a adapté la macro ci-dessus, elle fonctionne parfaitement, mais après l'avoir placé en lieu et place dans mon fichier
ça ne fonctionne plus. Pourriez-vous me dire où j'ai cafouiller...Lol

J'ai remis, dans mon premier post, la version02.

Merci pour votre aide.
Bien à vous,
Christian
 
Re : Macro filtre sur données, erreur si pas de donnée trouvée...

Bonjour le fil,
Comme dit JC, si le critère de date est 15/04/2001, forcément...
Sinon, je ne comprends pas vraiment la reférence à la colonne Y
Code:
Sub FiltrePatissMidi()
Dim n&
Range("U6:Y5000").ClearContents
Range("_BDR").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("ZCpatiss"), CopyToRange:=Range("ZDpatiss"), Unique:=True
n = Application.CountA(Range("V:V")) - 1
If n = 0 Then Exit Sub
Range("U6:X" & n + 5).Sort Key1:=Range("W6"), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
A+
kjin
 

Pièces jointes

Re : Macro filtre sur données, erreur si pas de donnée trouvée...

Re, le forum,

Nous sommes en 2011 ?, à bon!!!, LOL

ok Jean-Claude, ça c'est tout moi.

Merci, Kjin, pour ton code. La colonne Y sert à lister les plats sans doublon et en ordre alphabétique.
Peux-tu me dire si tu peux le rajouter à ta macro ?

Merci à vous, pour votre aide si précieuse.
Bien à vous,
Christian
 
Re : Macro filtre sur données, erreur si pas de donnée trouvée...

Re, le forum, kjin,

En fait, en colonne W ce sont tous les plats qui correspondent aux critères qui sont récupéres par ta macro.
Mais il faut imaginer que selon la recherche la liste en colonne W peut être très importante avec donc un nombre de plats
répétés et très conséquents. C'est la raison pour laquelle je souhaite pouvoir lister en colonne Y ces plats sans doublon et par ordre alphabétique.

Merci, encore , kjin, pour ton aide et ta macro.
Bien à toi,
Christian
 
Re : Macro filtre sur données, erreur si pas de donnée trouvée...

Bonjour,
Comme ceci alors
Code:
Sub FiltrePatissMidi()
Dim n&, rng As Range, c As Range, d
Range("U6:Y5000").ClearContents
Range("_BDR").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("ZCpatiss"), CopyToRange:=Range("ZDpatiss"), Unique:=True
n = Application.CountA(Range("V:V")) - 1
If n = 0 Then Exit Sub
Set rng = Range("U6:X" & n + 5)
rng.Sort Key1:=Range("W6"), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Set d = CreateObject("Scripting.Dictionary")
For Each c In rng.Columns(3).Cells
    If Not d.Exists(c.Value) Then d.Add c.Value, c.Value
Next
Range("Y6").Resize(d.Count, 1) = Application.Transpose(d.items)
End Sub
A+
kjin
 
- 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

Retour