Bonjour.
Une feuille contient la liste de tous les mots clés à trouver (feuille Sh01): liste évolutive.
Dans une autre feuille (Sh02), j'essaie de colorer tous les mots identiques aux mots clés de la Sh01.
Problème: le mot clé peut apparaître 2 ou 3 fois dans une même ligne (ou cellule), et c'est le premier mot trouvé qui est coloré. Le 2è et 3è mot restent intact.
Code utilisé (cf. PJ):
Sub colorer()
Dim i, a, ligne, derLigne1, derLigne2
derLigne1 = Sh01.Cells(Rows.Count, 1).End(xlUp).Row 'feuille liste
derLigne2 = Sh02.Cells(Rows.Count, 1).End(xlUp).Row 'feuille draft
For i = 1 To derLigne2 'feuille Sh02
a = UCase(Sh02.Cells(i, 1))
For j = 2 To derLigne1 'feuille Sh01, commence à la 2è ligne
ligne = UCase(Sh01.Cells(j, 1))
If InStr(a, ligne) > 0 Then
Sh02.Cells(i, 1).Characters(Start:=InStr(a, ligne), Length:=Len(ligne)).Font.Color = vbRed
End If
Next j
Next i
End Sub
Quelq'un a-t-il une idée?
D'avance, merci.
Une feuille contient la liste de tous les mots clés à trouver (feuille Sh01): liste évolutive.
Dans une autre feuille (Sh02), j'essaie de colorer tous les mots identiques aux mots clés de la Sh01.
Problème: le mot clé peut apparaître 2 ou 3 fois dans une même ligne (ou cellule), et c'est le premier mot trouvé qui est coloré. Le 2è et 3è mot restent intact.
Code utilisé (cf. PJ):
Sub colorer()
Dim i, a, ligne, derLigne1, derLigne2
derLigne1 = Sh01.Cells(Rows.Count, 1).End(xlUp).Row 'feuille liste
derLigne2 = Sh02.Cells(Rows.Count, 1).End(xlUp).Row 'feuille draft
For i = 1 To derLigne2 'feuille Sh02
a = UCase(Sh02.Cells(i, 1))
For j = 2 To derLigne1 'feuille Sh01, commence à la 2è ligne
ligne = UCase(Sh01.Cells(j, 1))
If InStr(a, ligne) > 0 Then
Sh02.Cells(i, 1).Characters(Start:=InStr(a, ligne), Length:=Len(ligne)).Font.Color = vbRed
End If
Next j
Next i
End Sub
Quelq'un a-t-il une idée?
D'avance, merci.