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 :
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,
Super ça marche nickel !
Merci beaucoup !
Bonne soirée :)