Je rajoute la commande - 1 car les Index partent de 0.
Si ListCount = 2, pour avoir les valeurs, c'est .List(0) & .List(1)
Pour ton autre problème, là je sèche.
Mais en tout cas, avec des noms en dur (Combobox1), mon code fonctionne.
Bon courage,
++
Version imprimable
Je rajoute la commande - 1 car les Index partent de 0.
Si ListCount = 2, pour avoir les valeurs, c'est .List(0) & .List(1)
Pour ton autre problème, là je sèche.
Mais en tout cas, avec des noms en dur (Combobox1), mon code fonctionne.
Bon courage,
++
ok mortalino je vais tenter d' appliquer le code tri avec le code procedure d ' ouskel' nor :D
en fait mon tableau commence a partir de la colonne c dans ma feuille excel :Citation:
Envoyé par SilkyRoad
'Colonne C ---> cbox1
'Colonne D ---> cbox2
'Colonne E ---> cbox3
'Colonne F ---> cbox4
Comment Faire Pour Qu'a Chaque Fois Que Je Click Sur Une Combobox Celle Ci Soit Trier ?
bonsoir
?????Citation:
Comment Faire Pour Qu'a Chaque Fois Que Je Click Sur Une Combobox Celle Ci Soit Trier ?
En général un ComboBox est trié lors de son remplissage.
Quel est l'intéret d'effectuer un tri lors de l'évenement Click?
bonne soirée
michel
en fait moi j' utilise la fonction combobox pour faire une consultation d' une base de données sur excel
je joins mon fichier pour mieux me faire comprendre
j' ai lié plusieurs combobox afin d'editer une fiche avec toute les valeurs de chaques combobox grace au combobox list index
je truc en plus que je tente de mettre en place c'est un tri pour chaque combobox
MAIS AVEC 1 J'AI UNE ERREUR 381 :aie: :aie:
COMMENT ADAPTER CE CODE?SACHANT QUE MON TABLEAU COMMENCE A COMPTER DE LA COLONNE CCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 'Les données à aficher dans les combobox sont contenues 'dans les colonnes A à D. 'Colonne A ---> cbox1 'Colonne B ---> cbox2 'Colonne C ---> cbox3 'Colonne D ---> cbox4 Dim m As Byte Dim j As Integer, i As Integer, x As Integer Dim Temp As String 'boucle pour remplir les combobox For m = 1 To 4 x = Cells(65536, m).End(xlUp).Row 'Remplissage combobox Me.Controls("cbox" & m).List() = _ Range(Cells(1, m), Cells(x, m)).Value 'Tri croissant dans les ComboBox With Me.Controls("cbox" & m) For i = 0 To .ListCount - 1 For j = 0 To .ListCount - 1 If .List(i) < .List(j) Then Temp = .List(i) .List(i) = .List(j) .List(j) = Temp End If Next j Next i End With Next m End Sub
COLONE C = CBOX 1
Autant pour moi. J'ai relu quelques post en arrière.
Je reparts sur l'erreur 381. Il serait plus confortable pour le lecteur que tu indiques l'erreur et non son N°. Ainsi tout le monde comprendrait tout de suite que tu as oublié un bout.
Je reste sur cette erreur, ta question suivante soulève d'autres problèmes. On verra plus tard.
On t'a précédemment précisé que pour utiliser une variable contrôle tu devais l'utiliser en indiquant ce qu'elle représente
Commence par corriger ça :
Et commence par dire ce que tu obtiensCode:
1
2
3
4
5
6
7
8
9
10
11 ReDim MyData(GRILLE.Controls(lecontrol.Name).ListCount) For i = 0 To GRILLE.Controls(lecontrol.Name).ListCount-1 MyData(i) = GRILLE.Controls(lecontrol.Name).List(i) Next i Call Tri(MyData) GRILLE.Controls(lecontrol.Name).Clear For i = 0 To UBound(MyData) GRILLE.Controls(lecontrol.Name).AddItem MyData(i) Next i Erase MyData
en aplliquant les modifications ci dessus j' ai sur le codel'erreur d' execution errur non repertoriee ( 80004005) :roll:Code:GRILLE.Controls(lecontrol.Name).Clear
Et si tu vérifies "lecontrol.Name" qu'y a-t-il dedans ? (Balade ta souris dessus)
je vois rien sur lecontrol.name mais i=34 c space non j'ai que 23 combobox:aie:Citation:
Envoyé par ouskel'n'or
Quand tu as un bug, la macro s'arrête sur une ligne et si tu balades ta souris sur les variables, tu as une infobulle qui te donne ce qu'il y a dedans... Ça c'est pour ceux qui ne savent pas utiliser Debug.print
Pour toi, ajoute, avant la ligne qui bugue,
et dans l'éditeur VB, tu vas dans "Affichage" et valide "Fenêtre exécution"Code:Debug.print Lecontrole.name
Faut comprendre que je n'ai pas ton appli et que je ne comprends pas (du tout) ton pb ;)
A+
oui je tente le debug print mais rien ne se passe
Si, moi j'ai un gros bug parce que tu as mis un e à la fin de Lecontrol :aie:Citation:
Envoyé par Tu
Une fois enlevé, j'ai Cbox4 dans la fenêtre exécution
Je regarde ton appli mais sois patient, on m'appelle "A TABLE !"
A+
yes je rectifie et cbox4 pose probleme :aie: :aie:
:frenchy: bon appp... :frenchy:
ta raison il fais faimmm !!!!!!!!:mouarf:
Déjà un élément de réponse : Tu utilises d'un côté "RowSouce" et de l'autre AddItem. Déjà, on sait qu'on ne peut pas compléter une liste, renseignée avec rowSource, avec AddItem. C'est ou l'un ou l'autre.
J'ai l'impression, en première analyse, que ton combo refuse le clear, qu'accepterait un combo chargé avec Additem, pour cette même raison.
Quant à le renseigner avec Additem ensuite...
Pour que les modifs que je pourrais faire, j'ai besoin que tu modifies ces lignes en excluant RowSource pour définir la plage.
Ça m'évitera de chercher, d'autant que je ne comprends pas pourquoi tu fais ça :aie:Code:
1
2
3
4
5
6
7 Private Sub cbox1_change() Dim c As Range 'La cellule If cbox1.ListIndex >= 0 Then 'Set c = Range(cbox1.RowSource).Cells(cbox1.ListIndex + 1) 'c.Activate End If End Sub
A+
NB - Si on ne peut pas utiliser AddItem dans une liste utilisant déjà RowSource, on peut changer la plage de référence.
NB2 - Pourquoi n'effectue ton classement dans un tableau plutôt qu'en passant pas la listbox ? Un tableau peut s'utiliser comme une plage avec RowSource ?
En fait j'utilise ce code pour me placer sur la ligne qui contient la valeur selectionnee dans mes combobox.....
Va pour add item si c plus simple :mouarf:
J avais remarque qu'avec rowsource je ne pouvez pas ajouter directement une nouvelle saisie alors si add item marche ça serait TROP FORT:king: :king: :king:
Et lis les règles du forum : On écrit en minuscules :mouarf:
avec des add item les combobox seront aussi liées ?:oops: