Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 à tous,
Salut Christian,

Mon cher Christian, nous sommes en 2011 et non en 2001...

A++
A+ à tous
 
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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…