Création d'une liste déroulante dans une cellule sélectionnée [Résolu]

Messages postés
31
Date d'inscription
jeudi 22 juillet 2010
Statut
Membre
Dernière intervention
14 février 2017
- - Dernière réponse : dammex
Messages postés
31
Date d'inscription
jeudi 22 juillet 2010
Statut
Membre
Dernière intervention
14 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

Merci d'avance pour votre aide
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
3
Merci
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


A+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de bigfish_le vrai
Messages postés
31
Date d'inscription
jeudi 22 juillet 2010
Statut
Membre
Dernière intervention
14 février 2017
1
0
Merci
Une petite erreur s'est glissée dans cette adaptation de mon code... le code correct est celui-ci.

Private Sub Verification_Liste()

Sheets("Feuille1").Select
ActiveSheet.Range("E11").Select
   With Selection.Validation
      .Delete
      .Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation, Operator:=xlBetween, Formula1:="=Feuille2!L(-8)C(5):L(22)C(5)"
       .IgnoreBlank = True
       .InCellDropdown = True
       .InputTitle = ""
       .ErrorTitle = ""
       .InputMessage = ""
       .ErrorMessage = ""
       .ShowInput = False
       .ShowError = False
    End With
End Sub


Merci encore
Commenter la réponse de dammex
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
24
0
Merci
Bonsoir,

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.


_____________
Kenji
Commenter la réponse de Charles Racaud
Messages postés
31
Date d'inscription
jeudi 22 juillet 2010
Statut
Membre
Dernière intervention
14 février 2017
1
0
Merci
Super, ca fonctionne parfaitement!

Je n'aurai définitivement pas trouvé seul...

MERCI
Commenter la réponse de dammex