Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Création de Liste Déroulante en VBA

StanSigma

XLDnaute Junior
Bonjour,

Je me permets de demander votre aide car je bloque sur un sujet,
J'ai dans une cellule un nombre X (celui-ci étant le nombre d'employé nécessaire pour une tache).
Je fais apparaître X listes déroulantes.
Exemple : La cellule m'indique 3, j'ai 3 listes déroulantes (qui apparaissent).

Les problèmes sont :
-Les cellules liées sont pour toutes les listes déroulantes la même cellule.
-Je n'ai aucune idée de comment faire pour empêcher les choix en doublons (empêcher de saisir deux fois la même personne)
-Je ne sais pas comment les supprimer automatiquement pour relancer une nouvelle saisie

Voici mon code à l'heure actuelle :

VB:
Sub Affichage_X_Listes()

Dim x As Integer
Dim lien As Integer
Dim a As Integer
Dim b As Integer
Dim c As String


x = ActiveSheet.Cells(2, 3).Value
lien = 1
a = 100
b = 1
c = ("J" & b & ":J" & b)

For i = 1 To x
    ActiveSheet.DropDowns.Add(200, a, 150, 20).Select
    Application.CutCopyMode = False
    Application.CutCopyMode = False
    With Selection
        .ListFillRange = "$K$1:$K$10"
        .LinkedCell = c
        .DropDownLines = 5
        .Display3DShading = False
    End With
a = a + 40

b = b + 1

Next

End Sub

Merci d'avance,
Hate de vous lire !

Cordialement
Stan
 

Pièces jointes

  • Liste.xlsm
    21.7 KB · Affichages: 18

StanSigma

XLDnaute Junior
Bonjour,

Je reviens vers vous pour un dernier point, je n'arrive pas à faire en sorte que la plage de donnée soit variable, c'est à dire que pour la première liste déroulante, la plage est K2:T2, la deuxième K3:T3, la troisième K4:T4 et ainsi jusqu'a X.
Que dois-je mettre au .ListFillRange =
Merci d'avance
VB:
For i = 1 To x
    ActiveSheet.DropDowns.Add(200, a, 150, 20).Select
        With Selection
            .ListFillRange =
            .LinkedCell = "J" & b
            .DropDownLines = 5
            .Display3DShading = False
        End With
    a = a + 40
    b = b + 1
Next
 

StanSigma

XLDnaute Junior
Non, modifiez les textes en colonne I comme je viens de le dire : K2:K11 en I2 puis L2:L10 en I3 etc...
Je ne vois pas du tout ce que cela change mis à part que mon code plus haut ne fonctionnera plus..
Le .offset fonctionne seulement il me prend uniquement la première valeur en K et non les autres, or lorsque je regarde les propriétés de la liste déroulante, la range source est bonne...
 

Discussions similaires

Réponses
6
Affichages
281
Réponses
1
Affichages
194
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…