Detecter le résultat d'un filtre vide

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Y
Yuukia
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 11 avril 2016
Version d'Excel : 2010 EN

Message par Yuukia » 4 janvier 2019, 12:14

Bonjour,

je me heurte sur un petit problème de macro VBA.
Je dois filtrer mes valeurs sur la donnée "Poste pourvu ou nouvelle entrée" cependant, il est possible que selon des filtres selectionné plus haut celui ci n'existe pas.

Pour faire simple, s'il existe, je veux copier les données sur un autre onglet (ça je sais faire) s'il n'existe pas, je veux qu'il passe a la suite de la macro.

Je suis capable de lui dire de copier les valeurs, sauf que si le filtre est vide il ne comprend plus...

voici le code que j'ai actuellement :
'Filtrer
    Rows("3:3").Select
    Selection.AutoFilter

'Filtrer sur Poste pourvu ou nouvelle entrée
    Range("A3").Select
    ActiveSheet.Range(Selection, Selection.End(xlDown)).AutoFilter Field:=1, Criteria1:= _
        "Poste pourvu ou nouvelle entrée"
        
'Si filtrer donne rien

        
'Copier/coller les valeurs
    Range("B3").Select
    Nb_ligne = Range("B3").Row
    Range("C" & Nb_ligne + 1).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("IN").Activate
    Range("P12").Select
    Range(Selection, Selection.End(xlDown)).Select
    Nb_ligne = Range("P12").End(xlDown).Row
    Range("P" & Nb_ligne + 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("IN BIS").Activate
    Range("A3").Select
    Nb_ligne = Range("A3").Row
    Range("A" & Nb_ligne + 1).Select
    Nb_ligne = Range("A3").Row
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("IN").Activate
    Range("A12").Select
    Range(Selection, Selection.End(xlDown)).Select
    Nb_ligne = Range("B12").End(xlDown).Row
    Range("B" & Nb_ligne + 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A" & Nb_ligne + 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    End If
J'ai essayé diverse solution trouvée sur le net mais impossible de les faire marché avec ma macro.

Dernière solution en date :
Sub Macro1() ' Sheets("IN BIS").Select Range("A3").Select A = Selection.AutoFilter(Field:=1, Criteria1:="Poste pourvu ou nouvelle entrée") If Range("A65536").End(xlUp).Row = 3 Then 
End If 
End Sub 
Cependant lorsque je l'inclus dans ma macro il ne copie plus les lignes si elle existe...

Si quelqu'un peut m'aider svp ça serait super sympa

D'avance merci
macro filtre vide.xlsm
(68.6 Kio) Téléchargé 7 fois
Modifié en dernier par Yuukia le 4 janvier 2019, 15:24, modifié 1 fois.
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'432
Appréciations reçues : 674
Inscrit le : 27 août 2012
Version d'Excel : 365 Personnel

Message par Jean-Eric » 4 janvier 2019, 12:24

Bonjour,
Merci de joindre un fichier à ta demande, que l'on voit la structure de tes données.
Cdlt.
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
Avatar du membre
MaPoire
Membre fidèle
Membre fidèle
Messages : 216
Appréciations reçues : 11
Inscrit le : 17 septembre 2011
Version d'Excel : 2010

Message par MaPoire » 4 janvier 2019, 12:49

Bonjour à tous,

Essayez ce bout de code (on agit sur la feuille active):
Sub test()
' Filtrer sur Poste pourvu ou nouvelle entrée
    If AutoFilterMode Then Cells.AutoFilter
    Range(Range("A3"), Range("A3").End(xlDown)).AutoFilter Field:=1, Criteria1:= _
        "Poste pourvu ou nouvelle entrée"

' test et suite...
    NbrLignes = 0
    NbrLignes = ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1
    If NbrLignes = 0 Then
      'ici le code si aucune ligne
      MsgBox "Aucune ligne ne répond au critère du filtre"
    Else
      'ici le code si le filtre affiche une ligne ou plus
      MsgBox NbrLignes & " ligne(s) répond(ent) au critère du filtre"
    End If
End Sub
Y
Yuukia
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 11 avril 2016
Version d'Excel : 2010 EN

Message par Yuukia » 4 janvier 2019, 14:36

@ Jean Eric, je met un fichier que j'ai totalement anonymisé (donnée confidentiel oblige) j'essaie donc sur l'onglet IN BIS de filtrée sur les "poste à pourvoir" s'il y en a les copiers sur l'autre onglet, sinon continuer le reste de ma macro

@ Ma poire, la ligne suivante bug dès le départ... j'avoue ne pas comprendre pourquoi et comment la corriger
Range(Range("A3"), Range("A3").End(xlDown)).AutoFilter Field:=1, Criteria1:= _
        "Poste pourvu ou nouvelle entrée"


D'avance merci pour vos retours et votre réactivité à mon message
macro filtre vide.xlsm
(68.6 Kio) Téléchargé 10 fois
Avatar du membre
MaPoire
Membre fidèle
Membre fidèle
Messages : 216
Appréciations reçues : 11
Inscrit le : 17 septembre 2011
Version d'Excel : 2010

Message par MaPoire » 4 janvier 2019, 15:13

Re,

Et comment les repère-t-on "les postes à pourvoir" ?
Y
Yuukia
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 11 avril 2016
Version d'Excel : 2010 EN

Message par Yuukia » 4 janvier 2019, 15:22

il y a une colonne A dans l'onglet IN BIS qui precise soit :
- le numero de matricule
- le nom poste pourvu ou nouvelle entrée
- soit poste à pourvoir

Ici, je m'interesse au poste pourvu ou nouvelle entrée (My bad j'ai fait un lapsus dans le post précédent)
L'idée c'est que je veux ramener ces données si elles existe (ça ok) mais surtout ne pas avoir ma macro qui plante si il n'y a aucun poste pourvu ou nouvelle entrée
Avatar du membre
MaPoire
Membre fidèle
Membre fidèle
Messages : 216
Appréciations reçues : 11
Inscrit le : 17 septembre 2011
Version d'Excel : 2010

Message par MaPoire » 4 janvier 2019, 16:14

Re,

Un exemple de ce qu'on peut écrire :
- on filtre la feuille "IN BIS"
- on ajoute le résultat du filtre sur la feuille "Résultat" en fin de tableau

Le code est dans le module nommé "mod_Test". Le code est commenté (un petit peu).
Yuukia- Test Filtre- v1.xlsm
(46.53 Kio) Téléchargé 20 fois
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message