VBA alimentation d'une combobox

Résolu/Fermé
trinit@ Messages postés 119 Date d'inscription mercredi 25 janvier 2012 Statut Membre Dernière intervention 16 mai 2012 - 21 avril 2012 à 11:12
trinit@ Messages postés 119 Date d'inscription mercredi 25 janvier 2012 Statut Membre Dernière intervention 16 mai 2012 - 21 avril 2012 à 18:21
Bonjour,

Je reviens vers la communauté pour un soucis d'alimentation d'une combobox multicolonnes. J'ai testé plusieurs scripts, mais impossible d'afficher ce que je souhaite, la combobox reste désespérément vide. Je vous joins le fichier.

http://ww38.toofiles.com/fr/oip/documents/xlsm/tableurfinal.html

(Attention, le code de l'UserForm2 est dégeu, c'est là que je travaille ;) )

Sur la page "Calcul des produits", j'ai créé un bouton ajouter un produit. Je voudrais que le combobox de l'UserForm soit alimenté par le tableau "Produits - Ne pas supprimer", donc avoir 5 colonnes avec la possibilité de sélectionner une ligne dans la liste déroulante qui s'affiche.

La ligne sélectionnée, avec un autre clique sur le bouton OK, viendrais s'ajouter en dessous du tableau des produits déjà inscrit dans la feuille "Calcul des produits". Mais seul le nom du produit viendrais s'afficher dans ce dernier tableau.

Ca va faire maintenant 5 jours que j'essaye des morceaux de codes, mais sans résultats. L'erreur viens donc de moi :/ mais un coup de main serait le bienvenue...

6 réponses

trinit@ Messages postés 119 Date d'inscription mercredi 25 janvier 2012 Statut Membre Dernière intervention 16 mai 2012 8
21 avril 2012 à 14:47
nobody for me ? (Je sais, no stress, mais j'y peux rien je suis comme ça :/ )
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
21 avril 2012 à 16:10
Bonjour,

Au moins pour commencer a esperer.

Private Sub UserForm_Activate()
Dim Plage, NbLigne

With Worksheets("Produits - Ne pas supprimer").Activate
'Derniere ligne colonne B
NbLigne = WorksheetFunction.CountA(Columns("B:B"))
'Page de cellules
Plage = Range(Cells(2, 1), Cells(NbLigne, 5)).Address
End With
'Nombre de colonne combobox
ComboBox1.ColumnCount = 5
'largeur Colonnes
ComboBox1.ColumnWidths = "50 pt;50 pt;50 pt;50 pt;50 pt"

'Entetes de colonne
ComboBox1.ColumnHeads = True
'Source combobox
ComboBox1.RowSource = Plage
End Sub

Private Sub ComboBox1_Click()
'Affichage ligne choisie
With ComboBox1
.Text = .Column(0, .ListIndex) & " - " & _
Format(.Column(1, .ListIndex), "0.00") & " - " & _
Format(.Column(2, .ListIndex), "0.00") & " - " & _
Format(.Column(3, .ListIndex), "0.00") & " - " & _
Format(.Column(4, .ListIndex), "0.00") & " - "
End With
End Sub


A+
0
trinit@ Messages postés 119 Date d'inscription mercredi 25 janvier 2012 Statut Membre Dernière intervention 16 mai 2012 8
21 avril 2012 à 16:17
Merci f894009 ! Pile ce qu'il me fallait ! Ce tableur est mon rapport final de BTS, je desesperait a l'idée de devoir le fausser à cause de ce VBA... merci !
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
21 avril 2012 à 16:18
Re,

Mais seul le nom du produit viendrais s'afficher dans ce dernier tableau.

Quel tableau??????
0
trinit@ Messages postés 119 Date d'inscription mercredi 25 janvier 2012 Statut Membre Dernière intervention 16 mai 2012 8
21 avril 2012 à 16:26
C'est le premier tableau de la feuille "Calcul des produits". Ce tableau comporte trois colonnes : le nom (ce qui serait sélectionné dans le combobox viendrait s'ajouter à la suite), le prix, fixé manuellement par l'utilisateur et la rpiorité (ça aussi je gère).
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
21 avril 2012 à 16:29
Re,
Ajout par insertion ligne?
0
trinit@ Messages postés 119 Date d'inscription mercredi 25 janvier 2012 Statut Membre Dernière intervention 16 mai 2012 8
Modifié par trinit@ le 21/04/2012 à 16:32
Exactement, je pense à un truc du genre "row +1" mais impossible de savoir où placer ça :/
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
21 avril 2012 à 16:32
Re,
Je fais
0
trinit@ Messages postés 119 Date d'inscription mercredi 25 janvier 2012 Statut Membre Dernière intervention 16 mai 2012 8
21 avril 2012 à 16:37
Tu sais que tu me sauves là ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
Modifié par f894009 le 21/04/2012 à 17:57
Re

