Mise en forme sur concaténation...

r*zed

XLDnaute Junior
Bonsoir à tous,

j'aurais besoin de vos lumières...

Qui saurait me dire comment mettre en forme des rappels de cellules concaténées de façon à ce que l'on obtienne par exemple (mais pas "par hasard"... :D) les majuscules en rouge, ou plus fort encore, certaines initiales de mots choisis... ? :confused:

Je laisse 2 images pour illustrer ma demande... La 1 c'est la base de départ, et la 2, c'est ce que je souhaite à l'arrivée (avec la concaténation de 2 données sur la ligne 1).

Jusqu'ici quand j'essaie une mise en forme, rien ne se passe, ça reste dans la couleur et le style de toute la cellule (par exemple tout en noir, tout en gras, etc...). Faut-il passer par un format personnalisé de la cellule ou bien par une macro ?(et dans le 2e cas, je ne suis vraiment pas doué...)

Merci de m'éclairer de vos lumières... :p

Amicalement,

Romuald
 

Pièces jointes

  • Capture 1.GIF
    Capture 1.GIF
    5.5 KB · Affichages: 207
  • Capture 2.jpg
    Capture 2.jpg
    15.9 KB · Affichages: 174
  • Capture 2.jpg
    Capture 2.jpg
    15.9 KB · Affichages: 160
  • Capture 2.jpg
    Capture 2.jpg
    15.9 KB · Affichages: 155

mth

XLDnaute Barbatruc
Re : Mise en forme sur concaténation...

re :)

Un essai de code pour mettre les majuscules en Rouge et Gras pour les cellules de la colonne A:

Code:
Sub Macro1()
Dim i As Byte
Dim C As Range
With Sheets("Feuil1")
    For Each C In .Range("a1:a" & .[A65000].End(xlUp).Row)
 
        For i = 1 To Len(C)
        x = Mid(C, i, 1)
            If x = UCase(x) Then
                C.Characters(Start:=i, Length:=1).Font.Bold = True
                C.Characters(Start:=i, Length:=1).Font.Color = -16776961
            Else
                C.Characters(Start:=i, Length:=1).Font.Bold = False
                C.Characters(Start:=i, Length:=1).Font.ColorIndex = xlAutomatic
            End If
        Next i
    Next C
End With
End Sub

Bien à toi,

mth
 

r*zed

XLDnaute Junior
Re : Mise en forme sur concaténation...

Bonjour,

merci Mth pour ton essai de code... ^_^

bon, par contre, je crois que ça ne fonctionne pas... ni dans mon fichier, ni dans un nouveau classeur... ça reste comme avant.

par ailleurs il peut être judicieux de le faire pour une ligne, plutôt que pour une colonne...

en tout cas, c'est déjà un début de réponse, et cela veut dire que ce n'est peut-être pas impossible ! ! ! ^_^

Amicalement,

Romuald
 

JNP

XLDnaute Barbatruc
Re : Mise en forme sur concaténation...

Bonjour R*zed, bisous Mireille :),
La macro de Mireille fonctionne parfaitement, mais..., tu ne peux pas avoir le beurre et l'argent du beurre :p...
Elle fonctionne parfaitement sur du texte, pas sur le résultat d'une formule :D.
Donc si ça ne te dérange pas de remplacer la formule par son résultat, il te suffit de rajouter la ligne :
Code:
    For Each C In .Range("a1:a" & .[A65000].End(xlUp).Row)
[COLOR=red][B]   C = C.Value[/B][/COLOR]
        For i = 1 To Len(C)
Pour la ligne, utiliser
Code:
    For Each C In .Range("a1").Resize(1, Range("z1").End(xlToLeft).Column)
J'ai mis z1 car je ne me souviens plus de la dernière colonne en 2000, mais tu peux modifier ;).
Si par contre tu veux conserver ta formule, ben, je vois vraiment pas comment la cellule pourrait garder une mise en forme d'un texte qui est virtuel :eek:... Donc impossible à mon avis :).
Bon courage :cool:
 

r*zed

XLDnaute Junior
Re : Mise en forme sur concaténation...

Merci JNP pour les éléments supplémentaires...

Effectivement, je dois être trop "gourmand", et en voudrais toujours plus ! ! ! :p

Pour répondre à tes questions,

* XL2000 compte 256 colonnes par feuille, soit jusqu'à la colonne IV. mais je n'ai pas besoin que ça aille aussi loin en fait...

* évidemment je pourrais remplacer les formules par du texte, mais dans ce cas, un simple copier-coller de la cellule mise en forme suffirait, et pas besoin de s'enquiquiner avec des formules ou des macros. Le problème, c'est que dans mon doc d'origine, je réitère qqch comme peut-être 15 fois certaines données selon les diverses listes que j'édite pour ma classe, donc, pour ne pas oublier de mettre à jour ces cellules, il est bon de faire un rappel des données concernées, en les concaténant le plus souvent (genre nom-prénom, ou classe-école), la cerise sur le gâteau étant la mise en forme souhaitée...:D

