Detecter le résultat d'un filtre vide

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

Bonjour,

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

Cdlt.

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

@ 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

Re,

Et comment les repère-t-on "les postes à pourvoir" ?

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

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).

Rechercher des sujets similaires à "detecter resultat filtre vide"