Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
[ Résolu ]Texte de plusieurs couleurs dans une liste déroulante
Bjr, j'aurais voulu savoir si il était possible de mettre différentes couleurs dans le champ du texte d'une liste déroulante, exemple dans ma liste déroulante j'ai Renault Clio HDI , je voudrais Renault en bleu et HDI en rouge, comment cela est il possible de le faire. ci joint fichier.
Re : Texte de plusieurs couleurs dans une liste déroulante
Bonjour,
placer le code dans le module de la feuille 2 :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$4" Then
Dim Car_deb As Byte, Car_fin As Byte
With Target
.Font.ColorIndex = 1
.Font.Bold = False
Car_deb = InStr(1, .Value, "_") - 1
Car_fin = InStrRev(.Value, "!")
.Characters(1, Car_deb).Font.FontStyle = "Bold"
.Characters(1, Car_deb).Font.ColorIndex = 5
.Characters(Car_fin, 7).Font.FontStyle = "Bold"
.Characters(Car_fin, 7).Font.ColorIndex = 5
End With
End If
End Sub
Re : Texte de plusieurs couleurs dans une liste déroulante
Bjr, j'ai bien recopié ton code dans le module de ma feuille, mais comme j'ai déjà un code qui sert pour la même cellule pour mon menu déroulant semi automatique il me met " Erreur de compilation : Nom ambigu détecté : Worksheet_Change.
Private Sub Worksheet_Activate()
If Day(Date) < 16 Then
Range("L4") = "Prestations Du 01 au 15"
Range("L4").Interior.Color = 15261110
Else
Range("L4") = "Prestations Du 16 au 31"
Range("L4").Interior.Color = 49407
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$U$16" Then
temp = Split(Target, "!")
Application.Goto Reference:=Worksheets(temp(0)).Range(temp(1))
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$U$16" Then
Dim Car_deb As Byte, Car_fin As Byte
With Target
.Font.ColorIndex = 1
.Font.Bold = False
Car_deb = InStr(1, .Value, "_") - 1
Car_fin = InStrRev(.Value, "!")
.Characters(1, Car_deb).Font.FontStyle = "Bold"
.Characters(1, Car_deb).Font.ColorIndex = 5
.Characters(Car_fin, 7).Font.FontStyle = "Bold"
.Characters(Car_fin, 7).Font.ColorIndex = 5
End With
End If
End Sub
Re : Texte de plusieurs couleurs dans une liste déroulante
Code:
Bjr, j'ai bien recopié ton code dans le module de ma feuille, mais comme j'ai déjà un code qui sert pour la même cellule pour mon menu déroulant semi automatique il me met " Erreur de compilation : Nom ambigu détecté : Worksheet_Change.
C'est normal puisque tu te retrouves avec 2 Sub Worksheet_Change et que tu ne peux en avoir qu'une. Il te faut donc recopier le corps de l'une (ce qu'il y a entre Private Sub Worksheet_Change(ByVal Target As Range) et End Sub) dans l'autre.
A+
Re : Texte de plusieurs couleurs dans une liste déroulante
Si tu veux te mettre au VBA il faut essayer de comprendre le code.
Donc pour t'aider tu peux utiliser la touche F1 qui appelle l'aide d'Excel.
Voilà ce qui y est dit concernant la propriété Characters d'un range :
Référence du développeur Excel
Range.Characters, propriété
Cette propriété renvoie un objet Characters qui représente une plage de caractères dans le texte de l'objet. Vous pouvez utiliser l'objet Characters pour mettre en forme les caractères d'une chaîne de texte.
Syntaxe
expression.Characters(Start, Length)
expression Variable qui représente un objet Range.
Paramètres
Nom Obligatoire/Facultatif Type de données Description
Start Facultatif Variante Premier caractère à renvoyer. Si vous ne spécifiez pas cet argument ou s'il a la valeur 1, cette propriété renvoie une plage de caractères débutant par le premier caractère.
Length Facultatif Variante Nombre de caractères à renvoyer. Si vous ne spécifiez pas cet argument, cette propriété renvoie le reste de la chaîne (tout ce qui suit le caractère de rang Début).
Remarques
L'objet Characters n'est pas une collection.
Exemple Cet exemple montre comment mettre en gras le troisième caractère de la cellule A1 de la feuille « Sheet1 ».
Visual Basic pour Applications
With Worksheets("Sheet1").Range("A1")
.Value = "abcdefg"
.Characters(3, 1).Font.Bold = True
End With
Donc en sachant que :
- le début (argument 1 ou Start) t'es donné par la variable car_deb
- le nombre de caractères (argument 2 ou length) peut être calculé en utilisant car_fin-car_deb-1
- que l'index de la propriété Font.ColorIndex correspondant au blanc est 2
tu devrais y arriver tout seul.
A+
Re : Texte de plusieurs couleurs dans une liste déroulante
Bjr,merci a toi de m'avoir répondu, mais je n'ai rien compris à ce que tu ma dit, je n'y connais rien en VBA, ce que je voulais c'est d’insérer dans le code déjà existant mettre par exemple le code qui correspond au mot du milieu. 3NANTA_(en bleu)40c_21W_147M(en blanc)!AF_962__(en rouge)
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$U$16" Then
Dim Car_deb As Byte, Car_fin As Byte
With Target
.Font.ColorIndex = 1
.Font.Bold = False
Car_deb = InStr(1, .Value, "_") - 1
Car_fin = InStrRev(.Value, "!")
.Characters(1, Car_deb).Font.FontStyle = "Bold"
.Characters(1, Car_deb).Font.ColorIndex = 5
.Characters(Car_fin, 7).Font.FontStyle = "Bold"
.Characters(Car_fin, 7).Font.ColorIndex = 5
End With
End If
End Sub
Il suffit de savoir lire et cela la quasi totalité des adultes savent le faire, nocive en VBA ou pas
Donc relis posément les précédents conseils de david84 (que je salue au passage) et n'hésites pas à abuser de la touche F1 quand tu utilises Excel.
Re : Texte de plusieurs couleurs dans une liste déroulante
Bonjour, l' expert je ne pense pas qu'en abusant de la touche F1 comme vous dites, vous avez appris toutes ces lignes de codes que vous insérer, comme si vous tapiez une lettre à la machine, je ne demande qu'a comprendre, et à quoi correspondent toutes ces lignes de caractères que vous tapés pour effectuer une action dans le langage VBA, je voulais tous simplement que l'on me rajoute dans la liste de code que David84 m'avais si gentiment exécuté le texte du milieu en couleur blanc.Je comprend que le forum n'est pas un assistanat, ce n'est pas de la mauvaise volonté, mais David84 aurait pu me répondre comme vous, allez voir la touche F1, mais il m'a donner de son temps pour pouvoir résoudre ma question, si vous ne voulez pas me rendre ce service tant pis on en reste la.
Bonne journée à tous.
Re : Texte de plusieurs couleurs dans une liste déroulante
Re
Je te conseillais juste de relire les conseils de david84 et notamment l'extrait de l'aide VBA.
Et ensuite de suivre son dernier conseil
Donc en sachant que :
- le début (argument 1 ou Start) t'es donné par la variable car_deb
- le nombre de caractères (argument 2 ou length) peut être calculé en utilisant car_fin-car_deb-1
- que l'index de la propriété Font.ColorIndex correspondant au blanc est 2
tu devrais y arriver tout seul.
Maintenant tu es libre d'y voir autre chose et de prendre la mouche
PS1: normalement la présence d'emoticones dans un message est censé éviter les malentendus.
Faut croire que je l'ai mal choisi
PS2: La plupart des membres du forum qui répondent essaient de donner des conseils au demandeur pour qu'il ait la satisfaction de progresser par lui-même dans la maitrise de VBA.
En général, on évite de livrer des solutions clés en main, on suggère des pistes, on poste des bouts de code.
Et on espère que le demandeur fera l'effort de les tester, de mettre les mains dans le cambouis.
Qu'il reviendra poser des questions mais qu'il n'attendra pas seulement qu'on lui poste le code VBA déjà tout prêt.
Re : Texte de plusieurs couleurs dans une liste déroulante
Bjr, et désolé d'avoir agis de la sorte, mais je n'ai pas pris la mouche, mais si j'avais vos connaissance aussi poussé en excel, et que je tombe sur le fil de la question, je me ferai un honneur de répondre à la personne en difficulté, même s'il fallait que je passe toute une journée entière pour lui fabriquer un tableau ou un code à rallonge, je pense que l'on oublie vite, et que vous étiez comme moi à vos tous début sur excel, et rencontrer des personnes qui vous tendent la main. si je vous disais que j'ai mis plus d'un mois pour comprendre comment faire un menu déroulant, ce n'est pas en me mettent des bouts de phrases auxquelles je n'y comprend rien que je vais comprendre tout du jour au lendemain.
Re : Texte de plusieurs couleurs dans une liste déroulante
Re, salut JM,
je reprends l'explication et à toi de concrétiser : pour modifier les caractéristiques de caractères entrés dans une cellule ou un ensemble de cellules (Target en l'occurrence désigne la cellule où tu veux que l'événement se déclenche) tu as à ta disposition une propriété appelée Characters.
Code:
expression.Characters(Début, Longueur)
Cette propriété a besoin pour fonctionner qu'on lui indique :
- Début = l'emplacement du 1er caractère à partir duquel agir
- Longueur=le nombre de caractères concernés par l'action voulue
Donc si tu veux mettre en blanc à partir du caractère n° 6 inclus jusqu'au caractère n° 7 tu indiques
Code:
Target.Characters(6, 2)
Si tu veux que cette chaîne de caractères apparaisse en couleur tu agis donc sur la police de caractère (Font en anglais) en lui indiquant quel index de couleur (ColorIndex en anglais) tu veux :
Pour le blanc l'index de couleur est 2.
Dans le code que je t'ai fourni :
- j'utilise car_deb pour rechercher l'emplacement du "_" dans ta chaîne de caractères
- j'utilise car_fin pour rechercher l'emplacement du "!" dans ta chaîne de caractères
Le 1er argument de
Code:
expression.Characters(Début, Longueur)
est donc car_deb
Le 2ème argument de
Code:
expression.Characters(Début, Longueur)
est donc car_fin-car_deb-1
L'index de couleur est le 2 donc tu n'as plus qu'à placer dans
par les valeurs indiquées.
Ensuite tu insères ce morceau de code dans la macro en le plaçant juste avant le End With (attention au "." placé devant Characters)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$4" Then
Dim Car_deb As Byte, Car_fin As Byte
With Target
.Font.ColorIndex = 1
.Font.Bold = False
Car_deb = InStr(1, .Value, "_") - 1
Car_fin = InStrRev(.Value, "!")
.Characters(1, Car_deb).Font.FontStyle = "Bold"
.Characters(1, Car_deb).Font.ColorIndex = 5
.Characters(Car_fin, 7).Font.FontStyle = "Bold"
.Characters(Car_fin, Len(Target.Value)).Font.ColorIndex = 5
'dans la ligne ci-dessous remplacer Début, Longueur et n° d'index choisi par les valeurs réelles
.Characters(Début , Longueur).Font.ColorIndex = n° d'index choisi
End With
End If
End Sub
Dernière chose : pour que l'événement change se déclenche il faut que la cellule indiquée corresponde bien à celle où se trouve le menu déroulant
Code:
Target.Address = "$U$16"
. Or tu indiques la cellule U16 ce qui ne correspond pas à l'endroit où se trouve le menu déroulant de ton fichier.
A+
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.