OVH Cloud OVH Cloud

RowSource de ComboBox

2 réponses
Avatar
chris.col
Peut-on, SVP, utiliser les données d'un tableau seulement en mémoire (sans
écriture sur aucune feuille) comme RowSource d'une ComboBox
Si oui, ex. de code VBA.
merci

accessoirement , Ex. de code VBA pour trier toujours en mémoire un tableau à
2 dimensions (200 lignes, 15 col)
avec choix possible de la colonne de ref. pour le tri.

Le tableau ne doit pas etre écrit sur une feuille.

re-merci.

2 réponses

Avatar
Denis Michon
Bonjour Chris,

Question 1

Oui si ton combobox provient de la barre d'outils "Contrôle" ou dans un formulaire

En utilisant un tableau (array)

'-------------------------
Sub MonCombobox()
Dim Tblo(1 To 10), A as Integer

For A = LBound(Tblo) To UBound(Tblo)
Tblo(A) = "Toto" & A
Next
Me.ComboBox1.List = Tblo

End Sub
'-------------------------


Question 2

En provenance du forum anglais . Réponse donnée par "tom Ogilvy"

Cette procédure trie sur la première colonne d'un tableau, Comme tu
vas l'adapter pour trier sur une colonne au choix, j'espère que tu publieras les
transformations apportées à la procédure pour la réalisation de ton projet...


'------------------------------------------------
Sub Test()

'Trier une plage ayant plusieurs colonnes
'sur la première colonne de cette plage

Worksheets("Feuil1").ComboBox1.Clear

varr = Range(Cells(1, 1), Cells(10, 3))

'Pour une plage ayant plusieurs colonnes
QuickSort2 varr, 1, LBound(varr, 1), UBound(varr, 1)

Worksheets("Feuil1").ComboBox1.List = varr


End Sub
'------------------------------------------------

Sub QuickSort2(SortArray, col, L, R)
'Originally Posted by Jim Rech 10/20/98 Excel.Programming
'Modified to sort on first column of a two dimensional array
'Modified to handle a a second dimension greater than 1 (or zero)
Dim i, j, X, Y, mm

i = L
j = R
X = SortArray((L + R) / 2, col)

While (i <= j)
While (SortArray(i, col) < X And i < R)
i = i + 1
Wend
While (X < SortArray(j, col) And j > L)
j = j - 1
Wend
If (i <= j) Then
For mm = LBound(SortArray, 2) To UBound(SortArray, 2)
Y = SortArray(i, mm)
SortArray(i, mm) = SortArray(j, mm)
SortArray(j, mm) = Y
Next mm
i = i + 1
j = j - 1
End If
Wend
If (L < j) Then Call QuickSort2(SortArray, col, L, j)
If (i < R) Then Call QuickSort2(SortArray, col, i, R)
End Sub
'------------------------------------------------


Salutations!




"chris.col" a écrit dans le message de news:3fb6468f$0$235$
Peut-on, SVP, utiliser les données d'un tableau seulement en mémoire (sans
écriture sur aucune feuille) comme RowSource d'une ComboBox
Si oui, ex. de code VBA.
merci

accessoirement , Ex. de code VBA pour trier toujours en mémoire un tableau à
2 dimensions (200 lignes, 15 col)
avec choix possible de la colonne de ref. pour le tri.

Le tableau ne doit pas etre écrit sur une feuille.

re-merci.
Avatar
garnote
Salut chris,

Supposons qu'une plage de cellules contiguës se
nomme «tableau». Cette macro met en mémoire
ledit tableau et donne l'élément contenu dans la
2ième ligne et 3ième colonne de «tableau»..

Sub Identifie_Élément_Tableau()
Set ici = Range("tableau")
MsgBox ici(2, 3)
End Sub

Serge


"chris.col" a écrit dans le message de news:
3fb6468f$0$235$
Peut-on, SVP, utiliser les données d'un tableau seulement en mémoire (sans
écriture sur aucune feuille) comme RowSource d'une ComboBox
Si oui, ex. de code VBA.
merci