BoundColumn

bonjour,

j'ai un souci avec un calcul que je voudrais faire dans un userform a l'aide de textbox et combobox, pour plus de précision je joint mon fichier avec les explication a l’intérieur , si quelqu'un peut m'aider SVP , merci d'avoir pris le temps de me lire.

31teste5.xlsm (24.84 Ko)

Bonjour,

Dans ton "Private Sub UserForm_Initialize()" mets le code suivant et normalement c'est bon

For i = 2 To Sheets("feuil1").UsedRange.Rows.Count
    Me.T3.AddItem Cells(i, 4)
Next i

Cdt

Bonjour

voila déjà une modife a faire

a tester bien sur

Private Sub L1_Click()
'Dim i&
    If L1.ListIndex = -1 Then Exit Sub
    T1.Value = L1.Column(0)
    T2.Value = L1.Column(1)

'    For i = 1 To L1.ColumnCount
'        Controls("T" & i) = L1.List(L1.ListIndex, i - 1)
'    Next i
End Sub

A+

Maurice

re , le forum,

merci pour vos réponses,

Archer ta methode n'affiche plus la valeur de l'indice si je clique dans L1 chose que je ne veux pas il faut qu'elle s'affiche dans T3

Valc, ta méthode ne change rien a mon problème qui est de calculé selon un coef correspondant a un indice qui est afficher dans T3

et personne ne me parle de "boundcolum" = 2

Bonjour,

Je ne comprnds pas ce que tu cherche dsl

 Controls("T" & i).Text = L1.List(L1.ListIndex, i - 1)
T2 = CDec(T1.Text) * CDec(T3.Text)

Bonjour, Salut à tous !

Pas encore vu où était ton problème, mais déjà si tu mets la propriété BoundColumn à 2, cela signifie que la propriété Value de T3 renverra la valeur de la 2e colonne de la ligne sélectionnée, or ColumnCount est à 1, soit ta Combo ne comporte qu'une seule colonne, il y a donc là une contradiction !

bonjour le forum,

merci de vous interresser a mon cas ,

donc je vais etre plus claire dans mes explications qui semble etre confus!

alors tout mes codes dans userform1 en temps normal fonctionne seul souci c'est que dans ma combobox(T3) je l'ai rempli avec les valeurs des colonnes "D" et "E" et avec propriété" BoundColum" = 2 et "ColumnCunt" =1

ce qui me permet d'afficher l'indice dans T3 et de calculé la valeur de T1 par le coef correspondant a l'indice (voir tab feuil1)

jusque la tout fonctionne sauf quand je clique dans L1 pour remvoyer les données dans les textbox et combobox (T1, T2, T3) sa bug!!

et si je remet T3 propriété" BoundColum" = 1 et "ColumnCunt" =1 sa fonctionne mais le calcul se fait avec l'indice et non plus avec le coef.

voila en espérant que vous avez compris mon problème. merci

Essaie en mettant BoundColumn sur 2, ColumnCount sur 2, et dans ColumnWidth tu mets : 85 pt;0 pt

Ta 2e colonne sera invisible dans la Combo, mais c'est sa valeur qui sera renvoyée par T3.Value.

On creusera plus si ça ne marchait pas...

Cordialement.

re ,

merci pour ta réponse mais j'avais déjà pensé a sa mais sa ne marche pas non plus !!

Si tu fais des calculs, penses-tu à convertir tes valeurs en nombre pour calculer ?

re

oui je compte le faire en donnant un format (0.00)

Et comme je le conseille toujours, shunter la propriété Value ou Text des contrôles n'est pas vraiment une bonne idée... et dans ton cas, en mettant BoundColumn sur 2, T3.Value et T3.Text ne renvoient pas la même valeur. Tu dois donc mettre T3.Value pour obtenir la valeur cherchée.

re ,

donc je doit faire quoi en gros remettre BoundColomn = 1 ? c'est ça ? j'ai pas tout compris excuse moi !!

Non, tu laisses BoundColumn sur 2, ColumnCount sur 2, ColumnWidth sur 85;0 et tu utilises dans ton calcul : T3.Value

re ,

voila j'ai fait ce que tu m'as dit es sa bug toujours ,

Private Sub CommandButton3_Click()
If T3 = "" Then T2 = "": Exit Sub
T2 = T1.Value * T3.Value
End Sub

Private Sub L1_Click()
Dim i&
    If L1.ListIndex = -1 Then Exit Sub
    For i = 1 To L1.ColumnCount
    Controls("T" & i) = L1.List(L1.ListIndex, i - 1)
    Next i
End Sub

la ligne concerné " Controls("T" & i) = L1.List(L1.ListIndex, i - 1)" ( erreur : impossible de definir la propriété value)

Si maintenant tu ne convertis plus en nombres, tu multiplies des valeurs texte !

re

voila ce que j'ai fait et sa ne fonctionne toujour pas

Private Sub CommandButton2_Click()
Dim i&
L1.AddItem
With L1
   For i = 0 To .ColumnCount - 1
   L1.List(L1.ListCount - 1, i) = Format(Controls("T" & i + 1), "0.00")
   Next i
End With
End Sub

Private Sub CommandButton3_Click()
If T3 = "" Then T2 = "": Exit Sub
T2 = T1.value * T3.value
End Sub

Private Sub L1_Click()
Dim i&
    If L1.ListIndex = -1 Then Exit Sub
    For i = 1 To L1.ColumnCount
        Controls("T" & i) = Format(L1.List(L1.ListIndex, i - 1), "0.00")
    Next i
End Sub

Décidément !

Private Sub CommandButton3_Click()
    If T3 = "" Then T2 = "": Exit Sub
    T2 = CDec(T1.Value) * CDec(T3.Value)
End Sub

Je ne mes suis pas occupé de ta ListBox, je ne sais donc pas ce qu'elle fait...

Je ne comprends pas non plus pourquoi dans ta citation il y a value et non Value (mise en forme auto par VBA) si tu a copié la proc. dans le module ?

re sa ne marche toujours pas !!

j'ai tout fait comme tu a dit : ci joint le fichier

12teste5.xlsm (25.47 Ko)

Je ne comprends pas !

Si je sélectionne une valeur dans T3, je frappe un nombre dans T1, je clique sur Calculer et j'ai bien un résultat dans T2 !

Ce n'est pas ce qui est recherché ?

Rechercher des sujets similaires à "boundcolumn"