|
|
|
|
Posté par
Geoffroy45, le mercredi 1 août 2007 à 09:06:21Configuration: Windows XP Internet Explorer 6.0 Suite Office 2003
Bonjour,
La solution est très simple, du moins c'est celle que j'utilise pour avoir plusieurs mises en forme dans une cellule : cellule.Characters(Start:=X, Length:=Y).propriété Avec : - cellule la cellule où l'on souhaite appliquer la modif, sous forme de Range ou de Cells ; - X le premier caractère du changement, sous forme d'entier (de 1 à nb_car) ; - Y le nombre de caractères du changement, sous forme d'entier (de 1 à ...) ; - propriété la propriété à appliquer. Exemple : Range("AF7").Characters(Start:=1, Length:=1).Font.Name = "Symbol" Cet exemple me sert par exemple pour écrire "lambda" (la lettre grec) tout en gardant du texte (français) ensuite. Voilà, j'espère t'avoir aidé. |
Merci Sir_DEC.
donc si j'applique ta solution j'obtiens ceci : Set c = Cells(Numligneseg, Numcolonneseg).Find(CelluleA & " " & CelluleB) If c Is Nothing Then 'Concatenation de la cellule cible avec les données sources en rouge semaine = semaine + 1 Numcolonneseg = Numcolonneseg - 1 Windows("Retards carnet 070615.xls").Activate CelluleA = Cells(Numligne, Numcolonne).Value Cells(Numligne, Numcol).Select CelluleB = Cells(Numligne, Numcol).Value Windows("Retardcarnet2007.htm").Activate Worksheets(semaine).Activate Range("Z1").Formula = CelluleA & " " & CelluleB Cells(Numligneseg, Numcolonneseg).Formula = Cells(Numligneseg, Numcolonneseg).Formula & Chr(10) & Range("Z1").Formula Cells(Numligneseg, Numcolonneseg).Characters(Start:=X, Length:=Y).Font.colorindex = 3 Range("Z1").Formula = "" Windows("Retards carnet 070615.xls").Activate Numligne = (Numligne + 1) Cells(Numligne, Numcolonne).Select Else 'Concatenation de la cellule cible avec les données sources semaine = semaine + 1 Numcolonneseg = Numcolonneseg - 1 Worksheets(semaine).Activate Cells(Numligneseg, Numcolonneseg).Formula = Cells(Numligneseg, Numcolonneseg).Formula & Chr(10) & CelluleA & " " & CelluleB Windows("Retards carnet 070615.xls").Activate Numligne = (Numligne + 1) Cells(Numligne, Numcolonne).Select End If Mon soucis est que les valeurs de X et Y seront completement aléatoires. |
Aléatoire ?
Tu dois bien avoir un moyen de les calculer... Que contient la cellule que tu veux formater ? Tu peux toujours mettre un caractère séparateur du genre "partie1 ; partie2" avec ";" le caractère séparateur puis rechercher la position de celui-ci pour formater l'une ou l'autre des partie (avant ou après le caractère séparateur). |
Ma cellule source va contenir un code article suivi de sa nomination. Il sera de couleur rouge si cet article n'a pas été signalé dans une page antérieure.
Je vais essayer de trouver un moyen de calculer sa longueur et de déterminer son premier caractère |
Tu pourrais simplement ranger la cellule sous la forme "Code_article - Désignation", il te suffit ainsi de colorer du cractère 1 jusqu'à celui précédent le "-", ou si ton code peut contenir des tirets, mets un "#".
Enfin je pense que le plus simple serait d'utiliser un sépérateur, ou carrément d'utiliser deux colonnes. |
Bonjour,
tu pourrait juste ajouter un tiret et c tt bn enfint je ss pa tres doué su sa <gras></gras> |