cs_Fabian123
Messages postés180Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention22 novembre 2013
-
9 mars 2008 à 15:25
cs_Fabian123
Messages postés180Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention22 novembre 2013
-
11 mars 2008 à 08:44
Bonjour, j'ai une listbox de deux colonnes, une avec des articles et l'autre avec leur prix (ils sont chargés à partir de deux colonnes d'une feuille excel)
je souhaiterais afficher dans un label la somme de la colonne de prix de la listbox sans devoir passer par un bouton à cliquer (je pourrais le faire en calculant directement de la feuille excel, mais la listbox n'affiche pas nécessairement l'entièreté de mon tableau excel.)
cs_Fabian123
Messages postés180Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention22 novembre 2013 9 mars 2008 à 16:41
Re bonjour,
j'ai trouvé ceci comme code, mais, je ne sais pourquoi il me laisse toujours le label à "0", il ne fait pas de total... quelqu'un sait ou j'ai pu faire une erreur?
je rapelle, le listbox est dans un user form et le label aussi. le listbox à deux colonne la deuxième correspondant à des prix, je souhaiterais que le total de ces prix s'affiche dans le label...
voici mon code:
Private Sub UserForm_initialize()
Dim Val_Somme As Double
Dim L As Integer
With ListBox1
For L = 0 To .ListCount - 1 'ListCount nombre des lignes moins 1 _
car la premiere ligne est la ligne 0
Val_Somme = Val_Somme + CDbl(.List(L))
Next
End With
Label7.Caption = Val_Somme
End Sub
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 9 mars 2008 à 18:15
Je viens d'ailleurs (pour en avoir le coeur net) de simuler ainsi :
Private Sub CommandButton3_Click()
'pour remplir pour essai
listbox1.AddItem "a"
listbox1.List(0, 1) = "1,9"
listbox1.AddItem "b"
listbox1.List(1, 1) = "2,3"
' pour calculer le total de la 2ème colonne
Dim L As Integer, tot As Double
For L = 0 To listbox1.ListCount - 1
tot = tot + CDbl(listbox1.List(L, 1))
Next
MsgBox tot
End Sub
Aucun problème
Es-tu certain d'avoir bien utilisé une listbox à 2 colonnes (propriété ColumnCount à 2) ?
cs_Fabian123
Messages postés180Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention22 novembre 2013 10 mars 2008 à 08:18
Ma listBox est bien remplie et j'ai bien mis '2' dans les propriétés columcount, par contre je ne suis pas certain qu'il s'agisse de nombres valides avec une virgule comme séparateur décimal... (mais à vérifier, je suis au bureau, il va falloir attendre ce soir pour être certain!)
Mais si c'est le cas, comment puis-je faire pour que ces valeurs deviennent des nombres valides?
cs_Fabian123
Messages postés180Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention22 novembre 2013 10 mars 2008 à 08:18
Ma listBox est bien remplie et j'ai bien mis '2' dans les propriétés columcount, par contre je ne suis pas certain qu'il s'agisse de nombres valides avec une virgule comme séparateur décimal... (mais à vérifier, je suis au bureau, il va falloir attendre ce soir pour être certain!)
Mais si c'est le cas, comment puis-je faire pour que ces valeurs deviennent des nombres valides?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 10 mars 2008 à 10:07
Si je me fie à l'autre message que tu as mis, tu inscrivais le signe de l'Euro dans ta 2e colonne. Si tu regardes le bout de code que je t'ai mis, ce signe n'y était pas.
Assure-toi donc de ne pas mettre ce signe. Sinon tes valeurs seront considérées comme du texte et ne pourront pas s'additionner. Si tu veux absolument y mettre le signe, utilise une 3e colonne ou enlève ce signe lorsque tu fais tes additions.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
cs_Fabian123
Messages postés180Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention22 novembre 2013 10 mars 2008 à 18:46
Salut MPi,
je m'étais dit que ça devait provenir du symbole euro, alors je l'avais enlevé... mais ça ne change rien, il ne me fait pas la somme, il reste toujours sur zéro...
j'arrive pas à voir d'ou vient l'erreur...
je laisse le code au cas ou quelqu'un verrait d'ou ça vient
'permet de faire le total des sommes dans le label7
Private Sub UserForm_initialize()
Dim Val_Somme As Double
Dim L As Integer
With ListBox1
For L = 0 To ListBox1.ListCount - 1 'ListCount nombre des lignes moins 1 _
car la premiere ligne est la ligne 0
Val_Somme = Val_Somme + CDbl(.List(L, 1))
Next
End With
Label7.Caption = Val_Somme
End Sub
'permet de scinder les catégories d'articles
Private Function GetListCategories() As String()
Dim ltStr() As String
ReDim ltStr(-1 To -1)
Dim i As Long
Dim j As Long
Dim lOK As Boolean
Dim lStr As String
i = 0
Do While Feuil2.Range("B2").Offset(i, 0).Value <> ""
lOK = True
lStr = Feuil2.Range("B2").Offset(i, 0).Value
'Recherche si la catégorie est connue
For j = 0 To UBound(ltStr)
If lStr = ltStr(j) Then
lOK = False
Exit For
End If
Next j
'Si inconnue, on l'ajoute
If lOK Then
If UBound(ltStr) >= 0 Then
ReDim Preserve ltStr(0 To UBound(ltStr) + 1)
Else
ReDim ltStr(0 To 0)
End If
ltStr(UBound(ltStr)) = lStr
End If
i = i + 1
Loop
GetListCategories = ltStr
End Function
Private Sub OptionButton_Alimentaire_Click()
Call RemplLstBx(OptionButton_Alimentaire.Caption)
End Sub
Private Sub OptionButton_Livres_Click()
Call RemplLstBx(OptionButton_Livres.Caption)
End Sub
Private Sub OptionButton_NonAlimentaire_Click()
Call RemplLstBx(OptionButton_NonAlimentaire.Caption)
End Sub
'Ensuite pour remplir ta listbox :
Private Sub RemplLstBx(ByVal pCategorie As String)
Dim i As Long
ListBox1.Clear
i = 0
Do While Feuil2.Range("B2").Offset(i, 0).Value <> ""
If Feuil2.Range("B2").Offset(i, 0).Value = pCategorie Then
ListBox1.AddItem
ListBox1.List(j, 0) = Feuil2.Range("C2").Offset(i, 0).Value
ListBox1.List(j, 1) = CStr(Feuil2.Range("D2").Offset(i, 0).Value)
j = j + 1
End If
i = i + 1
Loop
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 10 mars 2008 à 21:50
Tu fais ta somme dans Userform_Initialize ...
Si je ne me trompe pas, tes listes ne sont pas encore remplies tant que tu n'as pas sélectionné un OptionButton. C'est donc normal que la somme soit égale à 0.
Je te suggère de créer une Sub CalculSomme, disons, dans laquelle tu mets le code du Userform_Initialize, puis tu l'appelles après avoir rempli la ListBox
ex:
Private Sub OptionButton_Alimentaire_Click()
Call RemplLstBx(OptionButton_Alimentaire.Caption)
Call CalculSomme
End Sub
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI