Création listes déroulantes en boucle

Bonjour,

En effectuant une macro qui pourrait considérablement me simplifier la tâche, je rencontre un problème qui paraît assez simple mais je n'arrive pas à résoudre, je m'explique:

Pour un ensemble de ligne (de 1 à dernière ligne), j'aimerais créer une liste déroulante qui reprendrait les valeurs d'une colonne (dans un autre onglet) qui serait incrémentée de 1 lorsque la ligne est elle-même incrémentée de 1.

En clair, voici le code que je voudrais avoir mais sous-forme de boucle:

Sheets("Feuil2").Select
    Range("E3").Select 'cellule qui s'incrémente
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=Feuil3!$B$1:$B$21" 'selection dont j'aimerais que la colonne s'incrémente
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
  Sheets("Feuil2").Select
    Range("E4").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=Feuil3!$C$1:$C$21"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With

J'ai déjà essayer de cette façon:

For v = 2 To Feuil2.Range("A65535").End(xlUp).Row
  Sheets("Feuil2").Activate
  Cells(v, 5).Select
    With Selection.Validation
DernLigne = Columns(v).Find("*", , , , xlByColumns, xlPrevious).Row
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=Sheets("Feuil3").Range(Cells(1, v), Cells(DernLigne, v))
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
 v = v + 1
 Next

Malheuresement, ce code ne fonctionne pas...

Comment feriez-vous?

Merci par avance pour votre aide.

Rémi

Si je comprend bien ton problème pourquoi tu t'embete a avoir des macro alors que tu pourrais faire une "validation des données"

Enfin après il est possible que tu est réellement besoin de macro pour ton cas....

A voir

Cordialement Bluestar

Bonjour,

Je préférerais avoir une macro pour automatiser la chose. Parfois j'ai 15 lignes et donc 15 listes déroulantes à effectuer.

Tu pourrais mettre ton fichier en pièce jointe ?

Pour les cellules de E2 à E6 de la feuille 2 j'aimerais avoir les cellules des colonnes de A à E de la feuille 3 sous forme de liste déroulante (sachant que dans le fichier, j'ai qu'une valeur par colonne mais que par la suite j'en aurais bien plus donc prévoir de 1 à dernière ligne).

Le code en question se situe à la fin du module 1. Les autres modules étant des tests.

Voilà, merci en tout cas de passer du temps sur mon problème...

Cordialement

Rémi

Bonjour

A tester

Sub truc()
Dim J As Long

  With Sheets("Feuil2")
    For J = 2 To .Range("A" & Rows.Count).End(xlUp).Row
      With .Range("E" & J).Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=Feuil3!" & Range(Cells(1, J), Cells(21, J)).Address        '$C$1:$C$21"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
      End With
    Next J
  End With

End Sub

Ça marche parfaitement!

Je te remercie beaucoup banzai64! C'était donc ce ".adress" qu'il me manquait...

Bonne journée!

Rechercher des sujets similaires à "creation listes deroulantes boucle"