Remplacement du point par une virgule lors de la saisie dans un datagridview

Soyez le premier à donner votre avis sur cette source.

Vue 12 207 fois - Téléchargée 987 fois

Description

Cette source permet d'avoir le même fonctionnement qu'excel : lorsque l?utilisateur saisie des nombres, le point est transformé en le séparateur de décimales du système (dans mon cas la virgule).

Source / Exemple :


Public Class Form1

    'Lorsque l'utisateur va saisir dans la colonne "Decimal", les . seront remplacés par le bon séparteur de décimals.

    Private Sub DataTable1DataGridView_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataTable1DataGridView.EditingControlShowing

        Dim voControl As DataGridViewTextBoxEditingControl

        Try
            If DataTable1DataGridView.Columns(DataTable1DataGridView.CurrentCell.ColumnIndex).Name = "DataGridViewTextBoxColumnDecimal" Then

                voControl = CType(e.Control, DataGridViewTextBoxEditingControl)

                AddHandler voControl.KeyPress, AddressOf EditingControl_KeyPress

            End If

        Catch ex As Exception

        End Try

    End Sub

    Private Sub EditingControl_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)

        Dim vsDecimalSeparator As Char

        vsDecimalSeparator = System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator

        If vsDecimalSeparator <> "." And e.KeyChar = "." Then
            e.KeyChar = vsDecimalSeparator
        End If

    End Sub

End Class

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

romagny13
Messages postés
710
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
2 -
pa mauvais ce petit bout de code
Bon fo etre honnete je sais pas sil servira souvent, mais on peut peut etre se baser dessus pour en faire des variantes
8/10 quoique allez je mets mm 9
cs_Benouille
Messages postés
216
Date d'inscription
jeudi 24 octobre 2002
Statut
Membre
Dernière intervention
7 septembre 2007
1 -
ça me semble un poil compliqué pour ce que ça fait mais c'est ultra propre nonobstant
Seb_cba
Messages postés
11
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
16 juillet 2008
-
Il y un dejà post ou l'on change la culture de l'appli.
Voici le bout de code

'On récupère le séparateur qui est utilisé sur la station de travail
Dim oldDecimalSeparator As String = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator

'On compare le séparateur instancié avec le point
If oldDecimalSeparator = "." Then
'Le séparateur instancié dans le panneau de configuration est le point : "."
Else
'Le séparateur instancié dans le panneau de configuration est la virgule : ","
Dim forceDotCulture As CultureInfo

'Code un peu louche il faut avouer, mais il faut faire avec car le framework pose problème
'ici; en effet, il faut cloner la culture pour pouvoir modifier les paramètres de l'application
'car sinon la culture de base est en lecture seule.
forceDotCulture = Application.CurrentCulture.Clone()

'On affecte le point : "." comme paramètre de séparateur décimal
forceDotCulture.NumberFormat.NumberDecimalSeparator = "."

'Là, on affecte l'application cloné à celle où l'on travaille
'C'est un passage flou car en fait, l'appli est en mode readonly et l'on ne peut pas
'la modifier directement, d'où cette affectation
Application.CurrentCulture = forceDotCulture

End If

C'est peut etre une solution bizarre mais ça marche.
Tu fais ça au demarrage et c'est bon (Il y a que la culture de l'appli qui change)
tikrimi
Messages postés
192
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
9 mars 2007
1 -
Bonjour,

Merci pour le bout de code qui peut être fort utile. Par contre, ici le but est de ne surtout pas changer de culture (le séparateur de décimal est toujours la visgule pour la France), mais juste de pouvoir utiliser le pavé numérique pour saisir des nombres avec des virgules.

TiK
cs_samscapa
Messages postés
2
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
19 avril 2007
-
Tout simplement merci car cela va grandement me servir !

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.