Merci pour le changement de colonne en ligne... par contre je suis un peu "frustré", parce que, vraiment, il n'y a pas, avec moi, ça reste tout noir...:(

Je sais que je suis un peu "nouille" parfois, et que j'oublie des choses qui semblent "basiques" pour certains (euh... la journée mondiale contre la maladie d'Alzheimer, c'était hier, hein ?!!), alors je vous joins mon fichier d'essai avec 2 captures d'images pour montrer ce que j'ai fait... et si j'ai bien fait une ânerie, dites-le moi ! ! ! ;)

Pour ma part, j'aurais plutôt pensé à utiliser une MFC pour les cellules concernées, peut-être avec la fonction NBCAR et/ou la fonction CNUM (en spécifiant que les caractères en MAJ uniquement se voient appliqués de la mise en forme conditionnelle "police en rouge", mais je ne suis pas assez calé pour l'exprimer en langage excel et donc faire le test pour voir...

Maintenant, si vraiment je demande l'impossible concernant ces majuscules en rouge, eh ben c'est pas grave, je saurai largement me satisfaire de ce qui est réalisable... même si c'est tout en noir ! :)

En vous remerciant tous pour avoir au moins porté un intérêt à ma demande... ^o^

Amicalement,

Romuald
 

Pièces jointes

  • Capture2.jpg
    Capture2.jpg
    64.1 KB · Affichages: 163
  • Capture1.jpg
    Capture1.jpg
    55.9 KB · Affichages: 183
  • Capture2.jpg
    Capture2.jpg
    64.1 KB · Affichages: 166
  • Capture1.jpg
    Capture1.jpg
    55.9 KB · Affichages: 180
  • Essai_Macro1.xls
    25 KB · Affichages: 89
  • Capture2.jpg
    Capture2.jpg
    64.1 KB · Affichages: 133
  • Capture1.jpg
    Capture1.jpg
    55.9 KB · Affichages: 143

mth

XLDnaute Barbatruc
Re : Mise en forme sur concaténation...

re :)

En m'inspirant du code de JNP pour compléter le mien, veux tu essayer ceci ?:

Code:
Sub Macro1()
Dim i As Byte
Dim C As Range
Dim Lig As Long
With Sheets("Feuil1")
Lig = .Range("A65530").End(xlUp).Row
For y = 1 To Lig
    For Each C In .Cells(y, 1).Resize(1, Cells(y, 256).End(xlToLeft).Column)
    C = C.Value
        For i = 1 To Len(C)
        x = Mid(C, i, 1)
            If x = UCase(x) Then
                C.Characters(Start:=i, Length:=1).Font.Color = -16776961
            Else
                C.Characters(Start:=i, Length:=1).Font.ColorIndex = xlAutomatic
            End If
        Next i
    Next C
Next y
End With
End Sub

@ +, et bises JNP :)

mth
 

JNP

XLDnaute Barbatruc
Re : Mise en forme sur concaténation...

Re :),
Non, tu as bien fait ce qu'il fallait, mais je pense que c'est la référence du rouge 2007 qui ne passe pas en 2000...
Modifie
Code:
            If x = UCase(x) Then
                C.Characters(Start:=i, Length:=1).Font.Bold = True
                C.Characters(Start:=i, Length:=1).Font.Color = [COLOR=red][B]255[/B][/COLOR]
            Else
                C.Characters(Start:=i, Length:=1).Font.Bold = False
                C.Characters(Start:=i, Length:=1).Font.ColorIndex = xlAutomatic
Si ça ne fonctionne pas, mets une cellule en texte rouge, sélectionne là et utilise
Code:
Sub test()
MsgBox Selection.Font.Color
End Sub
ça te donnera la valeur de ton rouge ;).
Par contre, je suis désolé, mais sachant que la seule façon de faire des mises en formes différentes dans la même cellule est de l'appliquer suivant un certain nombre de caractères, tu comprendras qu'Excel ne saurais gérer le 10ème caractère si le résultat de la formule n'en renvoye que 9 :D...
Désolé et bon courage :cool:
Ajout : Bises Mireille
 
Dernière édition:

r*zed

XLDnaute Junior
Re : Mise en forme sur concaténation...

Bonsoir à tous,

Merci à Mireille et JNP pour vos pistes afin de tenter de trouver une solution...

Donc, excel 2000 ne composerait qu'avec 56 couleurs, et le rouge correspondrait au code 3.

Hélas, même en modifiant comme il se doit les essais de macro, rien ne se passe encore par chez moi... (cf. fichier joint) snif :(

Bon, je ne vois pas bien pourquoi ces macros me "boudent", mais on ne va peut-être pas s'acharner quand même ?

Surtout si, comme tu dis, JNP, les mises en forme sur des formules ne semblent pas possibles, et les MFC sur une chaîne de caractères précises n'autorisent pas de "fluctuation" dans le nombre de caractères pris en compte...

Eh ben alors... tant pis !

Merci en tout cas pour votre implication, j'aurais encore appris des choses à votre contact ! ^_^

Amicalement,

Romuald
 

Pièces jointes

  • Essai_Macro1.2.xls
    29 KB · Affichages: 72

mth

XLDnaute Barbatruc
Re : Mise en forme sur concaténation...

re :)

