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 :

Test si string contient des chiffres [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de CristofMartins
    Homme Profil pro
    ICH-DEV
    Inscrit en
    Juillet 2012
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : ICH-DEV
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 140
    Par défaut Test si string contient des chiffres
    Bonjour tout le monde,
    J'ai un petit problème. j'aimerais tester si ma string contient des chiffres. je sais tout le monde va me dire qu'il y a la fonction isNumeric() mais le problème c'est qu'il se peut que ma chaîne contienne des caractères et des chiffres en même temps. Moi j'aimerais pouvoir tester si ma chaine des caractères contient des chiffres même s'ils sont mélangés avec des lettres ou n'importe quoi d'autre.

    Avez-vous des conseils?

    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Tu peux boucler sur chaque caractère de ton texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Test()
    Dim Texte As String, C As String
    Dim i As Integer
        Texte = "Aujourd'hui, 14 mars"
        For i = 1 To Len(Texte)
            If IsNumeric(Mid(Texte, i, 1)) Then
                MsgBox "Le texte contient une valeur numérique."
                Exit For
            End If
        Next i
    End Sub
    Cordialement.

  3. #3
    Invité
    Invité(e)
    Par défaut Bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub TestContientChiffres()
    Debug.Print ContientChiffres("RDURUPT")
    Debug.Print ContientChiffres("75 RDURUPT")
    Debug.Print ContientChiffres("RDURUPT 75")
    End Sub
    Function ContientChiffres(TXT As String) As Boolean
    Dim Ch As Long
    For Ch = 1 To Len(TXT)
     If IsNumeric(Mid(TXT, Ch, 1)) Then
        ContientChiffres = True
        Exit Function
     End If
    Next
    End Function

  4. #4
    Membre confirmé Avatar de CristofMartins
    Homme Profil pro
    ICH-DEV
    Inscrit en
    Juillet 2012
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : ICH-DEV
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 140
    Par défaut
    Merci pour votre aide

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 53
    Par défaut Petit Bug
    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
    10
    11
    12
    13
    14
    Sub TestContientChiffres()
    Debug.Print ContientChiffres("RDURUPT")
    Debug.Print ContientChiffres("75 RDURUPT")
    Debug.Print ContientChiffres("RDURUPT 75")
    End Sub
    Function ContientChiffres(TXT As String) As Boolean
    Dim Ch As Long
    For Ch = 1 To Len(TXT)
     If IsNumeric(Mid(TXT, Ch, 1)) Then
        ContientChiffres = True
        Exit Function
     End If
    Next
    End Function
    petite bug ( tu remet pas à false )que j'ai trouvé en utilisant ta fonction au cas où d'autres voudraient l'utiliser dans une boucle
    voici ma version :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Sub TestConti entChiffres()
    	ContientChiffres("RDURUPT")
    	ContientChiffres("75 RDURUPT")
    	ContientChiffres("RDU RUPT 75")
    	ContientChiffres("RDURUPT ")
    	ContientChiffres("RDURUPT ")
    	ContientChiffres("RDURUPT ")
    	ContientChiffres("RDURUPT ")
    	ContientChiffres("RDURUPT ")
    	ContientChiffres("RDURUPT ")
    	ContientChiffres("RDURUPT ")
    End Sub
    Function ContientChiffres(TXT As String) As Boolean
    	Dim Ch As Long
    	For Ch = 1 To Len(TXT)
    	 If IsNumeric(Mid(TXT, Ch, 1)) Then
    	    ContientChiffres = True
    	    MsgBox("ContientChiffres")
    	 else
    	 	ContientChiffres = False
    	    MsgBox(" pas ContientChiffres")
    	    Exit Function
    	 End If
    	Next
    End Function

  6. #6
    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 Y a pas de « bug » ‼

    Bonjour, bonjour !

    Vaudrait mieux tester avant d'écrire une bêtise car le code de Robert fonctionne bien tel quel ‼

    Qui plus est la correction proposée déclenche une erreur à la compilation !

    Sans compter les messages devant se déclencher après la fonction et non pas à l'intérieur !
    Sinon une telle fonction serait inutile, une simple procédure s'en acquitterait comme celle de gFZT82 …


    Alternative :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function IsNumIn(V) As Boolean
        For C& = 48 To 57
            If InStr(V, Chr$(C)) Then IsNumIn = True: Exit Function
        Next
    End Function
     
     
    Sub Test()
        For Each T In [{"Azert1uiop","Azertyuiop"}]
            MsgBox """" & T & """ contient chiffres :  " & IsNumIn(T)
        Next
    End Sub
    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé …

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 53
    Par défaut
    Vaudrait mieux tester avant d'écrire une bêtise car le code de Robert fonctionne bien tel quel ‼
    Exact toute mes excuses

    Qui plus est la correction proposée déclenche une erreur à la compilation !
    il y avait juste un espace malheureux dans l'appel à la fonction

    Sans compter les messages devant se déclencher après la fonction et non pas à l'intérieur !
    Encore exact c'est ce que je fais ci-dessous et là tout est bon

    voici donc le code correct qui prouve que la fonction rdurup fonctionne correctement
    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
    17
    18
    Sub TestContientChiffres()
    	 if ContientChiffres("RDURUPT") then MsgBox("Contient Chiffre") else MsgBox("Pas Contient Chiffre")
    	 if ContientChiffres("75 RDURUPT") then MsgBox("Contient Chiffre") else MsgBox("Pas Contient Chiffre")
    	 if ContientChiffres("RDURUPT 75") then MsgBox("Contient Chiffre") else MsgBox("Pas Contient Chiffre")
    	 if ContientChiffres("RDURUPT") then MsgBox("Contient Chiffre") else MsgBox("Pas Contient Chiffre")
    	 if ContientChiffres("RDURUPT") then MsgBox("Contient Chiffre") else MsgBox("Pas Contient Chiffre")
    	 if ContientChiffres("RDURUPT") then MsgBox("Contient Chiffre") else MsgBox("Pas Contient Chiffre")
    	 if ContientChiffres("RDURUPT") then MsgBox("Contient Chiffre") else MsgBox("Pas Contient Chiffre")
    End Sub
    Function ContientChiffres(TXT As String) As Boolean
    Dim Ch As Long
    For Ch = 1 To Len(TXT)
     If IsNumeric(Mid(TXT, Ch, 1)) Then
        ContientChiffres = True
        Exit Function
     End If
    Next
    End Function
    Encore toutes mes excuses je ferai plus attention la prochaine fois.

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

Discussions similaires

  1. [XL-2007] Tri d'une colonne de string contenant des chiffres
    Par Xunopa dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/10/2011, 10h59
  2. [Flex4] Tester si une variable contient des chiffres
    Par xclue dans le forum Flex
    Réponses: 5
    Dernier message: 19/01/2011, 10h41
  3. [RegExp] Trouver si une chaine contient des chiffres
    Par tom741 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/09/2010, 12h45
  4. Réponses: 1
    Dernier message: 28/05/2008, 11h52
  5. Incrementer un VARCHAR qui contient des chiffres
    Par nassoft dans le forum SQL
    Réponses: 3
    Dernier message: 13/03/2007, 22h07

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