Combobox

  • Initiateur de la discussion Christine
  • Date de début
C

Christine

Guest
Bonsoir,

Voici mon gros problème et probablement un petit pour vous : j'ai trois combobox et je dois relier chaque combobox entre eux, i.e. que lorsque je sélectionne une donnée dans le permier combobox, dans le deuxième, seul les données ayant un lien avec le premier doit apparaitre et de même pour le troisième.

Ex.:

a BB 1
a CC 2
b DD 3
b EE 4
c FF 5
c GG 6

Lorsque je choisi dans le premier combox a, le deuxième me donne comme possibilité BB et CC et si je choisi BB alors je n'ai comme possibilité 1.

En fouillant, voici ce que j'ai trouvé :

Private Sub UserForm_Initialize()
Dim L As Integer
Dim F As Integer
Dim P1 As New Collection, P2 As New Collection, P3 As New Collection

With Worksheets('Feuil1')
Tbl = Range('A2:C' & .Range('C65536').End(xlUp).Row)
End With

For L = 1 To UBound(Tbl, 1)
If Tbl(L, 1) <> '' Then
On Error Resume Next
P1.Add Tbl(L, 1), CStr(Tbl(L, 1))
On Error GoTo 0
End If

If Tbl(L, 2) <> '' Then
On Error Resume Next
P2.Add Tbl(L, 2), CStr(Tbl(L, 2))
On Error GoTo 0
End If

If Tbl(L, 3) <> '' Then
On Error Resume Next
P3.Add Tbl(L, 3), CStr(Tbl(L, 3))
On Error GoTo 0
End If
Next L

For Each item In P1
ComboBox1.AddItem item
Next item

For Each item In P2
ComboBox2.AddItem item
Next item

For Each item In P3
ComboBox3.AddItem item
Next item

End Sub

Est-ce qu'une âme charitable pourrait me dépanner ?

Merci beaucoup pour le temps que vous prendrez à m'aider.

Christine
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Christine, le Forum

Les codes que tu utilises servent à indiquer une valeur unique (sans doublon) dans chaque ComboBox.

Mais en aucun cas les comboBox sont 'Liées' entre-elles.

Regarde cette démo si celà peut être plus approchant de ce que tu cherches à faire...

=> Lien supprimé

Bonne Soirée
[ol]@+Thierry[/ol]
 
C

Christine

Guest
Bonsoir Thierry, le Forum,

J'ai refait le code en fonction de mes critères mais lorsque je déroule le combobox2 il n'y a rien. Pourtant dans l'exemple cela fonctionne bien. J'ai alors fait un copier-coller dans la fichier exemple et j'ai le même problème.

Une idée.

Merci
 

_Thierry

XLDnaute Barbatruc
Repose en paix
RE bonsoir Christine, le Forum

Voici les éléments indispensable au Fonctionnement :

Private TabPlage As Variant

Private Sub UserForm_Initialize()
Dim i As Integer
Dim ColBase1 As New Collection
Dim Item As Variant
Dim X As Byte

Me.Caption = T
&nbsp; &nbsp;
&nbsp; &nbsp;
For X = 1 To 5
&nbsp; &nbsp; &nbsp; &nbsp; Me.Controls('ComboBox' & X).Style = fmStyleDropDownList
&nbsp; &nbsp;
Next
&nbsp; &nbsp;
&nbsp; &nbsp;
With Database
&nbsp; &nbsp; &nbsp; &nbsp; TabPlage = .Range('A2:E' & .Range('A65536').End(xlUp).Row)
&nbsp; &nbsp;
End With

On Error Resume Next
&nbsp; &nbsp;
For i = 1 To UBound(TabPlage)
&nbsp; &nbsp; &nbsp; &nbsp; ColBase1.Add TabPlage(i, 1), TabPlage(i, 1)
&nbsp; &nbsp;
Next
On Error GoTo 0

&nbsp; &nbsp;
For Each Item In ColBase1
&nbsp; &nbsp; &nbsp; &nbsp; Me.ComboBox1.AddItem Item
&nbsp; &nbsp;
Next

End Sub

Private Sub ComboBox1_Change()
ComboBoxing 2
End Sub
Private Sub ComboBox2_Change()
ComboBoxing 3
End Sub
Private Sub ComboBox3_Change()
ComboBoxing 4
End Sub
Private Sub ComboBox4_Change()
ComboBoxing 5
End Sub


Private Sub ComboBoxing(Num As Byte)
Dim i As Integer
Dim ColBaseX As New Collection
Dim Item As Variant
Dim X As Byte


&nbsp; &nbsp;
For X = Num To 5
&nbsp; &nbsp; &nbsp; &nbsp; Me.Controls('ComboBox' & X).Clear
&nbsp; &nbsp;
Next

On Error Resume Next
&nbsp; &nbsp;
For i = 1 To UBound(TabPlage)
&nbsp; &nbsp; &nbsp; &nbsp;
If TabPlage(i, Num - 1) = Me.Controls('ComboBox' & Num - 1) Then
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ColBaseX.Add TabPlage(i, Num), TabPlage(i, Num)
&nbsp; &nbsp; &nbsp; &nbsp;
End If
&nbsp; &nbsp;
Next
On Error GoTo 0

&nbsp; &nbsp;
For Each Item In ColBaseX
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Me.Controls('ComboBox' & Num).AddItem Item
&nbsp; &nbsp;
Next
End Sub


Ce qui peut être une cause ...

1) Feuille Database, Dans le Code de la Démo ci-dessus c'est le nom d'Object Sheet et non le Nom d'onglet... Correction Possible :

&nbsp; &nbsp; With Sheets('Database')
&nbsp; &nbsp; &nbsp; &nbsp; TabPlage = .Range('A2:E' & .Range('A65536').End(xlUp).Row)
&nbsp; &nbsp;
End With


2) Variable Public Niveau Module 'TabPlage' qui doit être déclarée en dehors de toute procédure en Top de Module...

'TOP DE MODULE DU USERFORM
Option Explicit

Private TabPlage As Variant

Sinon il faut qu'il ne manque rien d'autre non plus, y compris le passage de paramètre ...

Private Sub ComboBox1_Change()
ComboBoxing 2
End Sub

Private Sub ComboBoxing(Num As Byte)

Sinon je ne vois pas, poste un exemple de ton fichier zippé, moins de 50 Ko, pas d'espace ni d'accents etc dans le nom, pas de donnée confidentielle...

Bonne Nuit
[ol]@+Thierry[/ol]
 
C

Christine

Guest
Bonne nuit Thierry. le forum,

J'ai fait les modifs tel conseillé et j'ai le même probl.

Le deuxième combobox demeure vide ?

J'inclus un fichier pour tester.

Merci [file name=Thierry_20050810015850.zip size=9636]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Thierry_20050810015850.zip[/file]
 

Pièces jointes

  • Thierry_20050810015850.zip
    9.4 KB · Affichages: 19

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Christine, Romika

Il y avait plusieurs trucs qui n'allaient pas...

Voilà ton fichier corrigé.

Bonne Journée suis à la bourre
[ol]@+Thierry[/ol] [file name=Thierry_Correccted.zip size=11593]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Thierry_Correccted.zip[/file]
 

Pièces jointes

  • Thierry_Correccted.zip
    11.3 KB · Affichages: 34

Discussions similaires

Statistiques des forums

Discussions
312 584
Messages
2 089 977
Membres
104 323
dernier inscrit
NabBEn