'declaration pour tout l'Userform
Dim Prod_a_ajouter

'Bouton OK
Private Sub CommandButton1_Click()
Dim x As Integer
Dim c As Range, PCVideA

'Selection de l'onglet
Worksheets("Calcul des produits").Select
'Recherche cellule vide colonne A
Set c = IIf(Range("A5") = "", Range("A5"), Range("A4").End(xlDown))
PCVideA = c.Row + 1
'Insertion ligne
Rows(PCVideA & ":" & PCVideA).Insert Shift:=xlDown
'Ecriture Produit
Cells(PCVideA, 1) = Prod_a_ajouter
'Encadrement cellules
Range("A" & PCVideA & ":C" & PCVideA).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End Sub

Modife pour recuperer le Nom Produit
Private Sub ComboBox1_Click()
'Affichage ligne choisie
With ComboBox1
.Text = .Column(0, .ListIndex)
'Nom du produit a ajouter
Prod_a_ajouter = .Text
.Text = .Text & " - " & _
Format(.Column(1, .ListIndex), "0.00") & " - " & _
Format(.Column(2, .ListIndex), "0.00") & " - " & _
Format(.Column(3, .ListIndex), "0.00") & " - " & _
Format(.Column(4, .ListIndex), "0.00")
End With
End Sub

Bonne suite
0
trinit@ Messages postés 119 Date d'inscription mercredi 25 janvier 2012 Statut Membre Dernière intervention 16 mai 2012 8
21 avril 2012 à 18:04
Maintenant j'ai bien le userform et une ligne qui s'affiche en dessous du tableau, mais du coup le combobox est vide... :/ j'ai tenté un mix des deux mais je ne trouve rien. Est-ce que ton oeil éclairé pourrait remixer la sauce ?
Merci pour le travail que tu fais !
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
21 avril 2012 à 18:07
Re,

Un mix des deux quoi???
0
trinit@ Messages postés 119 Date d'inscription mercredi 25 janvier 2012 Statut Membre Dernière intervention 16 mai 2012 8
21 avril 2012 à 18:09
des deux codes que tu as écris.avec le premier code, j'avais le combobx plein. Maintenant, j'ai le tableau. Mais plus le combobox est vide :/ .
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
21 avril 2012 à 18:13
Re,

Remplace par celui-ci

'declaration pour tout l'Userform
Dim Prod_a_ajouter

Private Sub CommandButton1_Click()
Dim PCVideA

'Selection de l'onglet
Worksheets("Calcul des produits").Select
'Recherche cellule vide colonne A
PCVideA = Columns(1).Find("", Range("A4").End(xlUp), , , xlByRows).Row
'Insertion ligne
Rows(PCVideA & ":" & PCVideA).Insert Shift:=xlDown
'Ecriture Produit
Cells(PCVideA, 1) = Prod_a_ajouter
'Encadrement cellules
Range("A" & PCVideA & ":C" & PCVideA).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End Sub

Private Sub ComboBox1_Click()
'Affichage ligne choisie
With ComboBox1
.Text = .Column(0, .ListIndex)
'Nom du produit a ajouter
Prod_a_ajouter = .Text
.Text = .Text & " - " & _
Format(.Column(1, .ListIndex), "0.00") & " - " & _
Format(.Column(2, .ListIndex), "0.00") & " - " & _
Format(.Column(3, .ListIndex), "0.00") & " - " & _
Format(.Column(4, .ListIndex), "0.00")
End With
End Sub

Private Sub UserForm_Activate()
Dim Plage, NbLigne

With Worksheets("Produits - Ne pas supprimer").Activate
'Derniere ligne colonne B
NbLigne = WorksheetFunction.CountA(Columns("B:B"))
'Page de cellules
Plage = Range(Cells(2, 1), Cells(NbLigne, 5)).Address
End With
'Nombre de colonne combobox
ComboBox1.ColumnCount = 5
'largeur Colonnes
ComboBox1.ColumnWidths = "50 pt;50 pt;50 pt;50 pt;50 pt"

'Entetes de colonne
ComboBox1.ColumnHeads = True
'Source combobox
ComboBox1.RowSource = Plage
End Sub


J'ai retrouve une formule de recherche en colonne plus simple.
0
trinit@ Messages postés 119 Date d'inscription mercredi 25 janvier 2012 Statut Membre Dernière intervention 16 mai 2012 8
21 avril 2012 à 18:16
Génial, ça marche ! Merci milles fois, je te revaudrais ça sur CCM !
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
21 avril 2012 à 18:18
Re,
Content de vous avoir rendu service.

Bonne suite
0
trinit@ Messages postés 119 Date d'inscription mercredi 25 janvier 2012 Statut Membre Dernière intervention 16 mai 2012 8
21 avril 2012 à 18:21
Marci, vous aussi !
0