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

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, StanSigma

Pas sûr d'avoir tout compris
Donc une suggestion en passant (en passant par Données/Validation)
VB:
Sub TestDValidation()
Dim i&, j&
If ActiveCell.Address = "$C$2" Then Exit Sub
j = -1
For i = 1 To [C2]
    With ActiveCell.Offset(j + i).Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="André,Arnaud,Jacques,Jean,Marcel,Michel,Patrice,Patrick,Thierry"
    End With
    j = j + 1
    Next i
End Sub

EDITION: Bonsoir sylvanu
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Staple ;), Re StanSigma,
En faisant clic droit/format de controle sur la lsite déroulante. On précise alors la cellule liée désirée.
Liste.jpg
 

StanSigma

XLDnaute Junior
Bonsoir le fil

Pas sûr d'avoir tout compris
Donc une suggestion en passant (en passant par Données/Validation)
VB:
Sub TestDValidation()
Dim i&, j&
If ActiveCell.Address = "$C$2" Then Exit Sub
j = -1
For i = 1 To [C2]
    With ActiveCell.Offset(j + i).Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="André,Arnaud,Jacques,Jean,Marcel,Michel,Patrice,Patrick,Thierry"
    End With
    j = j + 1
    Next i
End Sub

EDITION: Bonsoir sylvanu

Bonjour,
Je ne suis pas sur de comprendre ton code, l'idée est d'ajouter ceci après mon code pour tester chaque liste déroulante et leur cellule liée ?
Peux-tu m'éclairer ?
Merci d'avance
Stan
 

Staple1600

XLDnaute Barbatruc
Re

StanSigma
Ouf, je respire (car j'étais tout bouleversifié en dedans de moi en pensant devenir invisible)
Pour revenir à mon code, celui-ci n'insère pas de contrôle mais passe par Données/Validation)
Testes le sur une feuille vierge en mettant un nombre dans la cellule C2
puis sélectionne par exemple la cellule F2 et lance la macro.
Puis sélectionne la cellule F2 ou d'autres en colonne F.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Vraiment désolé Staple. Le #2 répondait à la première question de StanSigma .
Le post #6 à la question du post #4.
Je suppose toujours que la question initiale est basé sur un extrait minimum, et je réponds stricto senso à la question.
En plus les post se "croisenr" et on a du mal à suivre le fil.
 

Discussions similaires

Réponses
6
Affichages
202

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 846
dernier inscrit
Silhabib