OVH Cloud OVH Cloud

liste déroulante d'après une colonne

3 réponses
Avatar
Serge Hipontoise
Bonsoir
Grâce à votre aide, j'avance dans mon appli et je vous en remercie encore.
J'ai une colonne dans laquelle j'ai x occurences de plusieurs noms
différents
lorsque je fais un filtre auto, j'ai une liste déroulante avec les noms
triés dans l'ordre alpha.
Serait-il possible de lancer une boite de dialogue avec un menu déroulant
reprenant selon le même principe la liste des noms (une seule occurence
donc) de la colonne spécifiée ?
Le but étant bien sur de récupérer le nom en variable pour utilisation
ultérieure...
Un grand merci d'avance
Serge

3 réponses

Avatar
docm
Bonsoir Serge Hipontoise.

'Supposons que la liste se trouve en A2:A12

Dans un module :

Sub Macro2()

Range("A2:A12").Select
'Classer la selection
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom

UserForm1.Show
End Sub


Dans un Userform contenant un ListBox servant de menu déroulant:

Private Sub ListBox1_Click()
'Sélectionner un item par un clic sur la Listbox.
'Afficher l'item sélectionné
MsgBox ListBox1.List(ListBox1.ListIndex)
End Sub

Private Sub UserForm_Activate()
For Each c In Selection
If c.Value <> precedent Then
UserForm1.ListBox1.AddItem c.Value
End If
precedent = c.Value
Next
End Sub

Salutations.

"Serge Hipontoise" wrote in message
news:419a6687$0$13753$
Bonsoir
Grâce à votre aide, j'avance dans mon appli et je vous en remercie encore.
J'ai une colonne dans laquelle j'ai x occurences de plusieurs noms
différents
lorsque je fais un filtre auto, j'ai une liste déroulante avec les noms
triés dans l'ordre alpha.
Serait-il possible de lancer une boite de dialogue avec un menu déroulant
reprenant selon le même principe la liste des noms (une seule occurence
donc) de la colonne spécifiée ?
Le but étant bien sur de récupérer le nom en variable pour utilisation
ultérieure...
Un grand merci d'avance
Serge




Avatar
Serge Hipontoise
Merci beaucoup pour ta réponse
La liste filtrée apparaît bien dans la listbox. Malheureusement deux petits
problèmes :
1. ma colonne A se retrouve reclassée dans l'ordre des noms qui s'y trouvent
et ceux-ci sont assemblés les uns derrière les autres, ce qui ne doit pas
arriver, l'ordre des ligne doit rester inchangé
2. Bizarrement la celllule A2 n'est pas ,elle, reclassée

Merci
Serge


"docm" a écrit dans le message de news:

Bonsoir Serge Hipontoise.

'Supposons que la liste se trouve en A2:A12

Dans un module :

Sub Macro2()

Range("A2:A12").Select
'Classer la selection
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom

UserForm1.Show
End Sub


Dans un Userform contenant un ListBox servant de menu déroulant:

Private Sub ListBox1_Click()
'Sélectionner un item par un clic sur la Listbox.
'Afficher l'item sélectionné
MsgBox ListBox1.List(ListBox1.ListIndex)
End Sub

Private Sub UserForm_Activate()
For Each c In Selection
If c.Value <> precedent Then
UserForm1.ListBox1.AddItem c.Value
End If
precedent = c.Value
Next
End Sub

Salutations.

"Serge Hipontoise" wrote in message
news:419a6687$0$13753$
Bonsoir
Grâce à votre aide, j'avance dans mon appli et je vous en remercie
encore.
J'ai une colonne dans laquelle j'ai x occurences de plusieurs noms
différents
lorsque je fais un filtre auto, j'ai une liste déroulante avec les noms
triés dans l'ordre alpha.
Serait-il possible de lancer une boite de dialogue avec un menu déroulant
reprenant selon le même principe la liste des noms (une seule occurence
donc) de la colonne spécifiée ?
Le but étant bien sur de récupérer le nom en variable pour utilisation
ultérieure...
Un grand merci d'avance
Serge








Avatar
docm
Bonjour Serge Hipontoise.

Si l'ordre des lignes doit rester inchangé, alors essaie ceci:

Sub Macro2()

Range("A2:A12").Select
UserForm1.Show

End Sub


Private Sub UserForm_Activate()
precedent = Chr(9)
ListBox1.Clear
For Each c In Selection
If InStr(precedent, Chr(9) & c.Value & Chr(9)) = 0 Then
UserForm1.ListBox1.AddItem c.Value
precedent = precedent & c.Value & Chr(9)
End If
Next
End Sub

Private Sub ListBox1_Click()
'Sélectionner un item par un clic sur la Listbox.
'Afficher l'item sélectionné
MsgBox ListBox1.List(ListBox1.ListIndex)
End Sub

Docm

"Serge Hipontoise" wrote in message
news:419cd62b$0$4364$
Merci beaucoup pour ta réponse
La liste filtrée apparaît bien dans la listbox. Malheureusement deux
petits

problèmes :
1. ma colonne A se retrouve reclassée dans l'ordre des noms qui s'y
trouvent

et ceux-ci sont assemblés les uns derrière les autres, ce qui ne doit pas
arriver, l'ordre des ligne doit rester inchangé
2. Bizarrement la celllule A2 n'est pas ,elle, reclassée

Merci
Serge


"docm" a écrit dans le message de news:

Bonsoir Serge Hipontoise.

'Supposons que la liste se trouve en A2:A12

Dans un module :

Sub Macro2()

Range("A2:A12").Select
'Classer la selection
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes,
_


OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom

UserForm1.Show
End Sub


Dans un Userform contenant un ListBox servant de menu déroulant:

Private Sub ListBox1_Click()
'Sélectionner un item par un clic sur la Listbox.
'Afficher l'item sélectionné
MsgBox ListBox1.List(ListBox1.ListIndex)
End Sub

Private Sub UserForm_Activate()
For Each c In Selection
If c.Value <> precedent Then
UserForm1.ListBox1.AddItem c.Value
End If
precedent = c.Value
Next
End Sub

Salutations.

"Serge Hipontoise" wrote in message
news:419a6687$0$13753$
Bonsoir
Grâce à votre aide, j'avance dans mon appli et je vous en remercie
encore.
J'ai une colonne dans laquelle j'ai x occurences de plusieurs noms
différents
lorsque je fais un filtre auto, j'ai une liste déroulante avec les noms
triés dans l'ordre alpha.
Serait-il possible de lancer une boite de dialogue avec un menu
déroulant



reprenant selon le même principe la liste des noms (une seule occurence
donc) de la colonne spécifiée ?
Le but étant bien sur de récupérer le nom en variable pour utilisation
ultérieure...
Un grand merci d'avance
Serge