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

Macros et VBA Excel Discussion :

chiffre décimal toujours des problèmes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Par défaut chiffre décimal toujours des problèmes
    Bonjour,

    j'utilise une macro access qui ouvre un fichier excel et insère des données dans une table notamment des chiffres décimal.

    Pour controler la saisie des utilisateurs, je vérifie que dans une cellule ou on attends du numérique que l'on ne saisisse pas du texte.

    et par hasard je suis tombé sur un truc un peu bizare :

    si je met un chiffre avec une virgule, pas de problème la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IsNumeric(xlsFeuille.Cells(iNumLigne, iNumPeriode)) = False
    renvoi bien true.

    Par contre, si je saisi un chiffre décimal avec un point, la la fonction me renvoi "false" alors que c'est bien du numérique. Conséquence je rejette la saisie de l'utilisateur alors qu'elle est correct...

    est-ce que quelqu'un sait ce qu'il se passe et aurait une solution ?

    merci

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour;

    Par contre, si je saisi un chiffre décimal avec un point, la la fonction me renvoi "false" alors que c'est bien du numérique. Conséquence je rejette la saisie de l'utilisateur alors qu'elle est correct...
    Je suis étonné de cela, car en VBA la virgule n'est pas reconnu comme symbole décimal et pose régulièrement des problèmes quand on à ce symbole dans les paramètres régionaux si qu'on ne gère pas le symbole en code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IsNumeric("13.2") = True
    er
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IsNumeric("13,2") = False

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Par défaut
    en allant plus loin, j'enleve le controle de saisie, il y a un plantage a l'exécution de la requete >> le champs dans la table est du numérique, j'ai l'impression qu'il considère le chiffre comme une chaine de caractère à cause du point ?

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Et si tu remplaces les "." par des ","

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IsNumeric(Replace(xlsFeuille.Cells(iNumLigne, iNumPeriode).Value,".",",")) = False

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Par défaut
    jfontaine, merci de ta réponse.

    Je confirme ce que je dis, si je saisi 100.35, la fonction isnumeric renvoi bien false.

    Si je saisi 100,35, la fonction renvoi vrai.

    mon paramétrage est French(France). pour ce paramétrage le symbole décimal est la virgule.

    Bonjour Ormonth, et merci de ta réponse j'ai lu ce que tu as posté, mais je n'y ai pas trouvé de solutions.

    Peux-tu m'expliquer d'avantage ?

    Merci.

    Citation Envoyé par jfontaine Voir le message
    Et si tu remplaces les "." par des ","

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IsNumeric(Replace(xlsFeuille.Cells(iNumLigne, iNumPeriode).Value,".",",")) = False
    je sais pas trop en fait, car j'utilise a la construction de ma requete la fonction STR() qui permet de substituer la virgule du chiffre décimal par un point pour pas que la syntaxe SQL soit fausse, tu vois ce que je veux dire ?

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IsNumeric(Replace(xlsFeuille.Cells(iNumLigne, iNumPeriode).Value,".",",")) = False
    Ici on remplace uniquement dans la condition.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlsFeuille.Cells(iNumLigne, iNumPeriode).Value
    Contient toujours la virgule qui sera remplacée ensuite pour la requête SQL

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Par défaut
    Citation Envoyé par Ormonth Voir le message
    Bonjour,

    je pige mal le contexte
    tu saisis où dans quoi ?
    je saisi un chiffre décimal avec comme symbole décimal le point dans la cellule excel.

    Citation Envoyé par jfontaine Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IsNumeric(Replace(xlsFeuille.Cells(iNumLigne, iNumPeriode).Value,".",",")) = False
    Ici on remplace uniquement dans la condition.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlsFeuille.Cells(iNumLigne, iNumPeriode).Value
    Contient toujours la virgule qui sera remplacée ensuite pour la requête SQL
    si j'utilise le replace dans la condition effectivement ca marche.

    mais plus loin a l'exécution de la requete ça plante car dans la table le champs est de type numérique.

    donc je sais pas trop ce que ca va donner si j utilise également le replace dans la requete avec également la fonction STR comme exxpliqué plus haut.

  8. #8
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    vois ceci http://didier-gonard.developpez.com/...texbox/#LV-G-1

    et le reste pour le fond entre les séparateurs feuilles et VBA..

    cordialement,

    Didier

  9. #9
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    je pige mal le contexte
    Par contre, si je saisi un chiffre décimal avec un point
    tu saisis où dans quoi ?

    vois ceci aussi sinon :

    Influence des séparateurs décimal et listes FR/US sur l’enregistreur de macro


    cordialement,

    Didier

Discussions similaires

  1. [Lazarus] Toujours des problèmes d'accents !
    Par JP.NUAGE dans le forum Lazarus
    Réponses: 10
    Dernier message: 12/03/2013, 10h10
  2. Toujours des problèmes sur IReport
    Par yaya0057 dans le forum iReport
    Réponses: 1
    Dernier message: 15/07/2008, 14h36
  3. Toujours des problème de "undefined reference to"
    Par Verbalinsurection dans le forum C++
    Réponses: 12
    Dernier message: 12/10/2007, 02h38
  4. [Sécurité][Sécurité]j'ai toujours des problèmes
    Par DSabah dans le forum Sécurité
    Réponses: 4
    Dernier message: 04/06/2007, 09h33
  5. SQL server et toujours des problèmes de dates ...
    Par constantin dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 28/10/2005, 13h19

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