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

Signaler
Messages postés
15
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
20 juillet 2012
-
Messages postés
15
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
20 juillet 2012
-
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

Messages postés
31193
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 janvier 2021
342
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
Messages postés
31193
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 janvier 2021
342
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
Messages postés
15
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
20 juillet 2012

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.