Exit sub si cellule vide après un filtrage

Bonjour à tous.

J'ai un souci avec une macro suite à un filtrage de donnée.

Après avoir filtré mes données dans un tableau je veux quitter la macro si le filtre n'extrait aucune donnée.

Voici mon code :

image image

Le filtrage marche très bien cependant j'ai l'impression qu' Excel interprète que la cellule A2 n'est jamais vide même si suite au filtrage celle-ci apparait vide et par conséquent il continue la macro.

Est-ce que vous auriez une idée svp ?
En vous remerciant d'avance

Cordialement

Bonjour,

Un test en comptant le nombre de ligne affichées postfiltre.

If ActiveSheet.Range("Ta_Plage_Filtrage").SpecialCells(xlCellTypeVisible).Count = 1 Then 'Donc si il n'y a que ta ligne d'en tête
Exit Sub
End If

Il faut cependant renseigner ta plage plus finement, filtrer sur une colonne A:G n'est pas une bonne pratique. Je conseilles :

LR = ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row 'Défini la dernière ligne de ton classeur
ActiveSheet.Range("A1:G" & LR).AutoFilter Field:=3 Criteria1:=vTitreName
If ActiveSheet.Range("A1:G" & LR).SpecialCells(xlCellTypeVisible).Count = 1 Then
    Exit Sub
    Else
    'Ton action
End If

Cdlt,

Hello,

Merci, cependant j'ai essayé et cela ne fonctionne toujours pas je pense que je loupe quelque chose. J'ai essayé en nommant une plage de cellule mais aussi sans la nommer :

If vTitreName = "" Then     'si recherche uniquement selon trader
    Selection.AutoFilter
    ActiveSheet.Range("$A:$G").AutoFilter Field:=1, Criteria1:=vTraderName

    ElseIf vTraderName = "" Then    'si recherche uniquement selon titre
    Selection.AutoFilter
    ActiveSheet.Range("$A:$G").AutoFilter Field:=3, Criteria1:=vTitreName

    Else                        'si recherche avec les 2 critères
    Selection.AutoFilter
    ActiveSheet.Range("$A:$G").AutoFilter Field:=1, Criteria1:=vTraderName
    ActiveSheet.Range("$A:$G").AutoFilter Field:=3, Criteria1:=vTitreName

    End If

If ActiveSheet.Range("$A:$G").SpecialCells(xlCellTypeVisible).Count = 1 Then
    Sheets("Historique des ordres").Select
    ActiveSheet.ShowAllData
    Selection.AutoFilter
    Range("A1").Select
    MsgBox "Aucun résultat"
Exit Sub
Else
MsgBox "ERREUR"
 Sheets("Historique des ordres").Select
    ActiveSheet.ShowAllData
    Selection.AutoFilter
    Range("A1").Select
    Exit Sub
End If

Peu importe ce que je tente j'arrive toujours au Else avec la msgbox ERREUR. Est-ce qu'il faut absolument définir la dernière ligne du classeur ?

Merci

Cdt

Bonjour,

Désolé j'avais oublié quelques qualifications sur le comptage de cellules visibles, qui te sembleront surement plus simple à comprendre :

Sub FILTRE()
Dim LR%
LR = ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row 'Défini la dernière ligne de ton classeur
ActiveSheet.Range("A1:G" & LR).AutoFilter Field:=3, Criteria1:="D"
If ActiveSheet.Range("D1:D" & LR).SpecialCells(xlCellTypeVisible).Cells.Count - 1 = 0 Then
    MsgBox "AUCUNE LIGNE TROUVEE"
    'Exit Sub
    Else
    MsgBox "IL EXISTE DES DONNEES"
End If
ActiveSheet.ShowAllData
End Sub

Donc si tu remplaces D par E dans la 4ème ligne de ce code sur la base de mon fichier, il ne te trouve aucune donnée et te renvoie le message box.

Cdlt,

17classeur1.xlsm (14.83 Ko)

Super ça marche nickel !

Merci beaucoup !

Bonne soirée :)

Rechercher des sujets similaires à "exit sub vide filtrage"