Macro avec fonction recherche

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

C

Cyrille68

Guest
Bonjour,

Je viens de créer une macro : si tu trouves les memes valeurs dans les 2 series alors appliquer le fond gris a la cellule dans la deuxième série.

Dans le test que j'ai fait, les valeurs sont presques toutes les memes et il ne me grise qu'une cellule... la dernière...

Comment faire pour que la recherche se fasse sur toute la série de données ??

Merci pour votre aide

Cyrille

With Worksheets("Resultat").Range("b2:b10")
Set c = .Find(Worksheets("Data").Range("b2:b10").Value, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Interior.Pattern = xlPatternGray50
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
End Sub
 

Pièces jointes

Salut Cyrille, le Forum

Donrénavant suite aux innombrables attaques virales de ces derniers jours, je n'ai pas le droit de télécharger les pièces jointes depuis le bureau, donc je ne me base que sur la macro que tu as indiquée...

Si je comprends bien "si tu trouves les mêmes valeurs" tu cherches une occurrence de la valeur complète de la cellule, et dans ce cas Find n'est pas vraiment nécessaire vu qu'il va chercher dans tout ou partie de la String... De plus rentrer une Plage pour Find ne ce fait pas de cette manière.

Je ferai tout simplement comme ceci :

Option Explicit
Option Compare Text 'Si tu ne veux pas de Match Case

Sub Recherche()
Dim PlageSource As Range
Dim PlageCible As Range
Dim CellSource As Range, CellCible As Range

Set PlageSource = ThisWorkbook.Sheets("Data").Range("b2:b10")
Set PlageCible = ThisWorkbook.Sheets("Resultat").Range("b2:b10")

For Each CellSource In PlageSource
For Each CellCible In PlageCible
If CellCible = "" Then GoTo Nexte 'Si tu veux rien si cellule vide
If CellSource = CellCible Then CellCible.Interior.Pattern = xlPatternGray50
Nexte:
Next CellCible
Next CellSource
End Sub


Bonne Fin d'aprèm
@+Thierry
 
Bonjour Cyrille

Remplace ton code par le code suivant:

Sub recherche()
Dim c As Range
Dim d As Range

For Each c In Worksheets("Resultat").Range("b2:b10")
For Each d In Worksheets("data").Range("b2:b10")
If c.Value = d.Value Then c.Interior.Pattern = xlPatternGray50
Next d
Next c
End Sub


Bonne journée

@Christophe@
 
Héhéhé Salut @Xtoph@

Même problème, Même solution !! Juste le style est un peu différent et les Options (Pour les Matching des MAJ)... Mais le résultat et le même... (Jusqu'au nom de la macro ;-))

Bon Aprèm à Toi !

@+Thierry
 
Bonjour Cyrille sixty-eight,

tout d'abord, pour moi, la meilleure macro consiste à ne pas en écrire, donc tu peux très bien t'en sortir avec un format mise en forme conditionnelle.

Petite question : tes valeurs identiques doivent etre au même endroit dans la plage?

si oui, et si tu veux absolument une macro, essaie ça

For i = 2 To 10
If Worksheets("Resultat").Range("b" & i) = Worksheets("Data").Range("b" & i) Then
Worksheets("Data").Range("b" & i).Interior.Pattern = xlPatternGray50
End If
Next

BipBip.gif
 
Bonjour, tout le monde

Voici un code, qui utilise l'instruction CountIf, il y a plus qu'une boucle

Sub Macro1()
Dim CellControle As Range
For Each CellControle In Worksheets("Resultat").Range("b2:b10")
If Application.CountIf(Worksheets("Data").Range("b2:b10"), CellControle) > 0 Then
CellControle.Interior.Pattern = xlPatternGray50
End If
Next
End Sub

Bonne journée à vous tous.

@+Jean-Marie
 
- 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
467
Réponses
12
Affichages
1 K
Réponses
12
Affichages
901
Réponses
7
Affichages
702
Réponses
0
Affichages
597
Retour