rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

Mise en forme partielle d'une cellule Excel

Posté par Geoffroy45, le mercredi 1 août 2007 à 09:06:21
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.
Configuration: Windows XP
Internet Explorer 6.0
Suite Office 2003
Répondre à Geoffroy45  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Sir_DEC, le mercredi 1 août 2007 à 09:35:51
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é.
Répondre à Sir_DEC

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Geoffroy45, le mercredi 1 août 2007 à 11:00:16
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.
Répondre à Geoffroy45

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Sir_DEC, le mercredi 1 août 2007 à 11:04:09
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).
Répondre à Sir_DEC

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Geoffroy45, le mercredi 1 août 2007 à 11:10:19
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
Répondre à Geoffroy45

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Sir_DEC, le mercredi 1 août 2007 à 12:02:31
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.
Répondre à Sir_DEC

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 stardu42, le lundi 19 novembre 2007 à 08:42:57
Bonjour,
tu pourrait juste ajouter un tiret et c tt bn enfint je ss pa tres doué su sa <gras>
</gras>
Répondre à stardu42