OVH Cloud OVH Cloud

Formulaire

1 réponse
Avatar
Sébastien WICKER
Bonjour

Comment faire en VBA pr qu'un formulaire contienne une liste déroulante ?
Mais que les différents possibilités contenues ds la liste déroulante
proviennent d'une zone nommée ds Excel
ex : zone nommée "Noms" contenant Alfred, Georges, Luc, André et Pierre

Ce Formulaire contient 2 boutons OK et Annuler :
- En appuyant sur OK, le nom sélectionner doit s'afficher en case D4 par
exemple
- En appuyant sur Annuler, rien ne doit se passer

Merci d'avance

1 réponse

Avatar
PMO
Bonjour,

Voici un exemple qui devrait résoudre votre problème.

Pour que ça fonctionne il faut:
1 zone nommée "Noms" éventuellement avec plusieurs colonnes (seule la 1ère
colonne sera considérée)
1 UserForm avec la propriété (Name) = "UserForm1"
1 CommandButton OK avec la propriété (Name) = "CommandButton1"
1 CommandButton Annuler avec la propriété (Name) = "CommandButton2"
1 ListBox avec la propriété (Name) = "ListBox1"

Dans un module général copiez le code suivant et changez la valeur
des constantes selon votre usage
La procédure ShowUserForm sera visible dans la boîte de macros et servira à
lancer le UserForm
*******************************
'### ADAPTER LES CONSTANTES A VOTRE USAGE ###
Public Const maFeuille As String = "Test"
Public Const maZoneNom As String = "Noms"
'############################################
Sub ShowUserForm()
UserForm1.Show
End Sub
*******************************

Dans le code du UserForm copiez les codes ci-dessous:
*******************************
'_______________________________
Private Sub UserForm_Activate()
Dim nbCol&
nbCol& = Sheets(maFeuille).Range(maZoneNom).Columns.Count
ListBox1.ColumnCount = nbCol&
ListBox1.RowSource = _
Sheets(maFeuille).Range(maZoneNom).Address
End Sub
'_______________________________
Private Sub CommandButton1_Click() 'OK
Sheets(maFeuille).Range("d4") = ListBox1.Text
Me.Hide
End Sub
'_______________________________
Private Sub CommandButton2_Click() 'Annuler
Me.Hide
End Sub
'_______________________________
Private Sub ListBox1_DblClick _
(ByVal Cancel As MSForms.ReturnBoolean)
Sheets(maFeuille).Range("d4") = ListBox1.Text
Me.Hide
End Sub
*******************************

A l'activation la ListBox est remplie par le contenu de la zone "Noms"
Click sur OK inscrit l'item sélectionné dans la cellule D4
DoubleClick dans la ListBox fait pareil que Click sur OK

Est-ce que ça vous convient ?

Cordialement.

PMO
Patrick Morange



Bonjour

Comment faire en VBA pr qu'un formulaire contienne une liste déroulante ?
Mais que les différents possibilités contenues ds la liste déroulante
proviennent d'une zone nommée ds Excel
ex : zone nommée "Noms" contenant Alfred, Georges, Luc, André et Pierre

Ce Formulaire contient 2 boutons OK et Annuler :
- En appuyant sur OK, le nom sélectionner doit s'afficher en case D4 par
exemple
- En appuyant sur Annuler, rien ne doit se passer

Merci d'avance