IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

ListView et Calcul


Sujet :

VB.NET

  1. #1
    Membre habitué
    Inscrit en
    Juin 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 7
    Par défaut ListView et Calcul
    Bonjour !

    Je cherche à additionner les champs d'un ListView afin de marquer le total dans une TextBox mais malheureusement je n'y parviens pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub btnTotalAReglerFictifTrouverFiche_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTotalAReglerFictifTrouverFiche.Click
            Dim souTot As Double
            Dim strSousTot As String
            Dim total As Double
     
            Do While lvEvtTrouverFiche.SelectedItems.Count ' Tant qu'un item est sélectionné
                strSousTot = lvEvtTrouverFiche.SelectedItems(0).SubItems(4).Text ' On sélectionne son prix
                souTot = Convert.ToDecimal(strSousTot) ' On cast le string en double
                total += souTot
            Loop
            tbTotalARegler.Text = total
        End Sub
    Si quelqu'un pouvait m'aider la dessus

  2. #2
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Bonsoir,

    Ça ressemble à une belle boucle infinie ceci, ta boucle est définie comme suis:

    Tant qu'il y a des éléments sélectionnés (au passage il faut noter la conversion implicite de Count (qui renvoie un entier) en Boolean (testé par le While) qui ne renvoie False que si Count vaut 0.

    Le souci c'est qu'à aucun moment dans ta boucle tu ne modifie ce nombre d'éléments sélectionnés donc la boucle ne s'arrête jamais (un bon moyen pour faire grimper le total de la facture )

    Pour résoudre ton souci tu peux:
    1. Déselectionner l'élément dans la boucle qui permettra à celle-ci de pouvoir s'arrêter (et mettre While ... .Count > 0 c'est plus propre)
    2. Mieux transformer ce While en For (ou For Each) en effet tu connais d'avance le nombre d'itérations à faire)
    3. Si tu possèdes le framework 3.5 ou 4 utiliser la méthode d'extension Sum sur ta collection.


    Cordialement !

  3. #3
    Membre habitué
    Inscrit en
    Juin 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 7
    Par défaut
    Yes !

    Merci Sehnsucht

    J'ai opté pour la solution For Each ça marche impec, merci pour l'aide

    By the way, si ça intéresse quelqu'un dans l'avenir, je poste mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
            Dim souTot As Double
            Dim strSousTot As String
            Dim total As Double
            Dim objLVI As ListViewItem
            Dim lvi As ListView.ListViewItemCollection = DirectCast(lvEvtTrouverFiche.Items, ListView.ListViewItemCollection)
     
            For Each objLVI In lvi
                If objLVI.Selected = True Then
                    strSousTot = lvEvtTrouverFiche.SelectedItems(0).SubItems(4).Text ' On sélectionne son prix
                    souTot = Convert.ToDecimal(strSousTot) ' On cast le string en double
                    total += souTot
                    objLVI.Selected = False
                End If
            Next
            tbTotalARegler.Text = total
    Encore merci pour l'aide

  4. #4
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Houlà, ce n'est pas exactement ce à quoi je songeait en parlant de boucle, tu fais plusieurs choses étranges qui heureusement s'annulent entre elles et ainsi te permettent d'obtenir mais c'est presque un coup de chance voilà en pseudo-code ce que tu fais en gros
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Pour chaque élément de ma ListView
        Si l'élément est sélectionné Alors
            Ajouter au total la valeur du premier élément sélectionné de ma ListView
            Désélectionner l'élément de la boucle
        Fin Si
    Fin Pour
    Ceci fonctionne uniquement parce que dans ta boucle le premier élément sélectionné correspond à l'élément que tu itères dans ta boucle (avec tous ces "éléments" ma phrase n'est pas très claire )

    Pourquoi ne pas "boucler" uniquement sur les éléments sélectionnés ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    For Each selectedItem As ListViewItem In lvEvtTrouverFiche.SelectedItems
        strSousTot = selectedItem.SubItems(4).Text ' On sélectionne son prix
        souTot = Convert.ToDecimal(strSousTot) ' On cast le string en double
        total += souTot
    Next
    ' Si tu souhaites effacer la sélection décommenter cette ligne
    ' lvEvtTrouverFiche.SelectedItems.Clear
    Cordialement !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Calcul Somme Colonne Listview Selon Valeur d'une autre colonne.
    Par alfadz dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/09/2014, 20h18
  2. Réponses: 12
    Dernier message: 19/08/2012, 14h31
  3. [XL-2007] Remplir une listview à partir d'une feuille de calcul ou de textbox
    Par rvtoulon dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/10/2009, 23h43
  4. [TP7] Calculer sin, cos, tan, sqrt via le FPU
    Par zdra dans le forum Assembleur
    Réponses: 8
    Dernier message: 25/11/2002, 04h09
  5. Algo de calcul de FFT
    Par djlex03 dans le forum Traitement du signal
    Réponses: 15
    Dernier message: 02/08/2002, 17h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo