VBA - Liste de choix - DECALER
Bonjour,
Je vous écris concernant une erreur VBA que je recontre, lors de la création par une macro d'une liste de choix déroulante.
Explication :
Je commence l'enregistrement de ma macro, je vais successivement dans :
Données / validation des données /
Dans l'onglet Options, j'autorise Liste, et dans la textbox Source, je met le code suivant :
Code:
=DECALER(Feuil2!A1;1;0;3;1)
La liste est bien créée, et est fonctionnelle.
J'arrête l'enregistrement de ma macro, le code source suivant à été généré :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Sub Macro5()
'
' Macro5 Macro
'
'
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=DECALER(Feuil2!A1;1;0;3;1)"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub |
Sans rien changer au code généré par Excel, je sélectionne une autre cellule, et je lance ma macro.
J'obtiens alors une belle erreur :
Citation:
Erreur d'exécution '1004':
Erreur définie par l'application ou par l'objet
Je clique sur "débogage", et la ligne en cause est la suivante :
Code:
1 2
| .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=DECALER(Feuil2!A1;1;0;3;1)" |
Alors que ce code a lui même été généré par Excel !
Après des heures de recherche, j'ai essayé de remplacer DECALER par OFFSET, ça ne marche pas.
J'ai aussi essayé cette syntaxe :
Code:
1 2
| Selection.Validation.Delete
Selection.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="=DECALER(Feuil2!A1;1;0;3;1)" |
Qui ne fonctionne pas non plus...
Par contre, en remplaçant la ligne en cause par :
Code:
1 2
| .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=A1:C1" |
,
Alors là ça fonctionne, donc le problème doit venir de ma formule.
Mais je ne vois pas d'où, car quand je met la même formule dans la source de Données de validation, sans passer par une macro, la formule fonctionne parfaitement.
Ce qui ne va pas, c'est l'utilisation de la formule, au sein du VBA.
J'en perd mon latin, merci de m'aider !