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 :

Vérification InputBox alphanumérique [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 32
    Par défaut Vérification InputBox alphanumérique
    Bonjour,

    Je souhaite vérifier que l'utilisateur de la macro ait bien entré un mot, et non des chiffres, dans mon InputBox ?

    Je sais qu'il est possible de vérifier si le mot insérer en InputBox est un chiffre par :
    If Not IsNumeric(matricule) [..]

    Mais l'inverse m’intéresserais..


    Bonne journée,

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Il va falloir utiliser de les codes ASCII... s'il y a des accents ou des lettres bizzares telles que les n espagnols... ca risque d'être un peu chiant

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 32
    Par défaut
    je pense pas qu'il y aura des n espagnols mais surment de é è à ..
    Qu'est ce que sont ces codes ?

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function tester(mot As String) As Boolean
    Dim i As Integer
    mot = UCase(mot)
    tester = True
    For i = 1 To Len(mot)
    If Asc(Mid(mot, i, 1)) < 65 Or Asc(Mid(mot, i, 1)) > 90 And Asc(Mid(mot, i, 1)) <> 201 And Asc(Mid(mot, i, 1)) <> 200 Then
    tester = False
    End If
    Next i
    End Function
    Rajoute dans ton if les lettres que tu veux en testant leur code ASCII avec ce sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub toto()
    MsgBox (Asc(UCase("è")))
    End Sub
    Dans ton code tu auras

    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
    Sub machinchose()
     
    'code
     
    x = inputbox("blabla")
     
    'Tu fais
    If tester(x) then
    msgbox("c'estbon")
    Else
    msgbox("c'estpasbon")
    end if
     
    'code
    End sub

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Peut être une piste avec le code suivant
    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
    26
    27
    28
    29
    30
    31
    32
    Sub aa()
    Dim reponse As Variant
    Dim i&
    Dim bool As Boolean
     
    Do
      reponse = Application.InputBox(prompt:="Mon message", Title:="Mon titre", Type:=2)
      If reponse = False Or reponse = "" Then Exit Sub
     
    '  '--- présence de nombre ---
    '  For i& = 1 To Len(reponse)
    '    If IsNumeric(Mid(reponse, i&, 1)) Then
    '      MsgBox "Aucun nombre n'est admis "
    '      Exit For
    '    End If
    '  Next i&
     
    '/// ou alors
     
        '--- présence d'au moins un caractère alphabétique ---
      For i& = 1 To Len(reponse)
        If Not IsNumeric(Mid(reponse, i&, 1)) Then
          bool = True
          Exit Do
        End If
      Next i&
     
    Loop
     
    If bool Then MsgBox "Présence d'au moins un caractère alphabétique : " & reponse
     
    End Sub

  6. #6
    Membre averti
    Femme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 32
    Par défaut
    Cela fait :

    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
    Sub nouveau ()
     
    Function tester(mot As String) As Boolean
    Dim i As Integer
    mot = UCase(mot)
    tester = True
    For i = 1 To Len(mot)
    If Asc(Mid(mot, i, 1)) < 65 Or Asc(Mid(mot, i, 1)) > 90 And Asc(Mid(mot, i, 1)) <> 201 And Asc(Mid(mot, i, 1)) <> 200 Then
    tester = False
    End If
     
    Next i
    End Function
     
    Mot = InputBox ("Quel est le mot que vous voulez ajouter ?")
    While If tester(Mot) then 
           Range("A1") = mot
     
    Wend
     
    MsgBox ("Ce n'est pas un mot (composé de lettres).")
     
    End Sub
    C'est ça ?

  7. #7
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    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
    Function tester(mot As String) As Boolean
    Dim i As Integer
    mot = UCase(mot)
    tester = True
    For i = 1 To Len(mot)
    If Asc(Mid(mot, i, 1)) < 65 Or Asc(Mid(mot, i, 1)) > 90 And Asc(Mid(mot, i, 1)) <> 201 And Asc(Mid(mot, i, 1)) <> 200 Then
    tester = False
    End If
    Next i
    End Function
     
    Sub nouveau ()
     
    Mot = InputBox ("Quel est le mot que vous voulez ajouter ?")
    If tester(Mot) then 
    Range("A1") = mot
    else
    MsgBox ("Ce n'est pas un mot (composé de lettres).")
    End if
     
    End Sub

  8. #8
    Membre averti
    Femme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 32
    Par défaut
    En réalité, je débute et me débrouille comme je peux..

    Merci,

    Je viens d'essayer d'exécuter la macro mais cela ne marche pas ...
    Cela bloque à :
    tester (mot)

  9. #9
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    change cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function tester(ByVal mot As String) As Boolean

  10. #10
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut Vérification inputbox alphanumérique
    Bonjour,

    Je ne comprends pas le problème.

    Si tu mets:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Not IsNumeric(matricule) then "C'est du texte"
    Si ce n'est pas du numérique, qu'est-ce que ça peut être d'autre qu'un mot.
    Pour VBA une date est un nombre et par ailleurs, je ne pense pas que l'opérateur mettra un object.
    Alors que reste-il comme autre possibilité ?

    Pour Engue Engue ne te formalise pas : C'est sa délicatesse habituelle. Hors cela, il a de bonnes idées et c'est l'essentiel pour nous programmeurs en devenir.

    Cordialement,

  11. #11
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    "S[]a%lut" est numérique ? est il un mot ?

  12. #12
    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.
    Citation Envoyé par Laura27600 Voir le message
    Je sais qu'il est possible de vérifier si le mot insérer en InputBox est un chiffre par :
    If Not IsNumeric(matricule) [..]

    Mais l'inverse m’intéresserais.
    Ah non, là tu vérifies justement que ce n'est pas une valeur numérique admise, donc un mot contenant ou pas des chiffres …

    L'inverse de If Not IsNumeric(matricule) est If IsNumeric(matricule)

    Donc une présentation claire et exhaustive aurait été vraiment un plus pour une solution directe et donc rapide !

    Il y a aussi la possibilité de contrôler à la volée la saisie dans un UserForm

    Et merci d'utiliser l'icône # dévolue au code !

  13. #13
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut Vérification inputbox alphanumérique
    bonjour Engue Engue,

    je t'accorde volontiers que ce n'est pas un mot mais pas davantage un nombre.

    je me demande quel opérateur aura l'idée d'introduire ces symboles qui nécessitent l'emploi de deux touches du clavier ou le passage en majuscule. Il faudrait vraiment que ce soit un saboteur!
    Bien sûr l'erreur est toujours possible.

    Faute de pouvoir apporter une réponse j'analyserai pour ma formation vos propositions.

    Petit remarque tout de même : Il semblerait que les expressions rationnelles soient miraculeuses et performantes. N'y aurait-il pas une approche possible de ce coté là ?

    Cordialement,

  14. #14
    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
    Salut Paul !
    Citation Envoyé par nibledispo Voir le message
    Petit remarque tout de même : Il semblerait que les expressions rationnelles soient miraculeuses et performantes.
    N'y aurait-il pas une approche possible de ce coté là ?
    Oui évidemment mais à moins d'être rompu à son utilisation régulière, la perte de temps occasionnée par la réflexion
    combinée à l'incapacité de l'étudiant à pouvoir justifier cette méthode n'est pas rentable …

    Qui plus est, par expérience sur divers forums, les étudiants n'y viennent pas vraiment pour étudier,
    l'étudiant moderne étant le roi du Copier / Coller sans vraiment se poser de question quant aux tenants & aboutissants !

  15. #15
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Pour vérifier si c'est un mot français, il nous faut ASC de chaque lettre passée en majuscule compris entre 65 et 90 plus ç é è ù à ö ë ê en majuscules.

  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

    Diverses voies possibles mais sans une présentation claire et exhaustive, impossible de choisir la plus adaptée !

    Par exemple, ne chercher que la présence de chiffres …

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

Discussions similaires

  1. Vérification saisie InputBox
    Par turbif08 dans le forum VBScript
    Réponses: 15
    Dernier message: 06/12/2013, 18h49
  2. Réponses: 10
    Dernier message: 09/10/2013, 18h26
  3. Vérification d'un InputBox
    Par oMeG4 dans le forum VBA Access
    Réponses: 6
    Dernier message: 20/03/2007, 16h07
  4. [VB.NET] Vérification d'existance d'une table
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/05/2004, 10h17
  5. JavaScript de vérification de formulaire
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/02/2003, 13h48

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