VBA - Couleur de mot dans une chaine

Bonjour,

Je voulais savoir si vous avez une idée de comment il est possible de modifier la couleur d'un mot qui est noyer dans une chaîne sous condition.

Soit, dans un trableau avec une colonne de "référence", une autre avec une autre colonne "Type"

Dans un autre feuille, j'ai sur plusieurs colonne, un regroupement des références du tableau un en une seule cellule. Je voulais savoir si suivant la type de la référence, il y avait une macro qui permet de chercher ce mot dans un chaine et de la changer de couleur suivant le "Type".

En vous remerciant d'avance pour vos lumières,Bruno

Bonjour,

Ci-joint une proposition à tester.

Principe :

étape 1 : parcours de toutes les références pour constituer une collection indexée sur la référence

étape 2 : parcours de chaque "jour" (ligne 4)

  • découpage de la cellule (ex C4) pour distinguer les références (séparateur : retour chariot : chr(10))
  • récupère le type à partir de la référence (en utilisant la collection de l'étape 1)
  • modifie la couleur selon le type
 oSh.Cells(4, iCol).Characters(Start:=iPosition, Length:=Len(sRef)).Font.Color = lCouleur

Code structuré et commenté en partie !

Si l'alimentation de l'onglet "RESULT" est déjà gérée dans une macro, le code peut être énormément simplifié (évite de devoir redécouper une chaîne qui a été construite partie par partie)

Bonne journée

Bouben

Bonjour bouben ,

Ton script est nickel, juste dernière infos, il est possible de boucler sur plusieurs ligne ?

La boucle de la ligne c'est à partir de

For iRef = 0

?

Bonjour,

Pour cela, il faut ajouter une nouvelle boucle.

Cf nouvelle version en PJ, à tester.

Bouben

Bonjour Bouben,

Merci, ça marche nickel sur l'exemple.

Quand j'essaye de l'adapter, j'ai un bug de type 13, qui dit Incompatibilité de type...

Pour tant j'ai rien de particulier, je me suis dit peut être du au fractionnement des cellule, mais ça marche bien sur l'exemple.

Du coup je vois vraiment pas en quoi celà peut bloquer, la ligne qui bloque en question est:

mcolRef.Add oSh.Range("I" & iLig).Value, oSh.Range("B" & iLig).Value

Merci de ton aide

Bonsoir,

Le nouveau fichier a de nombreuses différences avec le premier fichier

Cela implique pas mal de modif, évidemment

Ci-joint une nouvelle version, adaptée au nouveau fichier, à tester.

A noter qu'il manque certaines couleurs, donc à modifier dans le code VBA.

Cordialement

Bouben

Bonjour Bouben,

Je viens de tester c'est parfait !!!

Merci beaucoup pour ton aide

Rechercher des sujets similaires à "vba couleur mot chaine"