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

cs_Zeny 14 Messages postés mardi 21 septembre 2004Date d'inscription 9 avril 2013 Dernière intervention - 15 juin 2008 à 15:17 - Dernière réponse : cs_Zeny 14 Messages postés mardi 21 septembre 2004Date d'inscription 9 avril 2013 Dernière intervention
- 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
Afficher la suite 

2 réponses

Répondre au sujet
cs_christoni 140 Messages postés mardi 25 novembre 2003Date d'inscription 1 novembre 2010 Dernière intervention - 16 juin 2008 à 18:32
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_christoni
cs_Zeny 14 Messages postés mardi 21 septembre 2004Date d'inscription 9 avril 2013 Dernière intervention - 17 juin 2008 à 09:49
0
Utile
Bonjour Christoni

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

zeny
Commenter la réponse de cs_Zeny

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.