Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Recherche Find : impossible dans lignes masquées par le filtre

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 !

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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 :

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
La feuille "N°_à_chercher" contient les Numéros à chercher après filtrage.

Big Big Big MERCI pour votre aide,
Amicalement,
lionel 🙂
 

Pièces jointes

Dernière édition:
Bonjour Lionel, le forum,

Faudrait être logique : si l'on filtre c'est qu'on ne veut pas faire la recherche sur les lignes masquées.

Donc la méthode Find convient très bien.

Par contre je vois que le "filtrage UF" ne fonctionne pas correctement, il faut le revoir.

A+
 
Re 🙂
J'ai également pensé à une boucle en remplacement du filtrage :
For i = 6 To Range("J" & Rows.Count).End(xlUp).Row
If Cells(i, 10) = "..............." Then Rows(i).Hidden = True
Next i
Mais le masquage des lignes pour environ 10000 lignes est bien plus long que le filtrage.
 
Bonjour Gérard 🙂
Merci pour ta réponse mais pour un besoin de rapidité pour rappeler quelqu'un qui nous a appelé, on a besoin très souvent de chercher dans les lignes masquées.
lionel 🙂
 
Re-Gérard 🙂
"Par contre je vois que le "filtrage UF" ne fonctionne pas correctement, il faut le revoir."

xrg.AutoFilter Field:=1, Criteria1:="Agent Mandataire" ', Operator:=xlAnd, Field:=2, Criteria1:="="""
xrg.AutoFilter Field:=2, Criteria1:=""

Bizarre, je ne vois pas d'anomalie : il me donne bien les lignes où seul les cellules col "A" sont non vides,
Je continue à c hercher ...
 
Re-Gérard 🙂
"il nous faut "dé-filtrer" pour afficher la ligne cherchée et "refiltrer" pour revenir au filtrage en cours."
OUI mais c'est ce que je voudrais éviter ... répété très souvent, c'est une perte de temps et déstabilisant pour ce remettre là où en en était.
 
Dernière édition:
Bonjour vgendron, merci d'être là.
"en quoi Défiltrer puis refiltrer c'est un problème?"
Dans le cadre de notre travail : c'est un vrai souci.

"peut etre qu'un simple "Application.screenupdating=false" en début de macro ferait l'affaire?"
"Application.screenupdating=false" : Où je le mets ? 🙂
 
Bonjour Lionel, job75, le fil

Le gazier à dit:
"Application.screenupdating=false" : Où je le mets ?
En début de macro, est un bon indice, non ?
Je dirais même que c'est explicite...🙄
😉

EDITION: Bonjour vgendron
Désolé pour la collision 😉

PS: Il était déjà là
On Error Resume Next
Application.ScreenUpdating = False
Ce qui effectivement n'est pas le début 😉
 
après, il y a aussi le Application.calculation
et tous les .select que je vois dans le code.. depuis le temps, on sait tous que les selections sont souvent inutiles et font perdre du temps
 
- 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

Discussions similaires

Réponses
2
Affichages
250
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
385
Réponses
7
Affichages
227
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…