dammex
Messages postés31Date d'inscriptionjeudi 22 juillet 2010StatutMembreDernière intervention14 février 2017
-
5 nov. 2012 à 21:36
dammex
Messages postés31Date d'inscriptionjeudi 22 juillet 2010StatutMembreDernière intervention14 février 2017
-
6 nov. 2012 à 02:20
Bonsoir,
je souhaite écrire une procédure dont le rôle de celle-ci est de créer une liste déroulante dans une cellule préalablement sélectionnée. En d'autres termes, je souhaite que la cellule "A1" de ma feuille "Feuille1" devienne une liste déroulante dont les données sont contenues sur une autre feuille (Feuille2).
Voici le code actuel:
Private Sub Verification_Liste()
Sheets("Feuille1").Select
ActiveSheet.Range("E11").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation, Operator:=xlBetween, Formula1:="=MFC!L(-8)C(5):L(22)C(5)"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = False
.ShowError = False
End With
End Sub
Lors de l'exécution de ce code, le message "Erreur d'exécution 1004 : Erreur définie par l'application ou par l'objet" apparaît. J'ai tenté plusieurs changements dans ce code mais aucun n'a fonctionné ! Pourtant, à la base ce code provient de l'enregistreur de macro de mon fichier excel
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 6 nov. 2012 à 00:44
Salut,
en plus de la remarque de Charles Racaud, j'ajouterai que:
on ne peut pas créer une liste de validation sur une feuille à partir d'une plage de cellule d'une autre feuille !!!
Rien à voir avec le VBA c'est un basic d'excel !
Il existe une solution qui consiste à passer par une plage nommée.
Private Sub Verification_Liste()
On Error Resume Next
Debug.Print ActiveWorkbook.Names("MaListe").Index
If Not Err = 0 Then ActiveWorkbook.Names.Add Name:="MaListe", RefersTo:="=Feuille2!$E$3:$E$33"
On Error GoTo 0
With Sheets("Feuille1").Range("E11").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation, Operator:=xlBetween, Formula1:="=MaListe"
End With
End Sub
Ca vient de la Formula1
Remplace par "=Feuille2!R8C5:R22C5" si c'est bien les lignes 8 à 22 de la colonne E que tu souhaite.
Étrange que qu'il t'ai généré ça, je n'ai pas réussit à le faire régénérer ainsi. Peut être que c'est comme ça sur la version française d'Excel.