Liste de validation dynamique

Bonjour,

Pour la création d'une liste de validation dynamique, l'enregistreur de macro donne le code suivant :

Range("I2:I10").Select

With Selection.Validation

.Delete

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _

xlBetween, Formula1:= _

"=DECALER(Paramètres!$G$2;0;0;NBVAL(Paramètres!$G:$G)-1)"

.IgnoreBlank = True

.InCellDropdown = True

.InputTitle = ""

.ErrorTitle = ""

.InputMessage = ""

.ErrorMessage = ""

.ShowInput = True

.ShowError = True

End With

Curieusement, l'exécution de la macro ainsi générée donne un message d'erreur (1004 Erreur définie par l'application ou par l'objet).

Quelqu'un en connait-il la raison ?

D'avance merci

bonjour,

Essaie de rajouter

Worsheets("blabla").Range("I2:I10").Select

EDIT :

Ou encore :

With Worsheets("blabla").("I2:I10").Validation

.Delete

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _

xlBetween, Formula1:= _

"=DECALER(Paramètres!$G$2;0;0;NBVAL(Paramètres!$G:$G)-1)"

.IgnoreBlank = True

.InCellDropdown = True

.InputTitle = ""

.ErrorTitle = ""

.InputMessage = ""

.ErrorMessage = ""

.ShowInput = True

.ShowError = True

End With

A+

Bonsoir Galopin01

Non, Non, pas mieux.

C'est la dessus qu'il bute :

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _

xlBetween, Formula1:= _

"=DECALER(Paramètres!$G$2;0;0;NBVAL(Paramètres!$G:$G)-1)"

Merci quand même.

Bonjour,

à tester,

Sub test()
Dim ws As Worksheet, rng As Range
Set ws = ThisWorkbook.Worksheets("Feuil6")
Set rng = ws.Range("I2:I10")

With rng.Validation
    .Delete 'delete previous validation
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
        Formula1:="=OFFSET(Paramètres!$G$2,,,COUNTA(Paramètres!$G:$G)-1)"
End With
End Sub

Bonsoir i20100

Résultat impeccable.

Je ne sais toujours pas pourquoi cela ne fonctionne pas avec DECALER, mais ton code avec OFFSET marche parfaitement.

Encore un truc appris ici.

Merci beaucoup et bonne soirée.

Merci pour ce retour,

Formula implique d'écrire la formule en anglais (dans la langue du vba) aussi en remplaçant les ; par des ,

Lorsque que l'argument FormulaLocal est disponible, on peut écrire la formule dans la langage indiquer au panneaux de configuration.

Rechercher des sujets similaires à "liste validation dynamique"