Attribué une valeur a un choix de Combobox VBA

Résolu/Fermé
Signaler
-
 vils29 -
Bonjour,

je sollicite votre aide puisque je suis actuellement bloqué, je chercher à attribuée une valeur en fonction du choix du Combobox.

A1
Contreplaqué 4€
Bois Massif 2€

Il faudrait que quand je choisisse dans mon Combobox (qui prend les valeurs de la colonne A1) une des options, et que lors du calcul j'ai le prix qui va en fonction.

Je cherche donc à avoir le prix en fonction du choix dans le Combobox.

Je pourrais ajouté le prix manuellement, mais il faudrait que le programme puisse être modifiable (changer les actions et les prix, ou en rajouter).

Actuellement j'ai sa pour l'initialisation de mon programme:

VarDerLigne = Worksheets("parame").Range("A65536").End(xlUp).Row
VarPlage = Worksheets("parame").Range("A9:A" & VarDerLigne).Address
ComboBox1.RowSource = "parame!" & VarPlage
ComboBox1.ColumnHeads = False
ComboBox1.ListIndex = 0

Ce code me permet d'obtenir toutes les valeurs présentes dans la colonnes A dans mon combobox.
Dans mon calculs je cherche a avoir le coût de revient d'une surface, longueur=textbox1, largeur=textbox2, prix m²=combobox1

prixsurface = textbox1*textbox2*combobox1(mais je cherche à avoir le prix et nom pas le texte)

Merci de m'avoir lue et j’espère que vous pourrez résoudre mon problème.

9 réponses

Messages postés
1413
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
4 décembre 2021
154
Bonjour vils, bonjour le forum,

Le prix est en colonne A ou en colonne B ? Si tu mets ton fichier en pièce jointe, tu auras des réponses adaptées et bien plus rapides...
À plus,
ThauTheme
Messages postés
4
Date d'inscription
jeudi 22 décembre 2016
Statut
Membre
Dernière intervention
22 décembre 2016

Bonjour ThauTheme et merci de ta réponse,

Le prix est dans la colonne B et le texte et dans la colonne A

Je ne sais pas comment envoyé une pièce jointe, j'ai poster un lien mediafire mais mon post à été immédiatement supprimé.
Messages postés
1413
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
4 décembre 2021
154
Re,

Regarde du coté de https://www.cjoint.com/ (par exemple)...
Messages postés
4
Date d'inscription
jeudi 22 décembre 2016
Statut
Membre
Dernière intervention
22 décembre 2016

Re,

Voila le fichier, (c'est bordélique mais bon ..)

http://www.cjoint.com/c/FLwqF7ZBYJa
Messages postés
4
Date d'inscription
jeudi 22 décembre 2016
Statut
Membre
Dernière intervention
22 décembre 2016

up
Messages postés
1413
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
4 décembre 2021
154
Re,

J'y suis dessus mais pas sûr que tu aies une réponse aujourd'hui...
Messages postés
4
Date d'inscription
jeudi 22 décembre 2016
Statut
Membre
Dernière intervention
22 décembre 2016

Re,

J'ai trouvé une solution en faisant autrement.

Merci de ta contribution ThauTheme.
Messages postés
1413
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
4 décembre 2021
154
Re,

En attribuant une valeur à la propriété [Tag] de chaque ComboBox. Valeur qui correspond à la colonne dans laquelle est écrite (Ex. : ComboBox1.Tag = 1, ComboBox2.Tag = 3, etc.) on obtiendrais un code simplifié du style :

Private O As Worksheet
Private COL As Byte
Private LI As Integer

Sub userform_initialize()
Dim CTRL As Control

Set O = Sheets("parame")
For Each CTRL In Me.Controls
    If CTRL.Tag <> "" Then
        COL = CByte(CTRL.Tag)
        LI = O.Cells(Application.Rows.Count, COL).End(xlUp).Row
        CTRL.List = O.Range(O.Cells(9, COL), O.Cells(LI, COL)).Value
        If CTRL.Tag = 11 Then CTRL.List = IIf(CTRL.Name = "ComboBox5", O.Range("K9:K11").Value, O.Range("K12:K14").Value)
        CTRL.ListIndex = 0
    End If
Next CTRL
ComboBox1.Visible = OptionButton5.Value
ComboBox2.Visible = OptionButton6.Value
ComboBox3.Visible = OptionButton7.Value
OptionButton6.Value = True
End Sub

Private Sub CommandButton1_Click()
Dim longeur As Double, largeur As Double, surface As Double, epaisseur As Double, volume As Double

For I = 2 To 4
    If Me.Controls("TextBox" & I).Value = "" Then MsgBox "Vous devez renseigner ce champ !": GoTo suite
    If Not IsNumeric(Me.Controls("TextBox" & I).Value) Then
        MsgBox "Vous devez rentrer une valeur numérique !"
    Else
        If CDbl(Me.Controls("TextBox" & I).Value) <= 0 Then MsgBox "Vous devez rentrer une valeur positive !"
    End If
suite:
    With Me.Controls("TextBox" & I)
        .SetFocus
        .SelStart = 0
        .SelLength = .Value
    End With
    Exit Sub
Next I

For I = 1 To 3
    If Me.Controls("ComboBox" & I).Visible = True Then
        LI = Me.Controls("ComboBox" & I).ListIndex + 9
        COL = CByte(Me.Controls("ComboBox" & I).Tag)
        Exit For
    End If
Next I

matériau = CDbl(O.Cells(LI, COL + 1))
longeur = CDbl(TextBox2.Value)
largeur = CDbl(TextBox3.Value)
epaisseur = CDbl(TextBox4.Value)                                         

'Insertions des variables

Workbooks.Add                                                'Fais apparaitre un nouveau classeur

ActiveSheet.Name = ("devis")                                  'La Feuille du nouveau classeur se renomme en "devis"
Range("G3").Select
ActiveCell.FormulaR1C1 = TextBox1                           'Mise en forme du titre du devis
Range("G3:L3").Select

With Selection.Font
.ThemeColor = xlThemeColorAccent1
End With

With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.ReadingOrder = xlContext
End With

With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Color = -16777024
.TintAndShade = 0
.Weight = xlMedium
End With

With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Color = -16777024
.TintAndShade = 0
.Weight = xlMedium
End With

With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Color = -16777024
.TintAndShade = 0
.Weight = xlMedium
End With

With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Color = -16777024
.TintAndShade = 0
.Weight = xlMedium
End With

surface = longeur * largeur                                 'Calculs, puis inscriptions dans les cellules

prixsurface = surface * materiau
Worksheets("devis").Range("F10").Value = CStr(prixsurface)
volume = longeur * largeur * epaisseur
prix = surface
End Sub

Merci sa fonctionne !

J'ai réussis à continuer la suite par rapport a ton code.
Tu me sauve merci.

Résolu