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 :

Problème Isnumeric Textbox.value "." "," [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 39
    Par défaut Problème Isnumeric Textbox.value "." ","
    Bonjour à tous,

    Je vous remercie déjà de prendre le temps de lire mon problème. En effet, j'ai un problème de test de valeur sur une textbox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    If IsNumeric(Purete.Value) Then
            If Purete.Value <= 0 Or Purete.Value > 100 Then
                MsgBox "La valeur de la pureté doit être comprise entre 0 et 100%", vbCritical
                GoTo fin
            End If
    Else
            MsgBox "La pureté doit être un nombre !", vbCritical
            GoTo fin
    End If
    Je veux tester comme le code l'indique si ma valeur de textbox est numérique ou pas. Le problème est que si j'exécute avec cela, que je mettre un nombre décimal avec un point ou une virgule, le code se place dans le "Elseé, il ne le considère donc pas comme un nombre.
    J'ai essayé en mettant val(purete.value), replace(purete.value,".",",").
    Mais rien n'y fait. Replace ne fonctionne pas mais val me tronque les décimales.

    Si vous avez une petite idée. La textbox se trouve sur un userform.
    Je vous remercie d'avance et vous souhaite une bonne soirée,

    Bien cordialement,

    Anthony

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        V = Replace(Purete.Value, ",", ".")
     
        If IsNumeric(V) Then
    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Ou peut-être encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If CDbl(Purete.Value) <= 0 Or CDbl(Purete.Value) > 100 Then

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bien vu !

    Z'avais un peu oublié les fonctions de conversion de types de données fonctionnant avec les deux séparateurs décimaux …

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    sinon pour les "," et ".", macro sur l'évènement KeyPress

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub purete_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Chr(KeyAscii) = "." Then KeyAscii = Asc(",")
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 39
    Par défaut
    Bonjour à tous,

    Je voulais déjà commencer par vous remercier pour vous intéresser à mon cas.
    J'ai essayer encore une fois vos propositions que j'avais déjà essayer avant même Cdbl() qui n'ont rien donné. En effet, le replace ne fait rien de plus et le Cdbl() m'inflige une erreur de compatibilité de type 13.

    Par contre, je n'ai pas bien saisi le message de casefayere. en effet, le problème se pose sur un userform avec un bouton de commande pour valider l'userform. Pourquoi alors un Keypress? Merci d'éclaircir mes pensées.

    Bonne journée à vous et encore merci,

    Anthony

  7. #7
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    le code que j'ai mis est à intégrer dans le TextBox concerné, dans l'éditeur, double-click sur le textbox et copies ce code. Quand tu saisiras un point, il sera remplacé automatiquement par une virgule
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 39
    Par défaut
    Ok d'accord.
    Le problème est que même avec une virgule cela ne fonctionne pas. C'est là que j'ai du mal à comprendre car aucuns des deux séparateurs décimaux fonctionnent.

    Pourtant sur le test supérieur à 100 et inférieur à 0 cela fonctionne. Le problème vient peut être du Isnumeric, non?

  9. #9
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Les trois propositions fonctionnant de nôtre côté, donc …

  10. #10
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Dans le même ordre d'idée de ce que j'zi proposé, essayes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub purete_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Chr(KeyAscii) = "." Then KeyAscii = Asc(",")
    If Chr(KeyAscii) <> "," And Not IsNumeric(Chr(KeyAscii)) Then
    MsgBox "ce n'est pas un chiffre"
    End If
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 39
    Par défaut
    Ton code marche bien casefayere ! Cependant, est-il possible de rajouter une ligne pour faire un reset de la valeur de la textbox après avoir cliquer sur le msgbox? J'ai mis mais cela ne fonctionne pas.

    Auriez-vous une petite idée ? Merci encore

  12. #12
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Essayes ça qui supprime le mauvais caractère (non numérique) entré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Purete_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Dim verif As Boolean
    verif = False
    If Chr(KeyAscii) = "." Then KeyAscii = Asc(",")
    If Not IsNumeric(Chr(KeyAscii)) And Chr(KeyAscii) <> "," Then
      MsgBox "ce n'est pas un chiffre"
      KeyAscii = 0
    End If
     
    If Not verif Then verif = True Else KeyAscii = 0
     
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  13. #13
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 39
    Par défaut
    Merci beaucoup casefayere. Ce code est parfait.
    J'ai juste enlevé les lignes de code avec verif car je n'en vois pas l'utilité. Si elles ont une utilité peut être que je me trompe car verif est toujours false sauf à la fin mais aucune action n'est liée.

    Merci encore pour votre aide,
    Bonne journée

    Anthony

  14. #14
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    J'ai juste enlevé les lignes de code avec verif
    ,

    as-tu testé si ça t'enlève bien le caractère incorrect ? si oui, eh bien d'accord...

    Bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

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

Discussions similaires

  1. quote ' et double quote " - un vrai problème
    Par CLion dans le forum ASP.NET
    Réponses: 20
    Dernier message: 30/01/2012, 22h11

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