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

VB.NET Discussion :

problème de conversion de types en vb.net


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 89
    Par défaut problème de conversion de types en vb.net
    Bonjour
    je suis débutant en vb.net. J'écris une fonction qui prend en pramètre un integer (représentant le numéro de colonne dans un gridview) pour calculer la somme des cellules de cette colonne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function total(ByVal k As Integer)
            Dim s As Double
            s = 0
     
            Dim ro As GridViewRow
            Dim x As Double
     
            For Each ro In GridView1.Rows
                x = CDbl(ro.Cells(k).Text)
                s = s + x
            Next
            Return s
        End Function
    mais à l'exécution, j'obtient l'erreur suivant:

    Le format de la chaîne d'entrée est incorrect:
    Ligne 205 : x = CDbl(ro.Cells(k).Text)
    Pouvez vous m'aider?
    Cordialement

  2. #2
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Plutot que: ro.Cells(k).Text, y'a pas un truc du genre:ro.Cells(k).Value ?

    En fait je peux pas le tester, parce que je crois que c'est du ASP.NET que tu fais?

    Sinon, est ce qu'il y'a des cellules vide ou a null? Parce que tu ne fais pas de teste... Ca peut être une piste.

    Est ce que ça bug a la première ligne ou a la n ième?

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mai 2009
    Messages : 99
    Par défaut
    En effet, je pense comme notre ami mactwist que la bonne méthode pour récupérer la chaine serait plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ro.Cells(k).Value.ToString()
    La méthode ToString est très utile pour être sûr de retourner proprement une chaîne de caractères.

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 89
    Par défaut RE
    Citation Envoyé par Sarawyn Voir le message
    En effet, je pense comme notre ami mactwist que la bonne méthode pour récupérer la chaine serait plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ro.Cells(k).Value.ToString()
    La méthode ToString est très utile pour être sûr de retourner proprement une chaîne de caractères.
    Tout d'abord, merci beaucoup pour ta réponse.
    en asp.net on n'a pas de .Value
    aussi, j'ai besoin de retourner un double ( la somme ) et même j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim st as string
    st = ro.Cells(k).Text.Tostring
    x = CDbl(st)
    mais j'obtient la même erreur

  5. #5
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Question bête mais dans tes cellules, tu as donc des nombres décimaux...

    Est ce que le séparateur ne serait pas des points (plutôt que virgule)?

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 89
    Par défaut RE
    Citation Envoyé par mactwist69 Voir le message
    Question bête mais dans tes cellules, tu as donc des nombres décimaux...

    Est ce que le séparateur ne serait pas des points (plutôt que virgule)?
    non pas du tout c'est aps une question bête
    mon gridview sera rempli par l'utilisateur, donc il peut écrire soit des Integer soit des Double!

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mai 2009
    Messages : 99
    Par défaut
    Citation Envoyé par yrifka Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim st as string
    st = ro.Cells(k).Text.Tostring
    x = CDbl(st)
    mais j'obtient la même erreur
    Maintenant que tu as divisé le problème, il survient sur la récupération de chaîne ou sur la conversion ?

  8. #8
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Citation Envoyé par yrifka Voir le message
    non pas du tout c'est aps une question bête
    mon gridview sera rempli par l'utilisateur, donc il peut écrire soit des Integer soit des Double!
    Et la réponse est ? Par ce qu'il met un point, Visual Studio n'arrivera pas a convertir to String en Double, de même si il y a un caractère.

    Donc a ta place je ferai un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonString.Replace(".",",")
    Et aussi un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsNumeric(MonString)
    Pour être sur que la conversion marche.

  9. #9
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 89
    Par défaut RE
    Citation Envoyé par mactwist69 Voir le message
    Et la réponse est ? Par ce qu'il met un point, Visual Studio n'arrivera pas a convertir to String en Double, de même si il y a un caractère.

    Donc a ta place je ferai un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonString.Replace(".",",")
    Et aussi un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsNumeric(MonString)
    Pour être sur que la conversion marche.
    merci beaucoup pour ta réponse, je vais essayer et t'informer des nouveautés

  10. #10
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 89
    Par défaut RE
    je fais maintenet comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Function total(ByVal k As Integer) As Double
    
            Dim x As Double
            dim s as double = 0
            Dim st as string
    
            For Each ro In GridView1.Rows
                st = ro.Cells(k).Text
                
                If IsNumeric(st) Then
                    x = Convert.ToDouble(st)
                End If
                s = s + x
            Next
            Return s
        End Function
    et j'affiche le résultat dans un msgbox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox(total(1).Tostring)
    mais j'obtient toujours un 0 !

  11. #11
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Alors.... petit conseil:

    Mets un point d'arrêt au début de ta fonction est mais marcher ton code au pas a pas avec F10...

    Je pense que tu verras surement, que aucune des cases te retourne ISNumeric a True (si il y a des points ou autre), donc il n'additionne jamais rien.

    C'est pour ça qu'il faut remplacer tes points par des virgules... Enfin je dis ça mais en réalité tu ne m'as jamais répondu sur le format des valeurs de tes cellules....

  12. #12
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 89
    Par défaut RE
    Citation Envoyé par mactwist69 Voir le message
    Alors.... petit conseil:

    Mets un point d'arrêt au début de ta fonction est mais marcher ton code au pas a pas avec F10...

    Je pense que tu verras surement, que aucune des cases te retourne ISNumeric a True (si il y a des points ou autre), donc il n'additionne jamais rien.

    C'est pour ça qu'il faut remplacer tes points par des virgules... Enfin je dis ça mais en réalité tu ne m'as jamais répondu sur le format des valeurs de tes cellules....
    je saisi moi même les données ( j'essaye avec des simples valeurs comme 2 et 3 ...) et je n'ai pas mis aucun Validator sur les textbox de mon gridview

  13. #13
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    fonctionne au pas a pas, et regarde ce qu'il se passe au fur et à mesure... et regarde ce qu'il y a dans tes variables.

Discussions similaires

  1. [C# 2.0] Problème de conversion de type
    Par freerider1 dans le forum Windows Forms
    Réponses: 18
    Dernier message: 11/08/2017, 13h50
  2. Problème de conversion de type de données
    Par ruzakruzak dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/06/2007, 10h51
  3. Problème de conversion de types
    Par Rayndell dans le forum C++
    Réponses: 2
    Dernier message: 25/05/2007, 10h45
  4. [WD10] Problème de conversion de type
    Par rphenix dans le forum WinDev
    Réponses: 2
    Dernier message: 15/01/2007, 14h22
  5. [Excel] Problème de conversion de type de données
    Par keiserjo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/07/2006, 12h26

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