Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Liste déroulante en VBA

litelsousa

XLDnaute Occasionnel
Bonjour,

Comment fait-on en VBA pour qu'une liste déroulante contienne les différents noms d'une plage (se nommant en l'occurrence "Liste_instrument")?

Pour l'instant, j'utilise ça:

Private Sub UserForm_Initialize()
Me.Nom_instrument.RowSource = "Feuil1!A49:A56"
End Sub

Mais quand je rajoute des lignes plus haut que cette plage, ma liste déroulante ne contient plus ce que je veux.

J'aimerais changer "Feuil1!A49:A56" par "liste_instrument"

En espérant être compréhensible, je vous remercie pour votre aide.
 

JBARBE

XLDnaute Barbatruc
Re : Liste déroulante en VBA

Bonjour à tous,

J'avoue que j'ai beaucoup de mal à comprendre !

Ce qui est sûr, c'est que si l'on nome une plage "Feuil1!A49:A56" en "liste_instrument", si cette plage doit être modifiée (exemple :"Feuil1!A10:A56"), il faut également faire la modification de "liste_instrument" en "Feuil1!A10:A56" qui est restée "Feuil1!A49:A56" !!!

De la logique en quelque sorte !

bonne journée !
 

JBARBE

XLDnaute Barbatruc
Re : Liste déroulante en VBA

Re : Bonjour,

Peut-être comme ceci si j'ai bien compris :

Sub Action ()
Dim vCellule As Object
Load UserForm1

For Each vCellule In Sheets("Types").Range("liste_instrument")
If vCellule.value="" Then Exit For
UserForm1.CmbListeTypes.AddItem vCellule.value
Next

UserForm1.CmbListeTypes.ListIndex =0
UserForm1.Show
End Sub

A adapter aux différentes nominations du fichier !
voir fichier !
La Range("liste_instrument") a été sélectionnée de L9 à L19 ( pas de cellule vide en haut de la 1ere cellule )

@+
 

Pièces jointes

  • exemple_liste_déroulante.xls
    59.5 KB · Affichages: 44
  • exemple_liste_déroulante.xls
    59.5 KB · Affichages: 56
Dernière édition:

litelsousa

XLDnaute Occasionnel
Re : Liste déroulante en VBA

Je sais j'ai du mal à expliquer, c'est toujours mon soucis

Le truc, c'est que ma plage "Liste instrument" passe automatiquement de "Feuil1!A49:A56" en "Feuil1!A50:A57" si j'insère une ligne, par exemple après la ligne 10.

C'est pour cela que j'aimerais utiliser le nom "Liste_instrument" à la place de "Feuil1!A49:A56" dans le VBA.
 

JBARBE

XLDnaute Barbatruc
Re : Liste déroulante en VBA


Essai ceci !

voir fichier !
 

Pièces jointes

  • exemple_liste_déroulante.xls
    62.5 KB · Affichages: 49
  • exemple_liste_déroulante.xls
    62.5 KB · Affichages: 43
Dernière édition:

litelsousa

XLDnaute Occasionnel
Re : Liste déroulante en VBA

Oups, tu m'as devancé...

J'ai donc mis comme çac'est ma feuille User2Form)

Sub Action()
Dim vCellule As Object
Load UserForm1

For Each vCellule In Sheets("Types").Range("liste_instrument")
If vCellule.Value = "Feuil1!A49:A56" Then Exit For
UserForm2.CmbListeTypes.AddItem vCellule.Value
Next

UserForm2.CmbListeTypes.ListIndex = 0
UserForm2.Show
End Sub

mais ça ne donne rien
 

litelsousa

XLDnaute Occasionnel
Re : Liste déroulante en VBA

Non, je n'arrive pas.

Voilà ce que j'ai mis:


Je suis désolé, c'est mon premier essais avec le VBA
 

JBARBE

XLDnaute Barbatruc
Re : Liste déroulante en VBA


Erreur : If vCellule.Value = "Feuil1!A49:A56" Then Exit For il faut >> If vCellule.Value = " " Then Exit For

Et puis il faut suivre l'exemple du fichier en renommant la feuille et la liste déroulante s'il le faut !
 

litelsousa

XLDnaute Occasionnel
Re : Liste déroulante en VBA

Voilà,

C'est donc quand je clique sur "nouveau membre" et qu'il y a déjà une ligne de rajoutée... (pour l'instant je suis obligé de me mettre là ou j'insère les donné... Ce sera ma prochaine étape)
 

Pièces jointes

  • Test.xlsm
    31.4 KB · Affichages: 25
  • Test.xlsm
    31.4 KB · Affichages: 29

JBARBE

XLDnaute Barbatruc
Re : Liste déroulante en VBA

La ligne à rajouter ce fait automatiquement !

La référence des instruments est faite !

A tester !

@+
 

Pièces jointes

  • Test_macro.xlsm
    39.3 KB · Affichages: 49
  • Test_macro.xlsm
    39.3 KB · Affichages: 44
Dernière édition:

JBARBE

XLDnaute Barbatruc
Re : Liste déroulante en VBA

C'est parfait, Merci!!!!

Je l'ai remis sur la même feuille car le chef veut voir direct le nombre de présent...

En effet, je me suis permit de mettre le résultat en feuille 2 compte tenu que celle-ci allait gêner la saisie de la feuille 1

Néanmoins, Il convient de modifier ce qui est en gras !

Sub Nouveau_membre()
Dim vCellule As Object
Load UserForm2

For Each vCellule In Sheets("Feuil2").Range("liste_instrument")
If vCellule.Value = "" Then Exit For
UserForm2.Nom_instrument.AddItem vCellule.Value
Next

UserForm2.Nom_instrument.ListIndex = 0
UserForm2.Show
End Sub

Et d'adapter la référence : liste_instrument

bonne journée à tous !
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…