Liste déroulante EXCEL

Camcam50 Messages postés 1 Statut Membre -  
titeufdu89 Messages postés 387 Statut Membre -
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 !

3 réponses

  1. tyranausor Messages postés 3501 Date d'inscription   Statut Membre Dernière intervention   2 060
     
    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
  2. titeufdu89 Messages postés 387 Statut Membre 38
     
    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
  3. titeufdu89 Messages postés 387 Statut Membre 38
     
    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