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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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