VBA remplir une combobox à partir de plusieurs cellules

Résolu/Fermé
Angelo - 3 déc. 2014 à 13:38
 Angelo - 5 déc. 2014 à 12:11
Bonjour,

J'essaie de remplir une combobox à partir de plusieurs cellules. Cela fonctionne dans mon premier onglet mais pas pour le deuxième.

Voici le code pour lequel ça bug :

Dim Plage As String
Dim NumCtrt As String
Dim Lig As Integer

NumCtrt = ""
Call ZoneCombinée8_Remplir("Fiche", "u442118")
'Worksheets("ZoneCombinée8").Select
'Worksheets("ZoneCombinée8").Range("B2").Select
'Worksheets("ZoneCombinée8").Range(Selection, Selection.End(xlDown)).Select
'Plage = Selection.Address
Plage = Range("B1:B5").Address
ComboBox2.ListFillRange = "ZoneCombinée8!" & Plage

Sheets("ZoneCombinée8").Visible = False

'NumCtrt = ComboBox2.Value

With Sheets("Table")
Lig = .Columns(4).Cells.Find(NumCtrt, lookat:=xlWhole).Row
End With

Pour le code ci-dessous cela fonctionne :

Dim Plage As String
Dim NumCtrt As String
Dim Lig As Integer

NumCtrt = ""

'(Worksheets("ZoneCombinée8").Select
'Worksheets("ZoneCombinée8").Range("A2").Select
'Worksheets("ZoneCombinée8").Range(Selection, Selection.End(xlDown)).Select
'Plage = Selection.Address
Plage = Range("A1:A5").Address
ComboBox1.ListFillRange = "ZoneCombinée8!" & Plage

NumCtrt = ComboBox1.Value

With Sheets("Table")
Lig = .Columns(4).Cells.Find(NumCtrt, lookat:=xlWhole).Row
End With
Sheets("Ajout").Range("numCT") = NumCtrt
Sheets("Ajout").Range("Produit") = Sheets("Table").Range("E" & Lig)
Sheets("Ajout").Range("encours") = Sheets("Table").Range("F" & Lig)
Sheets("Ajout").Range("delegation") = Sheets("Table").Range("G" & Lig)
Sheets("Ajout").Range("type") = Sheets("Table").Range("H" & Lig)
Sheets("Ajout").Range("comment") = Sheets("Table").Range("I" & Lig)
Sheets("ZoneCombinée8").Visible = False

Comme vous pouvez le voir, pour l'instant j'ai défini limité le contenu de la combo au données présente dans les 5premières celulles. J'aimerais également rendre la taille de la combo variable en fonction du nombre de données présentes dans la colonne mais ce que j'utilise ne fonctionne pas non plus j'ai mis le code que j'ai utilisé en commentaire juste au dessus. Si vous avez des idées n'hésitez pas. J'ai déjà eu l'occasion de programmer mais je débute en VBA et je ne suis pas encore à l'aise avec les fonctions propre à VBA.

1 réponse

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
3 déc. 2014 à 13:53
Bonjour,

Pour le code ci-dessous cela fonctionne : z'etes sur !!!!!

manque le debut et la fin, mais sur que ca marche pas puisque vous melangez le remplissage de la combobox et le choix de cette combobox

A+
0
Bizarre mais je vous assure que cela fonctionne. Il affiche les valeurs et lorsque je sélectionne il mets à jours les valeurs de certaines cellule en fonction du choix appliqué. Vous conseilleriez d'utiliser quoi?

Un grand merci !
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 4/12/2014 à 08:30
Bonjour,

la partie de code que vous avez montree est ecrite dans quel procedure ??


parce que ceci est une bizarerie

ComboBox1.ListFillRange = "ZoneCombinée8!" & Plage

NumCtrt = ComboBox1.Value




le mieux serait de mettre votre fichier sans donnees sensible a dispo sur https://www.cjoint.com/
0
Angelo > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
4 déc. 2014 à 10:51
Dans le code de changement de la combo :

Private Sub ComboBox1_Change()
Dim Plage As String
Dim NumCtrt As String
Dim Lig As Integer

NumCtrt = ""

'(Worksheets("ZoneCombinée8").Select
'Worksheets("ZoneCombinée8").Range("A2").Select
'Worksheets("ZoneCombinée8").Range(Selection, Selection.End(xlDown)).Select
'Plage = Selection.Address
Plage = Range("A1:A5").Address
ComboBox1.ListFillRange = "ZoneCombinée8!" & Plage

NumCtrt = ComboBox1.Value

With Sheets("Table")
Lig = .Columns(4).Cells.Find(NumCtrt, lookat:=xlWhole).Row
End With
Sheets("Ajout").Range("numCT") = NumCtrt
Sheets("Ajout").Range("Produit") = Sheets("Table").Range("E" & Lig)
Sheets("Ajout").Range("encours") = Sheets("Table").Range("F" & Lig)
Sheets("Ajout").Range("delegation") = Sheets("Table").Range("G" & Lig)
Sheets("Ajout").Range("type") = Sheets("Table").Range("H" & Lig)
Sheets("Ajout").Range("comment") = Sheets("Table").Range("I" & Lig)
Sheets("ZoneCombinée8").Visible = False

End Sub
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
4 déc. 2014 à 11:53
Re,

Ben oui, c'est une bizarerie. Il ne sert a rien de faire ceci

Plage = Range("A1:A5").Address
ComboBox1.ListFillRange = "ZoneCombinée8!" & Plage


dans cette procedure

cela doit etre fait avant dans une procedure d'initialisation et si c'est deja fait, faut enlever ces deux lignes
0
C'est bon j'ai trouvé ce qu'il n'allait pas. Un grand merci pour votre aide !
0