Somme d'une listbox

Résolu
stick25
Messages postés
64
Date d'inscription
jeudi 4 mars 2010
Statut
Membre
Dernière intervention
17 juin 2010
- 19 mars 2010 à 10:51
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 18 janv. 2013 à 01:10
Bonjour je souhaite faire la somme d'une listbox mais je comprend pas en quoi mon code es faux, alors pouvez vous m'aider svp. Mon code est le suivant :


Dim i, j As Integer
j = Liste.Lstb_pts.ListCount - 1
For i = 0 To j

total = total + Liste.Lstb_pts.List(i, 3)

Next

Label7 = total


Par exemple avec ce code j'obtiens : 10 + 0 + 0 + 0 + 100 = 10000100 alors je ne comprends plus rien...

30 réponses

cs_Galain
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
7
22 mars 2010 à 16:43
"if insere > liste.list(i) then" à remplacer par "if insere < liste.list(i) then"

Décidément j'arrête pas de faire des bêtises

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
stick25
Messages postés
64
Date d'inscription
jeudi 4 mars 2010
Statut
Membre
Dernière intervention
17 juin 2010

22 mars 2010 à 17:12
Merci Alain pour ta réponse si rapide.

J'ai écris le code suivant :

For i = 0 To Liste.Lstb_pts.ListCount - 1
If Txtb_x < Liste.Lstb_pts.List(i, 3) Then
Liste.Lstb_pts.AddItem Val(Txtb_x.Text), i
Liste.Lstb_pts.List(i, 1) = Val(Txtb_y.Text)
Liste.Lstb_pts.List(i, 2) = Val(Txtb_z.Text)
Liste.Lstb_pts.List(i, 3) = Val(Txtb_t.Text)
' on insére la nouvelle ligne à la position i (l'ancien i devient i +1)
End If
Next


mais mon nouveau point s'insère autant de fois qu'il y a de point dans ma liste "Lstb_pts" et en toute première position... si jamais tu peux m'éclairer !
0
cs_Galain
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
7
22 mars 2010 à 23:48
crée un nouveau projet avec une form et une listbox appelée Liste
Dans le Form.Load de cette feuille colles-y ce code et exécute le

tu verras que 3759 s'est inséré dans la liste à la bonne place
a toi de t'en inspirer

    Dim inserte As String
    Dim i As Integer, j As Integer
    
    Liste.AddItem "3728"
    Liste.AddItem "3738"
    Liste.AddItem "3748"
    Liste.AddItem "3758"
    Liste.AddItem "3768"
    Liste.AddItem "3778"
    Liste.AddItem "3788"
    Liste.AddItem "3798"
    inserte = "3759"
    For i = 0 To Liste.ListCount - 1
        If inserte < Liste.List(i) Then
            ' on insére la nouvelle ligne à la position i en  3 étapes
            ' 1) on rajoute la dernière ligne
            Liste.AddItem Liste.List(Liste.ListCount - 1)
            ' 2) on descend toutes les lignes de Listcount-3 à i d'un cran
            For j = Liste.ListCount - 3 To i Step -1
                Liste.List(j + 1) = Liste.List(j)
            Next j
            ' 3) on insère notre ligne
            Liste.List(i) = inserte
            Exit For
        End If
    Next i



La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
stick25
Messages postés
64
Date d'inscription
jeudi 4 mars 2010
Statut
Membre
Dernière intervention
17 juin 2010

23 mars 2010 à 09:38
Un énorme merci Alain, c'est génial, ça marche !!! Tu mets fin à beaucoup de prises de tête !

Je pense avoir compris tout le code, mais peux-tu m'expliquer l'intérêt d'utiliser step-1 ?

J'ai un dernier problème qui me permettra de boucler mon programme. J'ai du mal à le résoudre mais je pense que si je comprend bien step-1 je pourrai peut-être y arriver.
Mon problème est le suivant ; je veux maintenant supprimer une ligne en précisant la valeur de t à supprimer. Mon code est le suivant :

Dim i As Integer
For i = 0 To Liste.Lstb_pts.ListCount - 1

