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 !
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
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
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é
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.
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.
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
- 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