Filtre automatique et VBA

  • Initiateur de la discussion Initiateur de la discussion BUFFENOIR
  • Date de début Date de début

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 !

B

BUFFENOIR

Guest
Bonjour,
Je cherche de l'aide ,

J'execute une macro effectuant un filtre automatique sur un workbook ;
1° Je souhaiterai récupérer le n° de la ligne, résultat du filtre.
2° Si pas de ligne résultat, que cette fonction me renvoie un code "LIGNE NOTOK" par exemple.

Merci bcp

D.B
 
Salut Buffenoir,

Voici un exemple tiré directement d'une démo que je viens de poster !

Sub Test
Dim r as Range

If Worksheets("Sheet1").AutoFilterMode Then
Worksheets("Sheet1").AutoFilterMode = False
Worksheets("Sheet1").Range("A1").AutoFilter Field:=3, Criteria1:="OUI"
Else
Worksheets("Sheet1").Range("A1").AutoFilter Field:=3, Criteria1:="OUI"
End If

Set r = Sheets("Sheet1").Range("A2:" & Sheets("Sheet1").Range("A65536").End(xlUp).Address)
Set r = r.SpecialCells(xlCellTypeVisible)
Dim msg As String
msg = "AutoFilter valeur retournée sur ligne(s)" & vbCrLf
If r.Count = 1 Then 'Considération du "Heading"
MsgBox "LIGNE NOT OK"
Exit Sub
End If
For Each Cell In r
If Cell.Row > 1 Then
msg = msg & Cell.Row & vbCrLf
End If

Attention ici je pars du principe que tu peux avoir plusieurs enregistrements (lignes) retournés par l'AutoFilter.... (si il y en a qu'un çà marchera aussi)

Bon Aprèm
@+Thierry
 
Dernière modification par un modérateur:
Oups un peu rapide le copié collé !!


Sub Test ()
Dim r as Range
Dim msg As String

If Worksheets("Sheet1").AutoFilterMode Then
Worksheets("Sheet1").AutoFilterMode = False
Worksheets("Sheet1").Range("A1").AutoFilter Field:=3, Criteria1:="OUI"
Else
Worksheets("Sheet1").Range("A1").AutoFilter Field:=3, Criteria1:="OUI"
End If
Set r = Sheets("Sheet1").Range("A2:" & Sheets("Sheet1").Range("A65536").End(xlUp).Address)
Set r = r.SpecialCells(xlCellTypeVisible)
If r.Count = 1 Then 'Considération du "Heading"
MsgBox "LIGNE NOT OK"
Exit Sub
End If
msg = "AutoFilter valeur retournée sur ligne(s)" & vbCrLf
For Each Cell In r
If Cell.Row > 1 Then
msg = msg & Cell.Row & vbCrLf
End If
MsgBox msg, vbInformation, "Ligne(s) Matching "
End Sub

Sorry !
@+Thierry
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
144
Réponses
2
Affichages
427
Retour