Mise en forme partielle d'une cellule Excel
Résolu
Geoffroy45
Messages postés
12
Statut
Membre
-
stardu42 -
stardu42 -
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.
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:
- Mise en forme partielle d'une cellule Excel
- Mise en forme conditionnelle excel - Guide
- Mise en forme tableau word - Guide
- Liste déroulante excel - Guide
- Proteger cellule excel - Guide
- Déplacer une colonne excel - Guide
6 réponses
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é.
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.
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).
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
Je vais essayer de trouver un moyen de calculer sa longueur et de déterminer son premier caractère
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
Enfin je pense que le plus simple serait d'utiliser un sépérateur, ou carrément d'utiliser deux colonnes.