Création dynamique d'une liste déroulante dans une cellule, mais en conservant l

MrZurg12 Messages postés 15 Date d'inscription mardi 29 mai 2012 Statut Membre Dernière intervention 20 juillet 2012 - 17 juil. 2012 à 10:48
MrZurg12 Messages postés 15 Date d'inscription mardi 29 mai 2012 Statut Membre Dernière intervention 20 juillet 2012 - 19 juil. 2012 à 14:14
Bien le bonjour,

Je viens vers vous en cette délicieuse matinée car je ne trouve pas de solution à mon problème. Voila ce que je fais.

Je crée dynamiquement des lignes dans lesquelles je rentre des infos. Et je veux qu'une de ces cellules soit une liste déroulante.
Alors j'ai utilisé l'outil d'enregistrement de macro qui m'a donné le code suivant:
With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=List_value!$M$2:$M$6"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
End With


Alors ça marche sans problème, lorsqu'on utilise une liste simple, du style[list][*] New
[*] +
[*] -
[*] =/list

Mais le truc, c'est que j'aimerai que ma liste comporte des caractère spéciaux.
Par exemple[list][*] R en Wingdings 2, couleur rouge
[*] l en Wingdings 1, couleur noir/list
Quelque chose dans ce genre là.

Alors il est tout à fait possible de formater la cellule en fonction du choix de l'utilisateur avec des If ... ElseIf ... End If, mais le problème c'est que la liste déroulante que l'utilisateur voit est dans une seule et même police, donc l'affichage donne un peu n'importe quoi.

Est-ce que vous savez s'il est possible que l'affichage dans la liste déroulante soit multi-font ?

Merci d'avance !
CGB
Z.

3 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
19 juil. 2012 à 11:57
Bonjour,

Ajoute cette macro dans la feuille contenant ta liste
Elle modifie la police en fonction du choix réalisé
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row 1 And Target.Column 2 Then
    Select Case Target.Value
        Case "R"
            Font = "Wingdings 2"
        Case "L"
            Font = "Wingdings"
        Case Else
            Font = "Arial"
    End Select
    
       Cells(Target.Row, Target.Column).Select
          With Selection.Font
            .Name = Font
            .Size = 10
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = xlAutomatic
         End With
End If
End Sub



Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
19 juil. 2012 à 12:15
Bien sur il te faut modifier les coordonnées de ta liste
If Target.Row 1 And Target.Column 2 Then

Ainsi que les caractères à utiliser ( dans le select case )


Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0
MrZurg12 Messages postés 15 Date d'inscription mardi 29 mai 2012 Statut Membre Dernière intervention 20 juillet 2012
19 juil. 2012 à 14:14
Bonjour Jordane,

Merci de ta réponse.

J'obtiens bien le caractère voulu après avoir cliqué dans ma liste, mais la liste déroulante m'affiche toujours "R" et "L", et non pas l'équivalent en police Wingdings et Wingdings 2.
Pour résumer, je veux que la liste déroulante affiche "L" en Wingdins 2 et "R" en Wingdings (ça je ne sais pas le faire), et je veux que la cellule affiche "L" en Wingdings 2 et "R" en Wingdings une fois que le choix est fait (ça c'est ce que fait ton code).

Sait tu si cela est possible ?

Merci
Z.
0
Rejoignez-nous