If Suppression.Txtb_suppr_t = Liste.Lstb_pts.List(i, 3) Then
Liste.Lstb_pts.ListIndex = i
Liste.Lstb_pts.RemoveItem (i)

ElseIf Suppression.Txtb_suppr_t <> Liste.Lstb_pts.List(i, 3) Then
MsgBox "Point spécifié non trouvé dans la liste", 0, "Erreur"

End If
Next


Mais il me met autant de fois la msgbox d'erreur que le nombre d'élément de la liste et même si la condition du if est vérifiée, il me met quand même la msgbox avant de supprimer la ligne et d'arrêter le programme à cause d'erreur. Je comprends à peu près pourquoi j'ai cette erreur, mais je n'arrive pas à la corriger.
Donc si jamais tu as encore 5min de ton temps à me consacrer ça serait génialissime !!
Merci d'avance!
0

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

Posez votre question
cs_Galain
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
7
23 mars 2010 à 10:19
Reprenons notre exemple
nous avons la liste 3728,3738,etc... jusqu'à 3798
Pourquoi le Step -1 ?
tout d'abord For i 1 to 10 boucle pour i 1,2,3,4............jusqu'à 10
For i = 10 to 1 Step -1 fera de même mais de 10,9,8,7 .........3,2,1
On peut faire For i = 0 to 10 Step 2 et on n'aurait que les i pairs(0 ,02 , 4 , 6 , 8 et 10)
Step signifie pas en anglais


Liste.AddItem "3728"
Liste.AddItem "3738"
Liste.AddItem "3748"
Liste.AddItem "3758"
Liste.AddItem "3768" 4) idem et on insère notre nouvelle ligne
Liste.AddItem "3778" 3) on descend cette ligne en dessous
Liste.AddItem "3788" 2) on descend cette ligne en-dessous
Liste.AddItem "3798"
1) Liste.Additem "3798" pour descendre la dernière valeur

inserte = "3759"

Dans l'exemple on insère 3759 dans la liste

si on faisait sans le Step -1 et dans l'odre croissant de i pour la première boucle la valeur 3768 en descendant écraserait la valeur 3778 et ainsi de suite

Pour ton nouveau problème c'est toi qui ne réfléchit pas assez à ta procédure
Je vais te la faire en bon français

Déclarer i comme integer (Dim)
dim suppression as boolean (indique si suppression faite ou non)

suppression = fausse (elle n'est pas faite)
Pour i 0 à nombredelignes -1 (For i ......)
Si Valeuràchercher = Celledelaliste ( If etc....)
Supprimer la ligne i
suppression = vraie (elle est faite)
Sortir de la boucle par Exit for
fin si (End if)
Prochain i (Next i)
si suppression est faux
Message "La valeur t n'a pas été trouvée"
fin si



La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
cs_Galain
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
7
23 mars 2010 à 10:22
Au cas tu n'y arrives pas je te donnerai évidemment la solution mais il faut bien que tu bosses aussi un peu
A+

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
stick25
Messages postés
64
Date d'inscription
jeudi 4 mars 2010
Statut
Membre
Dernière intervention
17 juin 2010

23 mars 2010 à 10:45
Merci Alain, c'et bon, ça marche !!

Vraiment merci pour ta gentillesse. Désolé de toutes mes questions mais vu que je suis débutant, je n'ai pas encore tout les bons réflexes !!

Merci
0
cs_Galain
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
7
23 mars 2010 à 11:08
Rassures-toi : on a tous débuté un jour mais avec l'expérience et les conseils d'autrui les résultats sont plus qu'encourageants
bonne prog et A+

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
chakourcsharp
18 janv. 2013 à 00:53
bonjour!

j'ai un question,comment on peut faire la somme des plusieurs items dans une

liste (ListBox) et afficher la somme dans une zone de texte(TextBox) tous ça apres une click sur

le button(Button),
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
18 janv. 2013 à 01:10
Bonjour,
je veux croire que ton problème est uniquement la somme et pas le reste, bien trop élémentaire (le bouton et l'inscription du résultat !).
Et si tu relisais plus attentivement la présente discussion ? Car tu y as ta réponse dès la 1ère page



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0