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

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

4 réponses

Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
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+
Messages postés
31
Date d'inscription
jeudi 22 juillet 2010
Statut
Membre
Dernière intervention
14 février 2017
1
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
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
26
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
Messages postés
31
Date d'inscription
jeudi 22 juillet 2010
Statut
Membre
Dernière intervention
14 février 2017
1
Super, ca fonctionne parfaitement!

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

MERCI