Contenu d'une liste déroulante à partir d'autres listes déroulantes.

blancolie

XLDnaute Impliqué
Bonsoir le forum,

j'aimerais créer une liste déroulante dans la colonne agent (F9) et que son contenu fasse apparaître les éléments de la liste 1 et liste 2 dans cette fameuse liste déroulante.

je vois des tutos liste déroulante en cascade mais ce n'est pas vraiment ce que je recherche.

Merci de votre aide.
 

Pièces jointes

  • exemple1.xlsx
    8.9 KB · Affichages: 25

blancolie

XLDnaute Impliqué
cool Job75 et merci

du travail à venir pour l'adapter dans mon fichier astreinte mais c'est cela que je recherche. C'est parfait.

le but de ces 2 listes c'est de diférencier les agents qui vont effectué les astreintes et les cadres d'astreintes;

En tout cas merci
 

blancolie

XLDnaute Impliqué
Rebonsoir,

la liste (N) n'est pas extansible, quand on arrive a la fin du tableau jaune, cela s'arrête. je pense qu'on peut l'agrandir soit-même mais y a t il un moyen de le faire automatiquement?

si on faisait des tableaux structurés pour la liste 1 et 2, seront nous obligé d'utiliser les fonction décaller ?
 

blancolie

XLDnaute Impliqué
Bonsoir,

bon j'ai essayer avec les tableaux structurés et actuellement je vois que du positif car le tableau "liste" s’alimente tout seul. l'inconvenient c'est que les bordures n'apparaissent pas. Ce qui est drôle, c'est que dans fichier post4, dans validation données , inscrire "=Liste" cela fonctionne alors que dans le fichier ci-joint, cela ne marche pas. comment fait on également pour que les bordures apparaissent toutes seules.

merci
 

Pièces jointes

  • Classeur3.xlsx
    12.5 KB · Affichages: 17

job75

XLDnaute Barbatruc
Bonjour blancolie, le forum,

Pour vous éviter de vous triturer inutilement les méninges voyez le fichier joint et cette macro :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim liste$(), tablo, e, n&
If FilterMode Then ShowAllData 'si la feuille est filtrée
'---liste à partir des colonnes sources---
ReDim liste(1 To Rows.Count, 1 To 1)
tablo = Range("L13", Range("L" & Rows.Count).End(xlUp)(3)) 'matrice, plus rapide, au moins 2 éléments,
For Each e In tablo
    If e <> "" Then n = n + 1: liste(n, 1) = e
Next
tablo = Range("M13", Range("M" & Rows.Count).End(xlUp)(3)) 'matrice, plus rapide, au moins 2 éléments
For Each e In tablo
    If e <> "" Then n = n + 1: liste(n, 1) = e
Next
'---restitution---
Application.EnableEvents = False
With [I13] '1ère cellule de restitution, à adapter
    If n Then
        .Resize(n) = liste
        .Resize(n).Name = "Liste" 'plage nommée
    End If
    .Offset(n).Resize(Rows.Count - n - .Row + 1).ClearContents  'RAZ en dessous
End With
Application.EnableEvents = True
End Sub
Comme vous le voyez aucun tableau structuré n'est utilisé.

Edit : testé avec 140 000 données sources, la macro s'exécute en 0,15 seconde.

A+
 

Pièces jointes

  • Liste(1).xlsm
    18.1 KB · Affichages: 14
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 729
Messages
2 081 971
Membres
101 852
dernier inscrit
dthi16088