OVH Cloud OVH Cloud

Liste de choix

2 réponses
Avatar
Hugo
Bonjour,

Je repose ma question: j'aurais aime=20
savoir s'il =E9tait possible sous VBa de r=E9cup=E9rer les=20
donn=E9es propos=E9es par Excel lorsqu'on execute "Liste de=20
Choix" sur une cellule. La r=E9ponse qui m'a =E9t=E9 fournie=20
pour le moment consiste =E0 utiliser la propriete RowSource=20
d'une ComboBox mais je ne souhaite pas utiliser de Combo.=20
en effet, avec ces donn=E9es, je cherche uniquement =E0=20
remplir un tableau de variable d=E9clar=E9 sous VBa. J'espere=20
que vous me comprendrez.

Merci d'avance et bonne journ=E9e.

Hugo.

2 réponses

Avatar
Clément Marcotte
t'as eu une réponse 39 minutes après ta première question.


"Hugo" a écrit dans le message
de news:21f101c4279a$3e506700$
Bonjour,

Je repose ma question: j'aurais aime
savoir s'il était possible sous VBa de récupérer les
données proposées par Excel lorsqu'on execute "Liste de
Choix" sur une cellule. La réponse qui m'a été fournie
pour le moment consiste à utiliser la propriete RowSource
d'une ComboBox mais je ne souhaite pas utiliser de Combo.
en effet, avec ces données, je cherche uniquement à
remplir un tableau de variable déclaré sous VBa. J'espere
que vous me comprendrez.

Merci d'avance et bonne journée.

Hugo.
Avatar
Benead
Salut Hugo,

Pour répondre précisement à ta question, non il n'est pas possible de récupérer la "liste de choix" apparaissant lors d'un clic droit dans une cellule.
Par contre tu peux utiliser cette fonction qui te retourne un tableau résultant d'une sélection sans doublon et d'un éventuel tri.
La fonction possède deux arguments : Le premier est la plage de cellules pour générer ta liste de choix et le second est une valeur Boléeenne
facultative pour trier le tableau.
Dans mon exemple, j'ai mis le résultat dans un ListBox mais ce n'est pas obligatoire.

' ******** Dans le modude de l'UserForm
Private Sub UserForm_Initialize()
ListBox1.List = ListeChoix(ActiveSheet.UsedRange.Columns("A").Cells, True)
End Sub

' ******** Dans un modude standard
Function ListeChoix(Plage As Range, Optional Tri As Boolean = False) As Variant
Dim Doublon0 As New Collection, n As Long, m As Long, wcell As Range, TabChoix()
Dim StockageProv1 As Variant, StockageProv2 As Variant

On Error Resume Next
' Création de la collection des valeurs sans doublon
For Each wcell In Plage
If Not wcell = "" Then Doublon0.Add wcell.Text, CStr(wcell)
Next
' Tri des Items
If Tri Then
For m = 1 To Doublon0.Count - 1
For n = m + 1 To Doublon0.Count
If Doublon0(m) > Doublon0(n) Then
StockageProv1 = Doublon0(m)
StockageProv2 = Doublon0(n)
Doublon0.Add StockageProv1, , n
Doublon0.Add StockageProv2, , m
Doublon0.Remove m + 1
Doublon0.Remove n + 1
End If
Next
Next
End If
On Error GoTo 0
' Mise en place des valeurs dans un tableau (avant un éventuel chargement du ListBox ou ComboBox)
ReDim TabChoix(Doublon0.Count - 1)
For n = 1 To Doublon0.Count
TabChoix(n - 1) = Doublon0(n)
Next n
ListeChoix = TabChoix
End Function
' ***************************************

A+
Benead
Bretagne

Xl97

Hugo a écrit:
Bonjour,

Je repose ma question: j'aurais aime
savoir s'il était possible sous VBa de récupérer les
données proposées par Excel lorsqu'on execute "Liste de
Choix" sur une cellule. La réponse qui m'a été fournie
pour le moment consiste à utiliser la propriete RowSource
d'une ComboBox mais je ne souhaite pas utiliser de Combo.
en effet, avec ces données, je cherche uniquement à
remplir un tableau de variable déclaré sous VBa. J'espere
que vous me comprendrez.

Merci d'avance et bonne journée.

Hugo.