1 pièce(s) jointe(s)
Colonne calculée dans un DataGridView
Bonjour le forum je souhaite dans un datagridview faire la multiplication de deux colonnes dont le résultat sera charger dans une colonne créé manuellement
pour cela j'ai créé la colonne 'Montant'
quelque recherche sur le forum mont permis de trouver le code ci-dessous
que j'ai essayer d'adapter à mon cas
Code:
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 dgvSalaire_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles dgvSalaire.CellValueChanged
'Je récupère la colonne Quantité qui a pour propriété NAME "ColonneQuantité"
Dim colMultiplicande As DataGridViewColumn = dgvSalaire.Columns(4)
'Je récupère la colonne Prix Unitaire qui a pour propriété NAME "ColonnePrixUnit"
Dim colMultiplicateur As DataGridViewColumn = dgvSalaire.Columns(5)
'Je récupère la colonne Total qui a pour propriété NAME "ColonneTotal"
Dim colTotal As DataGridViewColumn = dgvSalaire.Columns(6)
'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 dgvSalaire.Item(colMultiplicande.Index, row).Value <> "" And dgvSalaire.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 = dgvSalaire.Item(colMultiplicande.Index, row).Value.ToString
Dim multiplicateur As String = dgvSalaire.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
dgvSalaire.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)
End Try
Else
'La quantité ou le prix unitaire est vide
dgvSalaire.Item(colTotal.Index, row).Value = ""
End If
End If
End Sub |
mais au chargement de mon tableau la colonne MONTANT est toujours Vide et je ne comprend pas pourquoi
Pièce jointe 489247
Quel qu'un pourrais m'aider?
Précision le code ci-dessus fonction bien mais je voudrais qu'au chargement du datagridview les cellules des colonnes HORAIRE et TAUX qui contiennent des valeurs calcule automatiquement et affiche le résultat dans la colonne MONTANT or présentement je suis obligé de cliquer sur chaque cellule des colonnes HORAIRE ou TAUX pour voir le résultat afficher dans la colonne MONTANT