Il faut que tu places ta macro dans un module, pas sur une feuille.
Pour l'instant, elle est faite pur l'onglet Feuil1, mais tu peux changer dans la macro.

ARf :) dans ton fichier je l'ai fait tourner sur Feuil1, plein de lettres en rouge :)
(il te restera à vérifier le code couleur, pour l'instant j'ai gardé celui de 2007, mais pas forcément bon pour toi comme le dit fort justement JNP)

Bien à toi,

mth
 

Pièces jointes

  • Essai_Macro1.2(1)(1).xls
    42.5 KB · Affichages: 72
Dernière édition:

r*zed

XLDnaute Junior
Re : Mise en forme sur concaténation...

Bonjour,

merci Mireille pour la nouvelle tentative... :)

Effectivement, quand j'ouvre le fichier, et que je vois le fruit de tes efforts, c'est exactement ce que je cherche à faire sous ma version d'excel...

Mais si je tape du texte n'importe où, rien ne se passe,

Alors j'ai cherché un moyen d'adapter le code couleur, et j'ai trouvé des idées bien utiles là :

Color Palette and the 56 Excel ColorIndex Colors

en plus, ils proposent sur ce site différentes macros qui peuvent être intéressantes par rapport à notre topic,

mais que je mette en code : "3" ; "255" ; "[red]" ; et même "#FF0000" (code hexa), y'a rien à faire, chez moi, quand ça veut pas, ça veut pas !

Pfff, bon, je ne sais pas trop quoi faire, mais je pense capituler et m'incliner devant le fait que parfois eh ben, il n'y a pas forcément de solution... sous XL 2000 du moins... :(

Bien amicalement,

Romuald
 

r*zed

XLDnaute Junior
Re : Mise en forme sur concaténation...

Re,

Bon, sinon, voici une macro trouvée justement dans les liens du site plus haut, là plus exactement :

microsoft.public.excel.misc | Google Groups

et qui fonctionne, mais pour la colonne 1...

C'est déjà un début de réflexion, mais comme je ne suis pas doué en VBA, je ne sais pas modifier pour que cela devienne une ligne ou une zone définie...

Peut-être un début d'espoir ???

Amicalement,

Romuald
 

Pièces jointes

  • Essai_macro 3.1.xls
    26 KB · Affichages: 86

r*zed

XLDnaute Junior
Re : Mise en forme sur concaténation...

Re,

eh ben oui, comme tu dis, JNP, ça ne marche pas plus sur les formules, qui elles, virent au rouge direct...

Par contre, pour ceux que cela intéresse, j'ai réussi à modifier tout seul, comme un grand, (en allant tout de même à la pêche aux infos sur le forum), la macro pour l'adapter à une plage définie...

Bon, ça a l'air de rien, mais là, je viens de faire mes premiers pas en VBA ! ! !
Et en plus ça marche (même sous XL 2000) ! ! !:cool:

C'est pas encore de la vraie programmation, mais c'est déjà qqch pour moi ! :D

Maintenant, il n'y a plus qu'à changer la plage de cellules pour faire correspondre aux besoins...;)

Du coup, fort de ces bonnes nouvelles du jour (les macros fonctionnent aussi chez moi, et sur la plage de cellules définies...), je vais relancer ma première demande en me disant que si la chance est encore avec moi, on pourra peut-être trouver le moyen d'adapter la macro aux formules...

Non ?:rolleyes:

Amicalement,

Romuald
 

Pièces jointes

  • Essai_macro 3.2.xls
    27 KB · Affichages: 66

r*zed

XLDnaute Junior
Mise en forme sur concaténation... LA SOLUCE ! ^_^

Bonjour à tous,

Finalement j'ai fini par avoir la solution à mon problème ! ^_^

Bon, je ne vous cache pas que je n'en suis pas l'auteur, donc je remercie chaleureusement Eriiic (d'un autre forum) pour ses formules géniales, à la fois redoutablement simples et diaboliquement efficaces !

Du coup, je suis trop heureux de pouvoir en faire aussi profiter les autres (pour une fois que je peux apporter qqch au forum), et j'ai compilé tout ça dans un fichier...

En espérant que cela en aidera certains qui se désespéraient comme moi de pouvoir le faire, le croyant impossible !

Merci en tout cas à tous encore une fois, car vous m'avez permis d'en apprendre encore davantage sur l'utilisation d'excel ! ^_^

Amicalement,

Romuald
 

Pièces jointes

  • Mise en forme et concaténation....xls
    55 KB · Affichages: 167

Discussions similaires

Statistiques des forums

Discussions
312 428
Messages
2 088 333
Membres
103 815
dernier inscrit
SANOU ANSELME