Format monétaire dans un DataGridView

Résolu
cs_Zeny Messages postés 14 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 9 avril 2013 - 15 juin 2008 à 15:17
cs_Zeny Messages postés 14 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 9 avril 2013 - 17 juin 2008 à 09:49
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

2 réponses

cs_christoni Messages postés 140 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 novembre 2010 7
16 juin 2008 à 18:32
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.
3
cs_Zeny Messages postés 14 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 9 avril 2013
17 juin 2008 à 09:49
Bonjour Christoni

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

zeny
0
Rejoignez-nous