Remplir puces, combobox et textbox les uns par rapport aux autres

alfabidou Messages postés 2 Date d'inscription samedi 28 août 2010 Statut Membre Dernière intervention 6 septembre 2010 - 28 août 2010 à 17:50
alfabidou Messages postés 2 Date d'inscription samedi 28 août 2010 Statut Membre Dernière intervention 6 septembre 2010 - 6 sept. 2010 à 16:10
Bonjour à tous,

après de nombreuses recherches sur le net, et peu de résultats probant je me tourne vers vous pour avoir une solution.
voilà j'ai une feuille excel avec 7 colonnes. Les valeurs de chaque colonne sont affichée en cascade et est actuellement affiché dans des combobox (grace à un code que j'ai trouvé sur un site, peut-être ici, écrit par quelqu'un je remerci mais dont j'ai pas pris le nom, merci totu de même).
Seulement la combobox 1 et 2 donne le choix que pour 2 et 3 valeurs (c'est moche!!!), je souhaiterait utiliser des puces d'option en gardant le fonctionnement actuel.
Et la deuxième demande concerne la combobox de la dernière colonne, elle affiche les valeurs possibles selon la combobox listeparam, je voudrait changer et afficher toutes les valeurs possibles dans la textbox listevaleur.

voici le code:

'colonne 1: puceprepa ou pucesimul
'colonne 2: puceelec ou puceprop ou pucesecu
'colonne 3: combobox listeimage
'colonne 4: combobox listeinstal
'colonne 5: combobox listesousinstal
'colonne 6: combobox listeparam
'colonne 7: textbox listevaleur

Option Explicit
Function SetList(this As ComboBox, _
S_Top As Integer, _
S_Left As Integer, _
S_Fl As Byte, _
PARAMETRES As String, _
ParamArray params() As Variant)
'this listeimage : ComboBox de sortie
'S_Top : ligne de debut de plage
'S_Left : colonne de debut de plage
'S_Fl : nombre de champs
'Feuille (parametres) : nom de Feuille
'params: reqete
Dim sCol As New Collection, stmps As String
Dim j As Long, sRow As Long
Dim b As Long
Dim tops As Integer, lefts As Integer
Dim zt As Integer
Dim tp As Integer, paramid As Integer
Dim Refs As Byte, p As Byte
Dim elem As Variant
Dim setfind As Boolean




With Worksheets(PARAMETRES) ' ------------ traitement des listes du tableau sans prise en compte des formes ou listes
this.Clear
this.Text = ""
sRow = .Cells(Rows.Count, S_Left).End(xlUp).Row
Refs = 80
setfind = True
tops = S_Top + Refs
lefts = S_Left + (S_Fl - 1)
If IsMissing(params) Then
paramid = -1
Else
paramid = UBound(params)
End If
ReDim Tableau(Refs)
For b = S_Top - 1 To sRow Step Refs
Tableau = .Range(.Cells(S_Top, S_Left), .Cells(tops, lefts)).Offset(b, 0).value
For zt = 1 To Refs
setfind = True
For tp = 0 To paramid
If (params(tp) <> Tableau(zt, tp + 1) And params(tp) <> "*") Then
setfind = False
Exit For
End If
Next
If setfind Then
stmps = Tableau(zt, paramid + 2)
If stmps <> "" Then
On Error Resume Next
sCol.Add stmps, CStr(stmps)
Err.Clear
End If
End If
Next
Next
End With
If sCol.Count > 0 Then
ReDim ss(sCol.Count - 1, 0)
j = 0
For Each elem In sCol
ss(j, 0) = elem
j = j + 1
Next
this.List = ss
SetList = sCol.Count
Else
SetList = 0
End If
End Function


Private Sub Frame2_Click()

End Sub

Private Sub UserForm_Initialize()
If SetList(listemode, 2, 1, 7, "PARAMETRES") > 1 Then ' listemode.AddItem "*"
End If
End Sub

Private Sub listemode_Change()
If SetList(listedomaine, 2, 1, 7, "PARAMETRES", listemode.value) > 1 Then
'listedomaine.AddItem "*"
End If
listedomaine_Change
End Sub

Private Sub listedomaine_Change()
If SetList(listeImage, 2, 1, 7, "PARAMETRES", listemode.value, listedomaine) > 1 Then
'listeImage.AddItem "*"
End If
listeimage_Change
End Sub

Private Sub listeimage_Change()
If SetList(listeinstal, 2, 1, 7, "PARAMETRES", listemode.value, listedomaine, listeImage.value) > 1 Then
'listeinstal.AddItem "*"
End If
listeinstal_Change
End Sub


Private Sub listeinstal_Change()
If SetList(listesousinstal, 2, 1, 7, "PARAMETRES", listemode.value, listedomaine, listeImage.value, listeinstal.value) > 1 Then
'listesousinstal.AddItem "*"
End If
listesousinstal_Change
End Sub


Private Sub listesousinstal_Change()
If SetList(listeparam, 2, 1, 7, "PARAMETRES", listemode.value, listedomaine, listeImage.value, listeinstal.value, listesousinstal.value) > 1 Then
'listeparam.AddItem "*"
End If
listeparam_Change
End Sub


Private Sub listeparam_Change()
Call SetList(listevaleur, 2, 1, 7, "PARAMETRES", listemode.value, listedomaine, listeImage.value, listeinstal.value, listesousinstal.value, listeparam.value)
End Sub



Private Sub retour_Click()
Unload param1
accueil.Show (0)
End Sub

j'espere que je suis assez clair.

Merci à tous les programmeurs qui donnent leurs codes!!

1 réponse

alfabidou Messages postés 2 Date d'inscription samedi 28 août 2010 Statut Membre Dernière intervention 6 septembre 2010
6 sept. 2010 à 16:10
Bonjour,

Je suis très surpris de ne pas avoir de réponses à ma demande d'aide. Si quelqu'un s'est penché sur ma question mais n'a rien compris ou si je me fourvoie complètement, n'hésitez pas à me prévenir et me poser des questions.
J'espère avoir plus d'aide. je vous remercie.


Merci à tous les programmeurs qui donnent leurs codes!!
0
Rejoignez-nous