Liste déroulante EXCEL

Fermé
Camcam50 Messages postés 1 Date d'inscription jeudi 16 août 2018 Statut Membre Dernière intervention 16 août 2018 - Modifié le 16 août 2018 à 18:05
titeufdu89 Messages postés 375 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 - 21 août 2018 à 12:53
Bonjour a tous, je suis sincèrement désolée de solliciter votre aide mais je ne m'en sors pas (je suis actuellement à mon poste de travail donc c'est assez urgent).
Comment créer une liste déroulante à partir de libellés et quand je clique sur ce libellé dans la liste de choix je me retrouve qu'avec l'initial de ce libellé ???
C'est à dire : j'ai dans la liste "absence non justifiée" et quand je clique dessus je voudrais que ca me mette simplement ANJ mais qu'en qu'une seule colonne, je ne veux pas en creer 2.

Merci d'avance pour votre aide !
A voir également:

3 réponses

tyranausor Messages postés 3545 Date d'inscription jeudi 6 août 2009 Statut Membre Dernière intervention 1 avril 2022 2 032
21 août 2018 à 11:44
Bonjour, ce n'est pas très clair ce que tu veux! J'ai compris que tu voulais créer une liste déroulante, c'est expliqué ici mais pas "j'ai dans la liste "absence non justifiée" et quand je clique dessus je voudrais que ca me mette simplement ANJ mais qu'en qu'une seule colonne, je ne veux pas en creer 2. "
0
titeufdu89 Messages postés 375 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 38
21 août 2018 à 12:08
Bonjour,
Si j'ai bien compris ta demande tu souhaiterais avoir une validation de donnée (liste de déroulanle) avec les libellés entier et lorsque tu sélectionnes un libellé dans la liste déroulante ce soit les initiales qui soient renvoyées dans ta cellule... c'est bien ça?
0
titeufdu89 Messages postés 375 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 38
21 août 2018 à 12:53
Si j'avais bien compris ta demande voici un code qui te permettras d'avoir ce que tu souhaites.
Tu crée un validation de donnée (liste déroulante) alimenté par tes libellés en entier dans la colonne où tu souhaites voir apparaitre les initiales puis dans l'interface Visual Basic :
- colle le code ci-dessous directement dans la feuille qui contient ton tableau
- mets a jour les coordonnées de la plage qui déclenche la macro "Set plage = ActiveSheet.Range("A1:A" & l)" >>> remplace les A par l'adresse de la colonne en question et le 1 par la première ligne de ton tableau

La macro s’exécutera automatiquement dès lors qu'une cellule comprise dans la plage sus-nommée est modifiée et renverra les initiales du libellé sélectionné :

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Application.ScreenUpdating = False

Dim l As Integer
Dim plage As Range

l = Range("A65536").End(xlUp).Row 'la macro détermine la longueur du tableau en fonction de la dernière ligne non vide de la colonne A (à mettre en jour si besoin)
Set plage = ActiveSheet.Range("A1:A" & l) 'remplace les "A" par l'adresse de la colonne où sont contenues les cellules où tu souhaites inscrire les initiales
'si ton tableau ne commence pas à la ligne 1 remplace le "1" par la première ligne de ton tableau

If Not Intersect(Target, plage) Is Nothing And Target.Cells.Count = 1 Then

Dim i As Integer, lg As Integer
Dim lib As String, initial As String
lib = ActiveCell.Value
lg = Len(ActiveCell.Value)

'1er lettre de la chaine si lettre
initial = Mid(lib, 1, 1)

'analyse du reste de l'intitulé et extrait les caractères situés après les espaces
For i = 2 To lg
If Mid(lib, i, 1) = " " And Mid(lib, i + 1, 1) <> " " Then
initial = initial & Mid(lib, i + 1, 1)
End If
Next i

'reporte les initiales dans la cellule
ActiveCell = UCase(initial)

End If
Application.EnableEvents = True

End Sub


En espérant avoir été suffisamment clair dans mon explication
Jc
0