Probleme de règle de gestion en vb

Résolu
raro Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   -  
raro Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   -
salut à tous!

j'essaie de coder en vb une règle de gestion :" la saisie ne peut comporter que des lettres"
cela fonctionne sauf si la saisie contient une lettre avec un accent
voici mon code:
'verification du type de caractères saisi: alpha obligatoire
'déclaration et initialisation  du pointeur a
Dim a As Integer
a = 0
'pointer a sur toute la longueur de la saisie à partir du premier caractère
For a = 1 To Len(text_prenom.Text)
'si un ou plusieurs caractères saisis sont différents de A à Z alors
If UCase(Trim(Mid(text_prenom.Text, a, 1))) Like "[!A-Z]" Then
'message
MsgBox "la saisie ne peut comporter que des lettres"
'remise à blanc et reprise du focus par text_prenom
text_prenom.Text = ""
text_prenom.SetFocus

'sortir
Exit Sub
'fin de if
End If
'fin de la boucle a
Next a

pouvez-vous m'expliquer ce qui cloche?
merci encore

"Donne un poisson à un homme, il mangera une journée.
Apprends-lui à pêcher, il mangera toute sa vie"

3 réponses

  1. Utilisateur anonyme
     
    Salut,

    Autre suggestion !

    Sub TestEntree()

    Const Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZÉÈÀÙ"

    'verification du type de caractères saisi: alpha obligatoire
    'déclaration et initialisation du pointeur a
    Dim A As Integer
    Dim Dum As String
    Dim Rep As Long

    Dum = "Carac2tère"
    A = 0
    'pointer a sur toute la longueur de la saisie à partir du premier caractère
    For A = 1 To Len(Dum)
    'si un ou plusieurs caractères saisis sont différents de A à Z alors
    Rep = InStr(1, Alphabet, UCase(Trim(Mid(Dum, A, 1))), vbTextCompare)
    If (Rep = 0) Then
    'message
    MsgBox "la saisie ne peut comporter que des lettres"
    'remise à blanc et reprise du focus par text_prenom
    Dum = ""

    'sortir
    Exit Sub
    'fin de if
    End If
    'fin de la boucle a
    Next A

    End Sub

    Lupin
    1
    1. raro Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   37
       
      Arsène : tu es grand!!!!!!!!
      ça marche parfaitement

      je te remercie à+
      0
  2. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    Salut,

    Je suppose que le problème est là:
    "[!A-Z]"

    Et si tu changes en :
    "[!A-Zéèùà]" par exemple... Ca marche si tu tapes é ?
    0
    1. raro Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   37
       
      hélas non cela ne fonctionne pas mais l'idée n'est pas mauvaise
      car [!A-Z] veut dire de A jusqu'à Z et je ne sais pas comment coder pour un caractère spécifique
      je te remercie en tout cas à +
      0
  3. crack1
     
    je ne m y connais pas VB mais tu es dans une condition, essaye d'ajouter à la condition telle que:
    If UCase(Trim(Mid(text_prenom.Text, a, 1))) Like "[!A-Z]" and
    If Ucase(Trim(Mid(text_prenom.Text, a, 1))) Like "!é". je ne m'y connais pas en syntaxe mais ça devrait ressembler un peu à cela. Fait un test sur un caractère unique.
    Le problème vient du fait que les lettres à accent ne sont pas dans l'intervalle donnée.
    0