Mise en forme partielle d'une cellule Excel

Résolu/Fermé
Geoffroy45 Messages postés 12 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 1 août 2007 - 1 août 2007 à 09:06
 stardu42 - 19 nov. 2007 à 08:42
Bonjour,

Voici mon problème, dans une cellule cible je concatène des données de deux autres cellules (sources). J'aimerai, dans la cellule cible, écrire certaines données en rouges et d'autre en noir. J'ai déjà mis en place ma condition qui sélestionne les valeurs selon mon critère mais le seul soucis est que j'obtiens la cellule (cible) complet en rouge ou en noir. Je suis vraiment bloqué sur ce point qui est la dernière pierre à ma macro.
En clair, je souheterais obtenir des lignes noires et des lignes rouges dans ma cellule cible.
A voir également:

6 réponses

Sir_DEC Messages postés 143 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 12 mai 2012 75
1 août 2007 à 09:35
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é.
1
Geoffroy45 Messages postés 12 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 1 août 2007 1
1 août 2007 à 11:00
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.
0
Sir_DEC Messages postés 143 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 12 mai 2012 75
1 août 2007 à 11:04
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).
0
Geoffroy45 Messages postés 12 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 1 août 2007 1
1 août 2007 à 11:10
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sir_DEC Messages postés 143 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 12 mai 2012 75
1 août 2007 à 12:02
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.
0
Bonjour,
tu pourrait juste ajouter un tiret et c tt bn enfint je ss pa tres doué su sa <gras>
</gras>
0