Usine à gaz
XLDnaute Barbatruc
Bonjour à toutes et à tous,
Je vous souhaite un beau dimanche
Voilà longtemps que je cherche une solution pour afficher la ligne recherchée (masquée par filtrage).
Toutes mes recherches ont abouti au même résultat = le find ne fonctionne que sur les cellules visibles
Toutefois, developpez.net avance des solutions possibles que j'ai copié dans la "Feuil5" du fichier test joint.
Malheureusement, malgré mes tentatives, je n'ai pas su les exploiter pour faire des tests.
J'ai également tenté "LookIn:=xlFormulas" sans résultat.
Pourriez-vous m'aider ?
Une solution serait géniale pour notre travail car actuellement, il nous faut "dé-filtrer" pour afficher la ligne cherchée et "refiltrer" pour revenir au filtrage en cours.
Je joins le fichier test code recherche :
La feuille "N°_à_chercher" contient les Numéros à chercher après filtrage.
Big Big Big MERCI pour votre aide,
Amicalement,
lionel
Je vous souhaite un beau dimanche
Voilà longtemps que je cherche une solution pour afficher la ligne recherchée (masquée par filtrage).
Toutes mes recherches ont abouti au même résultat = le find ne fonctionne que sur les cellules visibles
Toutefois, developpez.net avance des solutions possibles que j'ai copié dans la "Feuil5" du fichier test joint.
Malheureusement, malgré mes tentatives, je n'ai pas su les exploiter pour faire des tests.
J'ai également tenté "LookIn:=xlFormulas" sans résultat.
Pourriez-vous m'aider ?
Une solution serait géniale pour notre travail car actuellement, il nous faut "dé-filtrer" pour afficher la ligne cherchée et "refiltrer" pour revenir au filtrage en cours.
Je joins le fichier test code recherche :
VB:
Sub Recherche()
If [p4] > 0 Then
ActiveCell.Offset(0, 5).Select
Exit Sub
End If
If [m1] = "TEXTBOX OUVERT" Then Exit Sub
Nom = Application.InputBox("Saisir texte/chiffre(s) à trouver :", "Rechercher")
If VarType(Nom) = vbBoolean Then 'Touche Annuler
Nom = CStr(Nom)
[a1].Select
Exit Sub
End If
If Nom = "" Then
Application.EnableEvents = False
MsgBox ("Faudrait p'être saisir le(s) texte/chiffre(s) à trouver !")
[a1].Select
Application.EnableEvents = True
Exit Sub
End If
If [a1] = "Désactiver ?" Then
ActiveSheet.Unprotect Password:=""
Columns("N:N") = ""
End If
ActiveSheet.Unprotect Password:=""
'ActiveSheet.Range("k6:k" & Range("k65536").End(xlUp).Row).SpecialCells(xlVisible).Cells(1, 1).RowHeight = 20
'https://forum.excel-pratique.com/excel/selectionner-la-premiere-cellule-non-filtree-t74462.html
Application.EnableEvents = False
q = ActiveSheet.Index
For q = q To ActiveSheet.Index + Sheets.Count - 1
K = (q - 1) Mod (Sheets.Count) + 1
With Intersect(Sheets(K).UsedRange, Sheets(K).Rows("6:" & Rows.Count))
On Error Resume Next
Application.ScreenUpdating = False
Set C = .Find(Nom, LookAt:=xlPart) 'LookAt:=xlpart dans cellule - LookAt:=xlWhole) 'cellule entière , LookIn:=xlFormulas2
ActiveCell.RowHeight = 20
If Not C Is Nothing Then
firstAddress = C.Address
Do
On Error Resume Next
Sheets(K).Select
C.Activate
Application.ScreenUpdating = True
ActiveWindow.ScrollRow = Selection.Row 'ICI ICI ICI
'If [a1] = "Désactiver ?" Then
ActiveCell.RowHeight = 20
'End If
Rep = MsgBox("A trouver : " & Nom & Chr(10) & Chr(10) & "- OK dans " & ActiveSheet.Name & Chr(10) _
& "- Colonne " & Split(C.Address, "$")(1) & Chr(10) & "- ligne " & C.Row & Chr(10) & Chr(10) _
& "Continuer la recherche ?", 4 + 32, "Résultat")
Cells(ActiveCell.Row, 1).Select
If Rep = vbNo Then
Application.EnableEvents = True
Exit Sub
End If
Application.ScreenUpdating = True
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddress
End If
End With
Next q
MsgBox "Ben NON : y'a pas ou y'a plus !"
Application.EnableEvents = False
[a1].Select
Application.EnableEvents = True
ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Big Big Big MERCI pour votre aide,
Amicalement,
lionel
Pièces jointes
Dernière édition: