IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

remplacement du point par une virgule


Sujet :

Windows Forms

  1. #1
    Membre confirmé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Points : 457
    Points
    457
    Par défaut remplacement du point par une virgule
    Bonjour tout le monde

    Je developpe un petit programme qui utilise un datagridview pour faire de la saisie. Je suis confronter a la problèmatique de remplacer le point '.' par la virgule ',' en cours de saisie dans une cellule, car lors de la validation il est facher avec mois , car il n'accepte pas les points ( la colonnes est liées avec un champs numerique de type money dans SQL

    Quelqu'un a une idée sur le sujet

    Merci bien des fois

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2009
    Messages : 125
    Points : 59
    Points
    59
    Par défaut
    j'espère que ce bout de code va vous aider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub DataGridView1_CellValidated(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValidated
            For i As Integer = 0 To DataGridView1.RowCount - 1
                Try
                    DataGridView1.Rows(i).Cells("NomColonne").Value = DataGridView1.Rows(i).Cells(0).Value.ToString.Replace(".", ",")
                Catch ex As Exception
                End Try
            Next
        End Sub

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 35
    Points
    35
    Par défaut
    Le CellValidated (et donc le CellValidating) s'exécute à chaque fois qu'on sort d'une cellule modifiée, si je ne m'abuse... alors pas la peine de vérifier toutes les cellules du DataGridView... il suffit de vérifier celle dont on vient de sortir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub DataGridView1_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValidating
     
        If (DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value IsNot Nothing) Then
            Try
                DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value.ToString.Replace(".", ",")
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End If
     
    End Sub
    Tiens nous au courant.

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2009
    Messages : 125
    Points : 59
    Points
    59
    Par défaut
    oui vous avez raison, c'est le code convenable a ton problème, merci pour m'avoir informer sur le e.rowindex et le e.columnindex, ca me facilite pas mal de tache
    au même temps je ne pense pas que c la solution que tu cherche, parce que t'a déjà une idée plus mieux que moi

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 35
    Points
    35
    Par défaut
    Ce n'est pas moi qui ai posé la question !

  6. #6
    Membre confirmé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Points : 457
    Points
    457
    Par défaut
    Citation Envoyé par Firya Voir le message
    Le CellValidated (et donc le CellValidating) s'exécute à chaque fois qu'on sort d'une cellule modifiée, si je ne m'abuse... alors pas la peine de vérifier toutes les cellules du DataGridView... il suffit de vérifier celle dont on vient de sortir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub DataGridView1_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValidating
     
        If (DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value IsNot Nothing) Then
            Try
                DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value.ToString.Replace(".", ",")
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End If
     
    End Sub
    Tiens nous au courant.
    Avec ce bout de code, une erreur apparait lorsque je tapes su Enter ou une touches de navigation ( Flèche )

    En fait dans une cellule je tapes 14.21 et cela dois se traduire par 14,21

    merci

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 35
    Points
    35
    Par défaut
    J'ai bien compris ce que tu cherches à faire !

    Est-ce que tu pourrais me fournir ce message d'erreur, svp ?

  8. #8
    Membre confirmé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Points : 457
    Points
    457
    Par défaut
    Voici en pièces attachées
    Images attachées Images attachées  

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 35
    Points
    35
    Par défaut
    Je pense avoir trouvé une solution beaucoup plus simple. Chez moi, cela fonctionne très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub DataGridView1_CellValidated(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValidated
     
    	DataGridView1.CurrentCell.Value = DataGridView1.CurrentCell.EditedFormattedValue.ToString.Replace(".", ",")
     
    End Sub
    Tiens moi au courant

  10. #10
    Membre confirmé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Points : 457
    Points
    457
    Par défaut
    Citation Envoyé par Firya Voir le message
    Je pense avoir trouvé une solution beaucoup plus simple. Chez moi, cela fonctionne très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub DataGridView1_CellValidated(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValidated
     
    	DataGridView1.CurrentCell.Value = DataGridView1.CurrentCell.EditedFormattedValue.ToString.Replace(".", ",")
     
    End Sub
    Tiens moi au courant
    Même problème
    lorsque je tapes 21.14 puis ENTER le message apparait

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 35
    Points
    35
    Par défaut
    Bizarre, je n'obtiens le message d'erreur que si je tape du texte classique... par exemple, si je tape "popo" dans la cellule et que je fais ENTER, j'ai le message d'erreur... si je tape 21.24, c'est remplacé par 21,24 et je passe à la ligne suivante...

    Avec tous les essais et erreurs qu'on a fait, vérifie tout de même que tu n'as pas de code qui parasite le bon fonctionnement... le seul évènement dont tu as besoin, c'est le DataGridView1.CellValidated ... si d'autres évènements sont gerés, désactive les temporairement pour tester. Si cela ne fonctionne toujours pas, poste le code complet de la Form qui contient le DataGridView et je jeterais un coup d'oeil.

  12. #12
    Membre averti Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Points : 426
    Points
    426
    Par défaut
    Peut-être en utilisant l'event CellValidating au lieu de CellValidated.

    Mais le mieux est sûrement d'utiliser le System.Globalization:

    Application.CurrentCulture.NumberFormat.NumberDecimalSeparator

  13. #13
    Membre confirmé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Points : 457
    Points
    457
    Par défaut
    Citation Envoyé par Firya Voir le message
    Bizarre, je n'obtiens le message d'erreur que si je tape du texte classique... par exemple, si je tape "popo" dans la cellule et que je fais ENTER, j'ai le message d'erreur... si je tape 21.24, c'est remplacé par 21,24 et je passe à la ligne suivante...

    Avec tous les essais et erreurs qu'on a fait, vérifie tout de même que tu n'as pas de code qui parasite le bon fonctionnement... le seul évènement dont tu as besoin, c'est le DataGridView1.CellValidated ... si d'autres évènements sont gerés, désactive les temporairement pour tester. Si cela ne fonctionne toujours pas, poste le code complet de la Form qui contient le DataGridView et je jeterais un coup d'oeil.
    J'ai refais un nouveau projet ( pour être sûre ), a soir:
    Une form
    Un DatagridViewer
    J'ai lié le datagrid avec un table de la DB avec le Wizard ( pour faire vite )
    je lance le programme
    dans le datagridviewer je modifie un montant 0,58 par 0.14 et paf message mentionné plus haut

  14. #14
    Membre confirmé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Points : 457
    Points
    457
    Par défaut
    Citation Envoyé par roster Voir le message
    Peut-être en utilisant l'event CellValidating au lieu de CellValidated.

    Mais le mieux est sûrement d'utiliser le System.Globalization:

    Application.CurrentCulture.NumberFormat.NumberDecimalSeparator
    Tu peux m'en dire plus a ce sujet

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplacer un point par une virgule
    Par AJ_ing dans le forum Excel
    Réponses: 7
    Dernier message: 25/06/2012, 20h36
  2. Réponses: 6
    Dernier message: 27/12/2009, 21h35
  3. [PROC] Remplacer un point par une virgule dans une Proc Tabulate
    Par PAULOM dans le forum SAS Base
    Réponses: 2
    Dernier message: 20/08/2009, 08h36
  4. remplacer un point par une virgule
    Par paolo2002 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/04/2008, 09h43
  5. [C#] Remplacer un point par une virgule
    Par SLicTa dans le forum Windows Forms
    Réponses: 6
    Dernier message: 03/01/2008, 13h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo