gad311081
Messages postés53Date d'inscriptionlundi 18 février 2008StatutMembreDernière intervention31 mars 2008
-
25 mars 2008 à 15:46
gad311081
Messages postés53Date d'inscriptionlundi 18 février 2008StatutMembreDernière intervention31 mars 2008
-
26 mars 2008 à 11:19
Bonjour à tous,
Je répose ma question car l'ancienne n'était plus d'actualité car j'ai apporté modif...
Je fais appel à votre aide.
- Ref 1 à Ref3 Pour Fournisseurs 1: C14 à E14
- Ref 4 à Ref6 Pour Fournisseurs 2: F14 à H14
- Ref 7 à Ref9 Pour Fournisseurs 3: I14 à K14
...etc
Pour Info de viens d'ecrire quelques lignes qui se trouve à la fin du message, pour remplir mes combobox:
Inconvenients: Le fait d'avoir fait des cellules fusionnées pour mes fournisseurs, cela me créé des blancs dans ma liste de combobox.
1ere question: Comment faire pour que ces blancs(du fusionnement des celulles) n'apparaissent pas ?
2eme question: Comment faire pour que ma "combobox references" soit fonction de ma "combobox fournisseurs" c'est à dire qu'elle me donne seulement la liste des References de ce clients?
Comment puis faire pour que lorsque je selectionne mon diametre dans ma première combobox, cela detecte la bonne ligne de la colonne B.
Puis que je selectionne dans ma seconde combobox, le fournisseurs de mon Outils, cela me detecte la bonne colonne C à E par exemple ( cellules fusionnées )
Cela entraine que dans troisieme combobox, il ne reste le choix que des reference de celui - ci.
Pouvez Vous m'aider????????
Merci bcp
Private Sub userform_initialize()
Dim Mes_Diametres_Fraises As String
Dim Col25 As Integer
Dim Lig25 As Integer
Col25 = 2
For Lig25 = 15 To 35
Mes_Diametres_Fraises = Sheets("Fraises de Finition").Cells(Lig25, Col25).Value
Gestion_Outils_2.ComboBox_Diametres_Fraises.AddItem Mes_Diametres_Fraises
Next Lig25
Dim Mes_Fournisseurs_Fraises As String
Dim Col26 As Integer
Dim Lig26 As Integer
Lig26 = 13
For Col26 = 3 To 17
Mes_Fournisseurs_Fraises = Sheets("Fraises de Finition").Cells(Lig26, Col26).Value
Gestion_Outils_2.ComboBox_Fournisseurs_Fraises.AddItem Mes_Fournisseurs_Fraises
Next Col26
Dim Mes_References_Fournisseurs As String
Dim Col27 As Integer
Dim Lig27 As Integer
Lig27 = 14
For Col27 = 3 To 17
Mes_References_Fournisseurs = Sheets("Fraises de Finition").Cells(Lig27, Col27).Value
Gestion_Outils_2.ComboBox_Mes_References_Fournisseurs.AddItem Mes_References_Fournisseurs
Next Col27
End Sub
A voir également:
Aide Userform - Tableaux - Combobox fonction d'une autre
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 25 mars 2008 à 21:41
Salut,
je vois que tu progresses car maintenant tu indents ton code, c'est bien .
Pas besoin de faire des boucles for pour alimenter une combobox quand les valeurs sources sont contigues(cote a cote). D'autre par tes variables intermediaires, comme la variable Mes_Diametres_Fraises ne servent à rien.
ce qui suit fait la meme chose en plus rapide :
Private Sub userform_initialize()
Dim Col25 As Long, Lig26 As Long, Lig27 As Long
With Sheets("Fraises de Finition")
Col25 = 2
Gestion_Outils_2.ComboBox_Diametres_Fraises.list() = .Range(Cells(15,Col25),Cells(35,col25)).Value
Lig27 = 14
Gestion_Outils_2.ComboBox_Mes_References_Fournisseurs.list() = .Range(Cells(Lig27,3),Cells(Lig27,17)).Value
End With
End Sub
Passons à ta 1ere question :
cette fois une boucle simpose :
Private Sub userform_initialize()
Dim Col25 As Long, Col26 As Long, Lig26 As Long, Lig27 As Long
With Sheets("Fraises de Finition")
Col25 = 2
Gestion_Outils_2.ComboBox_Diametres_Fraises.list() = .Range(Cells(15,Col25),Cells(35,col25)).Value
Lig26 = 13
For Col26 = 3 To 17
If .Cells(Lig26,Col26 ).Value <> "" Then 'si la cellule n'est pas vide alors
Gestion_Outils_2.ComboBox_Fournisseurs_Fraises.AddItem .Cells(Lig26,Col26 ).Value
End If
Next Col26
Lig27 = 14
Gestion_Outils_2.ComboBox_Mes_References_Fournisseurs.list() = .Range(Cells(Lig27,3),Cells(Lig27,17)).Value
End With
End Sub
Maintenant la 2ieme question:
Pour cette question je manque un peu d'info mais je vais supposer que l'ordre des references suit l'ordre des fournisseurs dans la combobox
Private Sub userform_initialize()
Dim Col25 As Long, Col26 As Long, Lig26 As Long, Lig27 As Long
With Sheets("Fraises de Finition")
Col25 = 2
Gestion_Outils_2.ComboBox_Diametres_Fraises.List() = .Range(Cells(15, Col25), Cells(35, Col25)).Value
Lig26 = 13
For Col26 = 3 To 17
If .Cells(Lig26, Col26).Value <> "" Then 'si la cellule n'est pas vide alors
Gestion_Outils_2.ComboBox_Fournisseurs_Fraises.AddItem .Cells(Lig26, Col26).Value
End If
Next Col26
Lig27 = 14
'La boucle for sert a derterminé la 1ere colonne en fonction du fournisseur
For Col27 = 0 To Gestion_Outils_2.ComboBox_Fournisseurs_Fraises.ListCount - 1
If Gestion_Outils_2.ComboBox_Fournisseurs_Fraises.List(Col27) = Gestion_Outils_2.ComboBox_Fournisseurs_Fraises.Value Then Col27 (Col27 + 1) * 3 ' +1 car le premier item de la combobox commence a 0 et * 3 car un fournisseur 3 references sur 3 colonnes
'par exemple : suivant ton explication 1ere fournisseur reference en colonne C,D,E soit colonne 3,4,5 donc la 1iere reference est en 3,
'2ieme fournisseur reference en colonne F,G,H soit 6,7,8 donc 1ere reference en 6 etc.
Exit For
End If
Next Col27
Gestion_Outils_2.ComboBox_Mes_References_Fournisseurs.List() = .Range(Cells(Lig27, Col27), Cells(Lig27, Col27 + 3)).Value
End With
End Sub
gad311081
Messages postés53Date d'inscriptionlundi 18 février 2008StatutMembreDernière intervention31 mars 2008 26 mars 2008 à 09:41
Merci pour ce qui concerne la reponse à la premiere question.
Private Sub userform_initialize()
Dim Col25 As Long, Col26 As Long, Lig26 As Long, Lig27 As Long
With Sheets("Fraises de Finition")
Col25 = 2
Gestion_Outils_2.ComboBox_Diametres_Fraises.list() = .Range(Cells(15,Col25),Cells(35,col25)).Value
Lig26 = 13
For Col26 = 3 To 17
If .Cells(Lig26,Col26 ).Value <> "" Then 'si la cellule n'est pas vide alors
Gestion_Outils_2.ComboBox_Fournisseurs_Fraises.AddItem .Cells(Lig26,Col26 ).Value
End If
Next Col26
Lig27 = 14
Gestion_Outils_2.ComboBox_Mes_References_Fournisseurs.list() = .Range(Cells(Lig27,3),Cells(Lig27,17)).Value
End With
End Sub
Mais cela fonctionne seulement lorsque que je fais lecture à partir de Microsoft Visual Basic et que mon fichier Excel est ouvert sur la page Fraises de finition.
Or, mon fichier Excel s'ouvre sur la page "accueil" et c'est de cette page que je lance ma Userform...
gad311081
Messages postés53Date d'inscriptionlundi 18 février 2008StatutMembreDernière intervention31 mars 2008 26 mars 2008 à 11:19
Pour ce qui concerne l'ensemble du code
Cela ne fonctionne pas.
Quand je selectionne mon diametre puis mon fournisseur, il ne me propose dans la 3eme combobox que la réference 3 c'est à dire la celulle E14 de la feuille "Fraises de finitions", Alors qu'il devrait me proposer les Reférences 1,2 et 3 (Celulle C14 D14 et E14)
Et lorsque que dans 2nd Combobox, je met le 2eme Fournisseurs, il ne me propose aussi que la 3eme Ref, alors qu'il devrait me proposer les Ref 4 5 et 6 c'est àa dire les celulles F14 G14 et H14. Et ainsi de suite
De plus j'ai toujours le soucis que ce code ne fonctionne que si je fais lecture à partir de Visual Basic et que moin fichier Excel est ouvert sur la Feuille Fraises de Finitions.
Est-ce que quelqu'un peut m'aider????? Merci
Dim Col25 As Long, Col26 As Long, Lig26 As Long, Lig27 As Long
With Sheets("Fraises de Finition")
Col25 = 2
Gestion_Outils_2.ComboBox_Diametres_Fraises.List() = .Range(Cells(15, Col25), Cells(35, Col25)).Value
Lig26 = 13
For Col26 = 3 To 17
If .Cells(Lig26, Col26).Value <> "" Then 'si la cellule n'est pas vide alors
Gestion_Outils_2.ComboBox_Fournisseurs_Fraises.AddItem .Cells(Lig26, Col26).Value
End If
Next Col26
Lig27 = 14
'La boucle for sert a derterminé la 1ere colonne en fonction du fournisseur
For Col27 = 0 To Gestion_Outils_2.ComboBox_Fournisseurs_Fraises.ListCount - 1
If Gestion_Outils_2.ComboBox_Fournisseurs_Fraises.List(Col27) = Gestion_Outils_2.ComboBox_Fournisseurs_Fraises.Value Then
Col27 = (Col27 + 1) * 3
' +1 car le premier item de la combobox commence a 0 et * 3 car un fournisseur = 3 references sur 3 colonnes
'par exemple : suivant ton explication 1ere fournisseur reference en colonne C,D,E soit colonne 3,4,5 donc la 1iere reference est en 3,
'2ieme fournisseur reference en colonne F,G,H soit 6,7,8 donc 1ere reference en 6 etc.
Exit For
End If
Next Col27
Gestion_Outils_2.ComboBox_Mes_References_Fournisseurs.List() = .Range(Cells(Lig27, Col27), Cells(Lig27, Col27 + 3)).Value
End With