Microsoft 365 Listes déroulantes

matthieu2701

XLDnaute Occasionnel
Bonjour,

Je souhaite créer des listes déroulante en fonction d'un champ afficher sur la ligne.

Dans le feuil1, colonne Q, je souhaite faire afficher la liste déroulante par rapport à E.

Dans la feuil2, j'ai affiché les listes déroulantes qui correspondent au "OP"

Concrètement, en Q1, je souhaite la liste déroulante qui est en feuil2 de A2 à A12 et en Q2 la liste déroulante de A2 à A13.

J'espère que j'ai été assez clair.

Merci par avance de votre aide.

Cordialement
 

Pièces jointes

  • Test.xlsx
    10.4 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Matthieu,
En fait la liste affichée doit dépendre de la colonne E ?
En PJ un essai :
Feuil2 nommage des deux listes Liste106 et Liste508, car on ne peut pas faire de listes déroulantes sur des plages d'autres feuilles, il faut passer par un nommage.
Et la liste déroulante avec :
VB:
=SI($E2="OP106";Liste106;Liste508)
 

Pièces jointes

  • Test (16).xlsx
    9.8 KB · Affichages: 3

matthieu2701

XLDnaute Occasionnel
Bonjour Matthieu,
En fait la liste affichée doit dépendre de la colonne E ?
En PJ un essai :
Feuil2 nommage des deux listes Liste106 et Liste508, car on ne peut pas faire de listes déroulantes sur des plages d'autres feuilles, il faut passer par un nommage.
Et la liste déroulante avec :
VB:
=SI($E2="OP106";Liste106;Liste508)

Oui cela doit dépendre de la colonne E. J'ai 146 listes différentes. Du coup, comment construire ma formule ?

Merci
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Un essai en PJ avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Col%, DL%, ListName$, NomFeuille$
On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("Q1:Q10000")) Is Nothing Then
        If Cells(Target.Row, "E") = "" Then Exit Sub        ' car pas d' OP.
        Col = Application.Match(Cells(Target.Row, "E"), Sheets("Feuil2").[1:1], 0) ' recherche OP dans la liste
        If Col = 0 Then Exit Sub                            ' car l' OP n'existe pas
        With Sheets("Feuil2")
                NomFeuille = .Name                                                          ' Nom de la feuille
                DL = .Cells(65000, Col).End(xlUp).Row                                       ' Dernière cellule
                ListName = "=" & NomFeuille & "!R2C" & Col & ":R" & DL & "C" & Col & ""     ' Def de la plage
                ActiveWorkbook.Names("Liste").RefersToR1C1 = ListName                       ' Affecter Nom
        End With
    End If
Fin:
End Sub
A chaque clic sur une cellule de P, on choisit la liste déroulante à afficher. Il n'y a pas de limite au nombre de listes ( mais ici limité à 32767, ça laisse de la marge )
J'ai aussi mis une liste pour les OP, pour simplifier.
 

Pièces jointes

  • Test (16) (1).xlsm
    20.6 KB · Affichages: 5

matthieu2701

XLDnaute Occasionnel
Re,
Un essai en PJ avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Col%, DL%, ListName$, NomFeuille$
On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("Q1:Q10000")) Is Nothing Then
        If Cells(Target.Row, "E") = "" Then Exit Sub        ' car pas d' OP.
        Col = Application.Match(Cells(Target.Row, "E"), Sheets("Feuil2").[1:1], 0) ' recherche OP dans la liste
        If Col = 0 Then Exit Sub                            ' car l' OP n'existe pas
        With Sheets("Feuil2")
                NomFeuille = .Name                                                          ' Nom de la feuille
                DL = .Cells(65000, Col).End(xlUp).Row                                       ' Dernière cellule
                ListName = "=" & NomFeuille & "!R2C" & Col & ":R" & DL & "C" & Col & ""     ' Def de la plage
                ActiveWorkbook.Names("Liste").RefersToR1C1 = ListName                       ' Affecter Nom
        End With
    End If
Fin:
End Sub
A chaque clic sur une cellule de P, on choisit la liste déroulante à afficher. Il n'y a pas de limite au nombre de listes ( mais ici limité à 32767, ça laisse de la marge )
J'ai aussi mis une liste pour les OP, pour simplifier.

Merci beaucoup.

J'ai essayé de reproduire cela dans mon fichier mais je n'arrive pas à créer "Liste" dans le gestionnaire de noms. J'ai bien créé les 2 autres mais "Liste" je ne sais pas comment faire.

Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 047
Messages
2 084 862
Membres
102 688
dernier inscrit
Biquet78