Format monétaire dans un DataGridView [Résolu]

Signaler
Messages postés
14
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
9 avril 2013
-
cs_Zeny
Messages postés
14
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
9 avril 2013
-
Bonjour,

Bon voila je patauge depuis quelques temps sur quelque chose qui devrait pourtant etre simple : Mettre au format monétaire une colonne d'un DataGridView indépendant.

pour que lorsqu'un nombre (passons sur le problème du controle de validité) par exemple 12 est saisi, la valeur affichée devienne 12,00 dans cette colonne

D'aprés l'aide disponnible sur MSDN j'ai essayé d'utilisé :

monDataGridView.Columns(4).DefaultCellStyle.Format = "c"  'sans résultat
monDataGridView.Columns(4).DefaultCellStyle.Format = "c"  'sans résultat pour 2 chiffre aprés la virgule

j'ai tenté de placer ce code dans plusieurs évenements sans succés
je précise aussi que le DataGridView en question est ajouté dynamiquement.

Voila en espérant avoir été clair, je vous remerci d'avance pour toutes les infos que vous pourrez m'apporter.

un extrait de code pour etre plus clair :Public

Class Form1

'==========================================================================================

' CHARGEMENT DU FORMULAIRE

'==========================================================================================

Private
Sub Form1_Load(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles
Me.Load

Dim myGrid
As
New DataGridView

Me.Controls.Add(myGrid)
  With myGrid    .Location New System.Drawing.Point(50, 50)    .RowHeadersVisible
False    . MultiSelect False     .AllowUserToAddRows
False     .AllowUserToDeleteRows False     .AllowUserToOrderColumns
False       .AllowUserToResizeColumns False      .AllowUserToResizeRows

False.Width = 703

.Height = 465

.RowCount = 20

.ColumnCount = 5

.Columns(0).Width = 50

.Columns(1).Width = 400

.Columns(2).Width = 50

.Columns(3).Width = 100

.Columns(4).Width = 100

.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(0).Name "REF".Columns(1).Name
"DESCRIPTION".Columns(2).Name "QTE".Columns(3).Name
"Px. UNIT".Columns(4).Name "Px TOTAL HT".Columns(0).DefaultCellStyle.Alignment DataGridViewContentAlignment.MiddleCenter

.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight

.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight

 

'LA PARTIE QUI ME POSE PROBLEME
'ne produit pas d'erreur mais ne 'formate' pas la colonne.Columns(3).DefaultCellStyle.Format "c".Columns(4).DefaultCellStyle.Format

"c" 

End
With

End
Sub

End

Class
A voir également:

2 réponses

Messages postés
140
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
1 novembre 2010
5
Bonsoir,
voici une piste :
tu déclares to DataGV et l'abonne aux événements de la classe correspondante.
Et tu supprimes la déclaration en rouge :



Public Class Form1
    Private WithEvents myGrid As New DataGridView

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
    Handles Me.Load
        ' Dim myGrid As New DataGridView

        With myGrid
            .Location = New System.Drawing.Point(50, 50)
            .RowHeadersVisible = False
            .MultiSelect = False
            .AllowUserToAddRows = False
            .AllowUserToDeleteRows = False
            .AllowUserToOrderColumns = False
            .AllowUserToResizeColumns = False
            .AllowUserToResizeRows = False
            .Width = 703
            .Height = 465
            .RowCount = 20
            .ColumnCount = 5

            .Columns(0).Width = 50
            .Columns(1).Width = 400
            .Columns(2).Width = 50
            .Columns(3).Width = 100
            .Columns(4).Width = 100
            .ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

            .Columns(0).Name = "REF"
            .Columns(1).Name = "DESCRIPTION"
            .Columns(2).Name = "QTE"
            .Columns(3).Name = "Px. UNIT"
            .Columns(4).Name = "Px TOTAL HT"

            .Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
            .Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
            .Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
            .Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
        End With
        Me.Controls.Add(myGrid)
    End Sub

L'événement suivant gère la mise en forme :

    Private Sub myGrid_CellFormatting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) _
    Handles myGrid.CellFormatting
        If myGrid.Columns(e.ColumnIndex).Name.Equals("Px. UNIT") Then
            If e.Value > 0 Then
                e.Value = CDec(e.Value).ToString("N2")
            End If
        End If
    End Sub
Bonne continuation.
Messages postés
14
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
9 avril 2013

Bonjour Christoni

Merci a toi  t'es un champion tu m'as bien dépanné

zeny