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 374 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 - 21 août 2018 à 12:53
titeufdu89 Messages postés 374 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 - 21 août 2018 à 12:53
A voir également:
- Liste déroulante EXCEL
- Liste déroulante excel - Guide
- Excel liste déroulante en cascade - Guide
- Supprimer une liste déroulante excel - Forum Word
- Google sheet liste déroulante - Accueil - Guide bureautique
- Si et excel - Guide
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 035
21 août 2018 à 11:44
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. "
titeufdu89
Messages postés
374
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
1 avril 2023
38
21 août 2018 à 12:08
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?
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?
titeufdu89
Messages postés
374
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
1 avril 2023
38
21 août 2018 à 12:53
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é :
En espérant avoir été suffisamment clair dans mon explication
Jc
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