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