Xlvalidatelist intégrer à une boucle

Bonjour à tous,

Premier post pour moi

Je cherche une âme charitable qui pourrait m'aider sur une création de liste déroulante en vba.

Avec le code suivant je créé ma liste ou je veux et à partir des données dont j'ai besoin. Ma liste fonctionne et tout va bien dans le meilleurs des mondes.

J'ai besoin de créer une liste sur le même principe mais avec des données différentes dans 3 colonnes différentes.

C'est la que les problèmes se posent :

  • Créer la liste, pas de problème
  • Sélectionner les données pas de problème....sauf que toutes les listes créées ont les données de la dernières liste créée.

Example :

Liste 1 = toto

Liste 2 = tata

Liste 3 = titi

Quand je créé la Liste 2, la liste 1 devient tata

Quand je créé la Liste 3, la liste 1 et la liste 2 deviennent titi

J'ai essayé avec une boucle type Do...loop until NumCol=9 et j'ai le même problème

Voici mon code

Sub ListDispo()

Dim NumCol As Integer
Dim Produit As String

Position = ActiveCell.Row

NumCol = 7

ColProduit (NumCol)

NumCol = 7
LettreCol = "U"

With Sheets("Données d'entrée")
.Activate
.Range(LettreCol & "2" & ":" & LettreCol & "32").Select
ActiveWorkbook.Names.Add Name:="LaPlage", RefersTo:="=" & Selection.Address
End With

Cells(Position, NumCol).Select

With Selection.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="=LaPlage"
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
End With

NumCol = 8
LettreCol = "V"

With Sheets("Données d'entrée")
.Activate
.Range(LettreCol & "2" & ":" & LettreCol & "32").Select
ActiveWorkbook.Names.Add Name:="LaPlage", RefersTo:="=" & Selection.Address
End With

Cells(Position, NumCol).Select

With Selection.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="=LaPlage"
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
End With

NumCol = 9
LettreCol = "W"

With Sheets("Données d'entrée")
.Activate
.Range(LettreCol & "2" & ":" & LettreCol & "32").Select
ActiveWorkbook.Names.Add Name:="LaPlage", RefersTo:="=" & Selection.Address
End With

Cells(Position, NumCol).Select

With Selection.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="=LaPlage"
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
End With

End Sub

Help

Tous simplement en nomant spécifiqument

NumCol1 ,NumCol2,NumCol3

LettreCol1, LettreCol2,LettreCol3

au lieu d'utiliser LettreCol et NumCol sur tes 3 colonnes

Merci pour votre réponse, mais ça ne fonctionne pas.

Cdt,

Bonjour,

Normal.

Tu donnes le même nom à tes plages : LaPlage.

Au final, tu n'as donc qu'une seule liste, la dernière LaPlage.

Utilise donc trois noms différents :

LaPlageU

LaPlageV

LaPlageW

Je redéfini "laplage" à chaque fois en changeant la source des données. C'est à ça que me sert la variable LettreCol.

Je vais quand même faire le test et je vous tiens au courant.

Wonderfull, ça marche en indexant "laplage"

Il ne reste plus qu'a mettre tous ça dans une boucle.

Merci

Rechercher des sujets similaires à "xlvalidatelist integrer boucle"