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 :

Multiplier 2 colonnes dans datagridview [Débutant]


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2011
    Messages : 141
    Points : 60
    Points
    60
    Par défaut Multiplier 2 colonnes dans datagridview
    Bonsoir à tous les amis,

    Pour mon projet de licence je débute dans la programmation de base de donnée Access que je lie avec visual basic 2010 par le databinding source.

    (J'ai trouvé plusieurs exemples sur youtube trés bien expliqué.)


    Que ce soit en anglais ou en Francais je n'ai pas trouvé de piste pour multiplier 2 colonne entre elle et donné le résultat dans une 3ème colonne

    Je possède :
    mon Datagridview1 avec 8 colonnes
    - la colonne "Quantité" (colonne numéro 6)
    -la colonne "Prix u" (colonne numéro 8)
    et la colonne "Total" (colonne numéro 9)

    à chaque saisie par l'utilisateur sur les lignes "Quantité" et "Prix u", je souhaiterai avoir le résultat de la multiplication dans ma colonne "Total"

    Pour ne pas avoir d’exception je pensais à mettre au départ les valeurs par défauts à 0.

    Dans quel évènement ce mettre ?

    Avez-vous une idée et est-ce que cela est possible ?

    Je remercie par avance tout ceux qui pourront m'apporter de l'aide

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 104
    Points : 206
    Points
    206
    Par défaut
    A tester :
    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
    17
    18
    19
    20
    21
    22
        Private Sub DataGridView1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
            'Colonne 6 : Quantité
            'Colonne 8 : Prix unitaire
            'Colonne 9 : Total
            Dim row As Integer = e.RowIndex
            Dim col As Integer = e.ColumnIndex
            If col = 6 Or col = 8 Then
                If DataGridView1.Item(6, row).Value <> "" And DataGridView1.Item(8, row).Value <> "" Then
                    Try
                        'Afficher le résultat en colonne 9
                        DataGridView1.Item(9, row).Value = CDec(DataGridView1.Item(6, row).Value) * CDec(DataGridView1.Item(8, row).Value)
                    Catch ex As Exception
                        'Gestion des erreurs en cas de saisie incorrecte
                        MessageBox.Show(ex.Message)
                        DataGridView1.Item(9, row).Value = ""
                    End Try
                Else
                    'La quantité ou le prix unitaire est vide
                    DataGridView1.Item(9, row).Value = ""
                End If
            End If
        End Sub

  3. #3
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2011
    Messages : 141
    Points : 60
    Points
    60
    Par défaut
    il faut que je remplace les numéro 0,1 et 2 par les bon numéros de mes colonnes concernées ?

    Comment connaitre le numéro de colonne que je souhaite multiplier ??
    (Dans mon exemple je les ai simplement compter mais ce n'est peux être pas la réalité)

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 104
    Points : 206
    Points
    206
    Par défaut
    J'ai modifié...

  5. #5
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2011
    Messages : 141
    Points : 60
    Points
    60
    Par défaut
    J'avais remplacer les bon numéros par les colonnes et c'est tout à fait cela !!
    Un grand grand merci je commencais à plus y croire

    Petit bémol quand je tape admettons 55.5 j'ai le message suivant :

    La conversion de la chaine "55.5" en type décimal n'est pas valide.

    Comment éviter cela ?

    (Pour ma colonne de prix et Qté je suis en datatype= System.String)

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 104
    Points : 206
    Points
    206
    Par défaut
    On utilisant cette fois le nom (propriété NAME) des colonnes :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
        Private Sub DataGridView1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
            'Je récupère la colonne Quantité qui a pour propriété NAME "ColonneQuantité"
            Dim colMultiplicande As DataGridViewColumn = DataGridView1.Columns("ColonneQuantite")
            'Je récupère la colonne Prix Unitaire qui a pour propriété NAME "ColonnePrixUnit"
            Dim colMultiplicateur As DataGridViewColumn = DataGridView1.Columns("ColonnePrixUnit")
            'Je récupère la colonne Total qui a pour propriété NAME "ColonneTotal"
            Dim colTotal As DataGridViewColumn = DataGridView1.Columns("ColonneTotal")
            'Sur quelle ligne et colonne se trouve la cellule éditée
            Dim row As Integer = e.RowIndex
            Dim col As Integer = e.ColumnIndex
            'La cellule éditée figure t-elle dans la colle Quantité ou Prix Unitaire
            If col = colMultiplicande.Index Or col = colMultiplicateur.Index Then
                If DataGridView1.Item(colMultiplicande.Index, row).Value <> "" And DataGridView1.Item(colMultiplicateur.Index, row).Value <> "" Then
                    Try
                        'Afficher le résultat 
                        DataGridView1.Item(colTotal.Index, row).Value = CDec(DataGridView1.Item(colMultiplicande.Index, row).Value) * CDec(DataGridView1.Item(colMultiplicateur.Index, row).Value)
                    Catch ex As Exception
                        'Gestion des erreurs en cas de saisie incorrecte
                        MessageBox.Show(ex.Message)
                        DataGridView1.Item(colTotal.Index, row).Value = ""
                    End Try
                Else
                    'La quantité ou le prix unitaire est vide
                    DataGridView1.Item(colTotal.Index, row).Value = ""
                End If
            End If
        End Sub

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 104
    Points : 206
    Points
    206
    Par défaut
    Remodifié pour que le "." ou la "," soit tous deux acceptés comme séparateur décimal :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
        Private Sub DataGridView1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
            'Je récupère la colonne Quantité qui a pour propriété NAME "ColonneQuantité"
            Dim colMultiplicande As DataGridViewColumn = DataGridView1.Columns("ColonneQuantite")
            'Je récupère la colonne Prix Unitaire qui a pour propriété NAME "ColonnePrixUnit"
            Dim colMultiplicateur As DataGridViewColumn = DataGridView1.Columns("ColonnePrixUnit")
            'Je récupère la colonne Total qui a pour propriété NAME "ColonneTotal"
            Dim colTotal As DataGridViewColumn = DataGridView1.Columns("ColonneTotal")
            'Sur quelle ligne et colonne se trouve la cellule éditée
            Dim row As Integer = e.RowIndex
            Dim col As Integer = e.ColumnIndex
            'La cellule éditée figure t-elle dans la colonne Quantité ou Prix Unitaire
            If col = colMultiplicande.Index Or col = colMultiplicateur.Index Then
                If DataGridView1.Item(colMultiplicande.Index, row).Value <> "" And DataGridView1.Item(colMultiplicateur.Index, row).Value <> "" Then
                    Try
                        'Obtenir le séparateur décimal
                        Dim separateur As String = System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator
                        'Récupérer les valeurs à multiplier
                        Dim multiplicande As String = DataGridView1.Item(colMultiplicande.Index, row).Value.ToString
                        Dim multiplicateur As String = DataGridView1.Item(colMultiplicateur.Index, row).Value.ToString
                        'Mettre le bon séparateur décimal
                        multiplicande = multiplicande.Replace(".", separateur)
                        multiplicande = multiplicande.Replace(",", separateur)
                        multiplicateur = multiplicateur.Replace(".", separateur)
                        multiplicateur = multiplicateur.Replace(",", separateur)
                        'Calculer et Afficher le résultat 
                        DataGridView1.Item(colTotal.Index, row).Value = CDec(multiplicande) * CDec(multiplicateur)
                    Catch ex As Exception
                        'Gestion des erreurs en cas de saisie incorrecte
                        MessageBox.Show(ex.Message)
                        DataGridView1.Item(colTotal.Index, row).Value = ""
                    End Try
                Else
                    'La quantité ou le prix unitaire est vide
                    DataGridView1.Item(colTotal.Index, row).Value = ""
                End If
            End If
        End Sub

  8. #8
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2011
    Messages : 141
    Points : 60
    Points
    60
    Par défaut
    Wahouuu !!
    Un grand grand merci tu me fais gagner des heures voir des journées de recherche !!

    Merci beaucoup

    J'ai des autres questions pour améliorer mon datagridview mais je demanderai sur un autre post car celui ci est résolu ;-)

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

Discussions similaires

  1. [Débutant] Faire Reference à une colonne dans Datagridview
    Par Lendcap dans le forum VB.NET
    Réponses: 3
    Dernier message: 27/03/2012, 14h55
  2. Réponses: 5
    Dernier message: 28/05/2008, 10h45
  3. Creation manuelle de colonne dans un datagridview
    Par redpopo dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/05/2008, 15h10
  4. Réponses: 1
    Dernier message: 26/10/2007, 18h57
  5. [C#][VS 2005]Supprimer la première colonne dans un DatagridView
    Par cmoiscrat dans le forum Windows Forms
    Réponses: 2
    Dernier message: 29/06/2006, 15h20

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