Colorer cellule contenant un terme

Fermé
floker820 Messages postés 5 Date d'inscription mardi 18 février 2014 Statut Membre Dernière intervention 27 février 2014 - 27 févr. 2014 à 12:29
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 27 févr. 2014 à 16:20
Bonjour,

J'ai un léger problème en vba. Je souhaite écrire une macro qui colorerait une cellule en jaune si elle contient "#CL#". Voici ci dessous le code que j'ai ecrit pour le moment. Le point positif, c'est que ça ne plante pas, le point négatif c'est que ça ne marche pas. Il ne se passe rien...du tout. C'est comme si je n'avais rien lancé. Comme si ma macro n'avait jamais existée.


Sub test()

With Worksheets("Feuil1")
nbcol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
For curseur = nbcol To 1 Step -1
If Cells(1, curseur) Like "#CL#" Then
Cells(1, curseur).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
Next curseur
End With

End Sub


Quelqu'un pourrait-il me dire à quel endroit je fais une erreur svp ?

Merci

2 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
27 févr. 2014 à 13:12
Bonjour,

Puisque tu utilises un
With  Worksheets("Feuil1")
il te faut un point devant chaque Cells.

Ensuite utilise plutôt la fonction Instr() pour rechercher une chaîne de caractères dans une autre chaîne de caractères. Evites aussi l'utilisation de .Select, tu peux très bien faire
With .Cells(1, curseur).Interior

1
floker820 Messages postés 5 Date d'inscription mardi 18 février 2014 Statut Membre Dernière intervention 27 février 2014
27 févr. 2014 à 15:29
Super!! Merci.
Cela fonctionne désormais.

Juste par curiosité, saurais-tu comment faire pour repérer #CL# même si ce terme n'est pas au début de la cellule stp? Pour le moment il repère les cellules ne possédant que "#CL#" ou "#CL#blablabla"

J'utilise ta fonction de cette façon:
InStr(Cells(1, curseur), "#CL#") = 1
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
Modifié par Polux31 le 27/02/2014 à 15:49
En faisant

If InStr(.cells(1,curseur), "#CL#") <> 0 Then
' blablabla
End If


;0)
0
floker820 Messages postés 5 Date d'inscription mardi 18 février 2014 Statut Membre Dernière intervention 27 février 2014
27 févr. 2014 à 16:11
Genial,
Je ne connaissais pas cette astuce. Pour moi le "=1" renvoyait vrai. Le "différent de faux" ne me serait pas venu à l'idée.
Merci beaucoup !!
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
27 févr. 2014 à 16:20
Le retour de InStr() donne la position du 1er caractère de la chaine à rechercher dans la chaîne de caractères testée.
0