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 :

Tester si une valeur est numérique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Billets dans le blog
    1
    Par défaut Tester si une valeur est numérique
    Bonjour

    Pour tester si une valeur est numérique j'utilise ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If IsNumeric(Sheets("Feuil1").Cells(5, 2).Value) Then
    Debug.Print "numerique"
    Else
    Debug.Print "pas numerique"
    End If
    mais j'ai observé quelque de bizarre: si j'ai dans ma cellule 1000 2 (un espace séparant 1000 et 2), le code me renvoie "numerique" !? et je peux mettre autant d'espaces que je veux, c'est toujours numerique!!

    Y a t il une explication?

    merci

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu...
    Bonjour

    bonjour peut etre parce que il y a que des chiffres et vba l'interprète comme tel

    tu pourrais essayé avec la fonction like sur la série de chiffre [0-9] avec un 2 eme sous test sur [a-z] ainsi que des caractères spéciaux
    voir avec la fonction vb "instr" aussi en 2 eme sous test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If IsNumeric(Sheets("Feuil1").Cells(5, 2).Value) and instr (Sheets("Feuil1").Cells(5, 2).Value," ")<1 then 
    Debug.Print "numerique"
    Else
    Debug.Print "pas numerique"
    End If
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    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,

    peut-être IsNumeric fonctionne comme Val

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function IsNum(Rg As Range) As Boolean
             IsNum = StrComp(Rg.Value2, Val(Rg.Value2), 0) = 0
    End Function

    __________________________________________________________________________________________

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

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    joli Marc
    petite fonction d'aide a la compréhension ca j'aime
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par damalaan Voir le message
    mais j'ai observé quelque de bizarre: si j'ai dans ma cellule 1000 2 (un espace séparant 1000 et 2), le code me renvoie "numerique" !? et je peux mettre autant d'espaces que je veux, c'est toujours numerique!!

    Y a t il une explication?
    La fonction IsNumeric indique si la valeur est utilisable comme une numérique, ce qui est le cas avec l'exemple que tu donnes, malgré l'espace.
    Fais le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Test()
    Dim Y as Integer
    Y = Sheets("Feuil1").Cells(5, 2)
    Debug.Print Y
    End Sub
    Tu verras que Y récupère la valeur numérique utilisable comme tel.

    Si, dans ton cas, c'est l'espace qui te gêne, il vaudrait peut-être mieux que tu utilises une fonction qui vérifie la présence d'espace. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InStr(Sheets("Feuil1").Cells(5, 2)," ")

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour menhir
    cela a déjà été dit en POST#2
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    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




    Loïc,

    pas besoin de chercher forcément la présence d'une espace, teste la fonction du post #3 !


  8. #8
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Ou en utilisant Excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function IsNum(ByVal Tmp) As Boolean
     
    IsNum = Application.IsNumber(Tmp)
    End Function

  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




    C'est encore mieux ! Comme quoi il faut d'abord penser Excel avant VBA !

    Il s'agit de la fonction de feuille de calculs ESTNUM dans la version française d'Excel …

  10. #10
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    pas besoin de chercher forcément la présence d'une espace, teste la fonction du post #3
    Tu as raison. Je n'avais pas regardé ta solution en détail mais c'est vrai qu'elle est très élégante.

  11. #11
    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




    Merci mais c'est Mercatog qui monte sur la première marche du podium !

    Mais j'ai le mérite de vous faire méfier aussi de la fonction Val


  12. #12
    Invité
    Invité(e)
    Par défaut Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If IsNumeric(Trim("" & Sheets("Feuil1").Cells(5, 2).Value)) Then
    Debug.Print "numerique"
    Else
    Debug.Print "pas numerique"
    End If
    Dernière modification par AlainTech ; 04/09/2014 à 06h49. Motif: Suppression de la citation inutile

  13. #13
    Invité
    Invité(e)
    Par défaut L’indécision dans les notes

  14. #14
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Citation Envoyé par rdurupt Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub LePourquoi()
     
    Sheets("Feuil1").Cells(5, 2).Value = "1000 2"
    If IsNumeric(Trim("" & Sheets("Feuil1").Cells(5, 2).Value)) Then
        Debug.Print Sheets("Feuil1").Cells(5, 2).Value & " est numerique"
    Else
        Debug.Print Sheets("Feuil1").Cells(5, 2).Value & " n'est pas numerique"
    End If
    End Sub
    PS. Je n'ai pas encore voté ni + ni - car je suis certain que c'est une coquille d'appréciation (lequel de nous est épargné)

  15. #15
    Invité
    Invité(e)
    Par défaut
    Ok vue je mérite le -1
    Dernière modification par AlainTech ; 04/09/2014 à 06h50. Motif: Suppression de la citation inutile

  16. #16
    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



    J'ai voté pour compenser le sans aucune explication …

    C'est vrai qu'un Replace aurait été plus judicieux que le Trim !

    Et puis sachant Robert se prenant la tête dans d'autres discussions n'en finissant pas, pour une fois que c'était simple !
    J'en ai fait une belle hier aussi …

  17. #17
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour a tous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub LePourquoi_parce_que()
     
    Sheets("Feuil1").Cells(5, 2).Value = "1000 2"
    if len(replace(Sheets("Feuil1").Cells(5, 2).Value)," ","")=len(Sheets("Feuil1").Cells(5, 2).Value )Then
        Debug.Print Sheets("Feuil1").Cells(5, 2).Value & " est numerique"
    Else
        Debug.Print Sheets("Feuil1").Cells(5, 2).Value & " n'est pas numerique"
    End If
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  18. #18
    Invité
    Invité(e)
    Par défaut Bonjour Marc
    Merci Marc,
    je pensai m'être calé entre deux fréquences.

    Comme la fréquence de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con ! (Marc-L)


    Citation Envoyé par Marc-L Voir le message

    J'ai voté pour compenser le sans aucune explication …

    C'est vrai qu'un Replace aurait été plus judicieux que le Trim !

    Et puis sachant Robert se prenant la tête dans d'autres discussions n'en finissant pas, pour une fois que c'était simple !
    J'en ai fait une belle hier aussi …

Discussions similaires

  1. Réponses: 8
    Dernier message: 18/12/2009, 13h58
  2. Comment tester qu'une valeur est dans un tableau ?
    Par Pierrot92320 dans le forum MATLAB
    Réponses: 3
    Dernier message: 18/04/2009, 18h59
  3. Tester si une valeur est numérique dès la saisie
    Par sandrine49 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/06/2008, 17h23
  4. fonction qui vérifie si une valeur est numérique?
    Par ryadh.naouar dans le forum C
    Réponses: 16
    Dernier message: 05/07/2007, 17h33
  5. vérifier qu'une valeur est numérique
    Par kopofb dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/11/2005, 14h02

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