Methode Find + Cellules filtrées

  • Initiateur de la discussion Initiateur de la discussion julicraps
  • 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 !

julicraps

XLDnaute Nouveau
Bonjour à tous,

J'ai un petit soucis avec la méthode Find.
en effet, j'utilise des filtres (auto) sur ma feuille xls, mais lorsque j'utilise la méthode find, le parcours ne se fait que sur les cellules filtrées.

Alors que je voudrais le faire sur l'entièreté des lignes.

Ci joint un bout de mon code, si besoin:
Code:
x = Cells(Target.Row, 2).Value
Application.EnableEvents = False
With ActiveSheet.Columns(2)
    Set f = .Find(What:=x, LookIn:=xlValues, MatchCase:=True)
    MsgBox (f.Address)
    If Not f Is Nothing Then
        firstaddress = f.Address
        Do
            Set f = .FindNext(f)
                If (f.Address = firstaddress) And Range(f.Address).Offset(0, 16).Value = "DOCOK" Then
                    'Mettre en évidence les CR ok--------------------
                    With Range("rangeCR")
                        Set h = .Find(x, LookIn:=xlValues)
                        If Not h Is Nothing Then
                        firstaddress = h.Address
                        Do
                            Range(h.Address).Offset(0, 9).Interior.ColorIndex = 35
                            Set h = .FindNext(h)
                        Loop While Not h Is Nothing And h.Address <> firstaddress
                        End If
                    End With
                    'END Mettre en évidence les CR ok--------------------
                End If
        Loop While Not f Is Nothing And f.Address <> firstaddress And Range(f.Address).Offset(0, 16).Value = "DOCOK"
    End If
End With

Merci beaucoup,
Julicraps.
 
Re : Methode Find + Cellules filtrées

julicraps à dit:
Bonjour à tous,

J'ai un petit soucis avec la méthode Find.
en effet, j'utilise des filtres (auto) sur ma feuille xls, mais lorsque j'utilise la méthode find, le parcours ne se fait que sur les cellules filtrées.

Alors que je voudrais le faire sur l'entièreté des lignes.

Ci joint un bout de mon code, si besoin:
Code:
x = Cells(Target.Row, 2).Value
Application.EnableEvents = False
With ActiveSheet.Columns(2)
    Set f = .Find(What:=x, LookIn:=xlValues, MatchCase:=True)
    MsgBox (f.Address)
    If Not f Is Nothing Then
        firstaddress = f.Address
        Do
            Set f = .FindNext(f)
                If (f.Address = firstaddress) And Range(f.Address).Offset(0, 16).Value = "DOCOK" Then
                    'Mettre en évidence les CR ok--------------------
                    With Range("rangeCR")
                        Set h = .Find(x, LookIn:=xlValues)
                        If Not h Is Nothing Then
                        firstaddress = h.Address
                        Do
                            Range(h.Address).Offset(0, 9).Interior.ColorIndex = 35
                            Set h = .FindNext(h)
                        Loop While Not h Is Nothing And h.Address <> firstaddress
                        End If
                    End With
                    'END Mettre en évidence les CR ok--------------------
                End If
        Loop While Not f Is Nothing And f.Address <> firstaddress And Range(f.Address).Offset(0, 16).Value = "DOCOK"
    End If
End With

Merci beaucoup,
Julicraps.
Salut
La méthode find ne fonctionne que sur les cellules visibles.
Donc, si tu veux une recherche sur la totalité des lignes, tu as 2 solutions :
- soit tu enlèves le modeautofilter,
- soit tu abandonnes l'utilisation de find au profit d'une boucle ligne par ligne ou d'une modification de l'autofilter
ça dépend de ta méthode de travail.
A+
NB un truc me gêne dans ta macro : tu imbriques 2 with, mais je ne suis pas sûr que
With ActiveSheet.Columns(2)
___ With Range("rangeCR")
donne le résultat escompté
 
Dernière édition:
Re : Methode Find + Cellules filtrées

Hello Gorfael,

Effectivement, j'ai trifouillé mon With Range("rangeCR").
C'est bien ceci qu'il faut comprendre dans les 2 cas 🙂

Je m'attendais à une réponse d'utilisation d'une recherche ligne par ligne.
Grr, mon fichier fait 1000 lignes (fixe) et je ne peux pas enlever l'autofilter.

La méthode find est vraiment rapide, je crains vraiment de faire ralentir mon fichier avec un parcours double des 1000 lignes.
Car je dois tout d'abord faire un premier parcours pour vérifier des paramètres, et s'ils sont ok, alors je refais un autre parcours pour le signaler.

Merci en tout cas, pour ton regard sur le code, je pense mettre un fichier anonymisé pour vous monter ce que je fais.

Bien à vous,
Julian.
 
Re : Methode Find + Cellules filtrées

julicraps à dit:
Hello Gorfael,

Effectivement, j'ai trifouillé mon With Range("rangeCR").
C'est bien ceci qu'il faut comprendre dans les 2 cas 🙂

Je m'attendais à une réponse d'utilisation d'une recherche ligne par ligne.
Grr, mon fichier fait 1000 lignes (fixe) et je ne peux pas enlever l'autofilter.

La méthode find est vraiment rapide, je crains vraiment de faire ralentir mon fichier avec un parcours double des 1000 lignes.
Car je dois tout d'abord faire un premier parcours pour vérifier des paramètres, et s'ils sont ok, alors je refais un autre parcours pour le signaler.

Merci en tout cas, pour ton regard sur le code, je pense mettre un fichier anonymisé pour vous monter ce que je fais.

Bien à vous,
Julian.
Salut
Pourquoi ne peux-tu pas enlever l'autofiltre ? Tu le modifies et tu le remets ?

Mais sinon, pourquoi 2 passages ?
un seul suffit : s'il y a corespondance, tu colories, sinon tu remets à blanc.

Si j'ai bien compris ta macro :
- tu recherhces la première ligne dont B est égal à B de la ligne modifiée et avec R = "DOCOK"
- ensuite tu colories à 9 colonnes à gauche du Champ RangeCr les lignes dont B target = Rangecr

A+
 
Dernière édition:
- 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
175
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
564
Réponses
4
Affichages
243
Réponses
7
Affichages
176
Réponses
4
Affichages
491
Retour