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

Windows Forms Discussion :

[VB.NET]Calculer une somme dans un DataGridView


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 23
    Par défaut [VB.NET]Calculer une somme dans un DataGridView
    Bonjour,
    j'utilise un DataGridView pour saisir des données
    voici un exemple de données que je saisi :
    Cote Qté
    -10 5
    -5 6
    0 2
    2 3

    et j'aimerai qu'au fur et à mesure de la saisie, calculer la somme des qté et afficher le résultat dans un label
    mon DataGridView est rattaché à un BindingSource, donc j'ai essayé aussi bien dans l'évènement CellValidating de mon DataGridView et dans l'évènement ListChanged du BindingSource, mais rien ne fonctionne
    Si quelqu'un à une idée, merci d'avance

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    tu fais une boucle qui lit une a une les lignes de ton datagrid (plus particulierement la cellule a sommer) et tu stocke la somme de la cellule precedente et celle actuelle dans une variable , que tu affiche dans la propriété text de ton label ...
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 23
    Par défaut
    ok je me doute bien qu'il faut procéder comme cela, mais dans quel évènement pour que la somme s'affiche en temps réél?

  4. #4
    Membre émérite
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Par défaut
    Perso, ce n'est pas comme cela que ferais en priorité mais néanmoins, je ne vois pas pourquoi ni DataGridView.CellValidating ni BindingSource.ListChanged n'est efficace.

    Qu'est-ce qui ne fonctionne pas exactement ?

    S'il fallait utiliser des événements, je ferais le calcul initial au chargement du DataGridView, puis pour les mises à jour, j'utiliserais plutôt CellDirtyChanged (un truc comme ça), c'est moins hard que CellValidating.
    Par contre si la source peut-être mise à jour de façon externe, effectivement il faut regarder aussi du côté du BindingSource avec ListChanged.

    Sinon as-tu pensé à créer une colonne calculée dans le DataTable sous jacent ou carrément à créer ta propre classe basée sur le Dataview source et lui injecter une propriété virtuelle qui renvoie ta somme ?
    Moi c'est ce que je ferais en priorité.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 23
    Par défaut
    Voila ce que j'ai essayé de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub MonDataGridView_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles MonDataGridView.CellValidating
            Try
                If e.ColumnIndex = 3 Then
                     Dim i, somme As Integer
                     For i = 0 To MonDataGridView.RowCount - 1
                         somme = somme + MonDataGridView.Item(3, i).Value
                     Next
                     LabelTotal.Text = "Total: " + somme.ToString
                EndIf
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
    End Sub
    il me sort l'erreur: l'opérateur + ne peut être défini entre un integer et System.DbNull,
    quand je debogue mon projet, je m'apperçois que la valeur que je viens de saisir (qui selon moi est MonDataGridView.Item(3, i).Value quand i vaut MonDataGridView.RowCount - 1) est égale à Null


    si je n'ai pas pensé aux autres idées que tu propose,c'est sans doute parceque je ne suis pas expert en .NET, mais merci de l'info, je vais essayer d'y regarder si j'arrive à comprendre ce que tu me propose

  6. #6
    Membre émérite
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Par défaut
    Je te conseille d'utiliser CellValueChanged (et éventuellement en complément CurrentCellDirtyStateChanged)

    Pour ton code, il te suffit d'ajouter un test sur la valeur renvoyé par tes cellules afin de détecter les valeurs null (ou non numériques éventuellement), ou alors de ne pas boucler sur la dernière ligne.

    Pour détecter un System.DbNull :

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    if MonDataGridView.Item(3, i).Value is System.DbNull

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 03/07/2013, 17h46
  2. [XL-2007] option boutton: comment calculer une somme dans un tableau
    Par Malek713 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/10/2010, 16h05
  3. Calculer une somme dans un tableau
    Par nawak.seb dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 10/02/2009, 16h21
  4. [c#.Net] calculer la somme d'une chaîne ?
    Par Ticoche dans le forum Windows Forms
    Réponses: 8
    Dernier message: 26/03/2008, 11h28
  5. Calcul d'une somme dans Excel ??
    Par LaVaZza dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 13/06/2006, 22h55

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