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

VBA Access Discussion :

vérification d'un champ


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 24
    Points : 17
    Points
    17
    Par défaut vérification d'un champ
    Bonjour,

    je voudrais vérifier la valeur d'un champ mais je ne sais pas comment faire car le format du champ est 0ZABPQmcdu#ZOBPQ avec ABPQmcdu=[0,9] et avec Z=[1,5] ou [7,9], ZOBPQ sont des chiffres.

    Si je veux écrire plusieurs fois 0ZABPQmcdu#ZOBPQ il faut mettre un ^

    Je voudrais vérifier ce champ et si celui-ci n'est pas correcten afficher un message d'erreur.

    Le problème c'est que je ne sais pas comment faire pour faire vérifier ce champ

    Avez vous une idée

  2. #2
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Tu peux utiliser les expressions régulières dans Access.
    Une recherche dans la FAQ Access sur "Expression régulière" donne, par exemple:
    http://access.developpez.com/faq/?page=Langage#regexp
    Il y en a d'autres

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Ou mieux un tuto complet de Caféine.

    Starec

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    on m'a conseillé d'utiliser la fonction split

    D'après vous, est ce la meilleur solution?

  5. #5
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Tu peux nous donner des exemples de chaînes vérifiées et de chaînes fausses ?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    voici le code que j'ai 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
    Private Sub liste_isole_LostFocus()
    ' vérification du champ liste_isole
     
    'Dim liste_isole As String
    'Dim Tab_liste_isole() As String
     
    liste_isole = Forms![raccordementPorta]![liste_isole].Value
    liste_isole = Split(liste_isole, "^")
    Tab_liste_isole = liste_isole
    liste_isole = Split(liste_isole, "#")
    Tab_liste_isole_1 = liste_isole
    If Len(Split(Tab_liste_isole)(0)) > 17 Then
        MsgBox "Vous avez mal renseigné le champ numéro isolé - Veuillez retapé le numéro s'il vous plait 1"
        ElseIf Len(Split(Tab_liste_isole_1)(0)) > 10 Then
            MsgBox " Vous avez mal renseigné le champ numéro isolé - veuillez retapé le numéro s'il vous plaît 2"
                ElseIf Len(Split(Tab_liste_isole_1)(1)) > 5 Then
                    MsgBox " Vous avez mal renseigné le champ numéro isolé - veuillez retapé le numéro s'il vous plaît 3"
    End If
     
     
    End Sub
    chaîne fausse:

    04123645789#12345
    04123645789#123456
    041236489#123
    04123645789#12345^04123645789#12345

    chaîne vérifiée
    0123456978#12345
    0123456978#12345^0123456878#12344

    Ps: le code ne fonctionne pas

  7. #7
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    En utilisant la fonction AllRegExp de mon tuto
    http://cafeine.developpez.com/access.../regexp/#LII-B

    Tu peux créer un pattern de reconnaissance
    (^|\^)(\d{10}#[1-57-9]{5})

    explications :
    (^|\^): soit le début de la chaîne encodé par "^", soit le caractère ^ (le choix n'était pas idéal pour l'explication)
    \d{10} : une chaîne de 10 caractères de numériques (d comme digits)
    [1-57-9]{5} : une chaîne de 5 caractères numériques de 1 à 5 et de 7 à 9
    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
    allregexp "0123456978#12345^0123456878#12344", _
         "(^|\^)(\d{10}#[1-5]{5})", _
         "code: $2" & vbcrlf
    ==================================
          Travaux liés à .Execute
    ==================================
    nombre d'occurences : 2
    source >>     0123456978#12345
    [$1]          
    [$2]          0123456978#12345
    source >>     ^0123456878#12344
    [$1]          ^
    [$2]          0123456878#12344
    ==================================
            Travaux liés à .Test
    ==================================
    Vrai
    ==================================
          Travaux liés à .Replace
    ==================================
    code: 0123456978#12345
    code: 0123456878#12344
    Pour plus d'infos, regarde mon tuto :
    http://cafeine.developpez.com/access/tutoriel/regexp/

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    ok merci, je vais essayer

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    bonjour,

    j'ai améliorer mon code, et maintenant il fonctionne (j'ai du suivre ce que me disait mes collègues)
    Par contre maintenant, il faudrait que je fasse une boucle pour que si je remplis mon champ comme cela 0123456789#12345^0123456789#12346
    il vérifie 0123456789#12346 car mon code actuellement ne vérifie que 0123456789#12345

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Private Sub liste_isole_LostFocus()
    ' vérification du champ liste_isole
     
    liste_isole = Forms![raccordementPorta]![liste_isole].Value
    While Len(liste_isole)
        MsgBox Len(Forms![raccordementPorta]![liste_isole].Value)
    If Len(Forms![raccordementPorta]![liste_isole].Value) > 16 Then
        split_liste_isole1 = Split(Forms![raccordementPorta]![liste_isole].Value, "^")
        split_liste_isole2 = Split(split_liste_isole1(0), "#")
        num_tel = Mid(split_liste_isole2(0), 2, 1)
        If Len(split_liste_isole1(0)) > 17 Then
            MsgBox "Vous avez mal renseigné le champ numéro isolé - Veuillez retapé le numéro s'il vous plait 1"
                ElseIf Len(split_liste_isole2(0)) <> 10 Then
                    MsgBox " Vous avez mal renseigné le champ numéro isolé - veuillez retapé le numéro s'il vous plaît 2"
                        ElseIf Len(split_liste_isole2(1)) <> 5 Then
                            MsgBox " Vous avez mal renseigné le champ numéro isolé - veuillez retapé le numéro s'il vous plaît 3"
                                ElseIf num_tel = 0 Or num_tel = 6 Then
                                    MsgBox ("Vous avez rentrer un num de Portable ou un double 00 en indicatif")
     
        End If
     
        Else
        'verification du deuxieme caratere et du #
        num_tel_isole = split_liste_isole1(0)
        num_tel = Mid(split_liste_isole1(0), 2, 1)
        split_liste_isole1 = Split(num_tel_isole, "#")
     
        If Len(Split("split_liste_isole1")(0)) <> 10 Then
     
            MsgBox ("Vous avez rentrer un num tel invalide")
     
            ElseIf Len(Split("split_liste_isole1")(1)) <> 5 Then
     
             MsgBox ("Vous avez rentrer un ND invalide")
     
            ElseIf snum_tel = 0 Or num_tel = 6 Then
                MsgBox ("Vous avez rentrer un num de Portable ou un double 00 en indicatif")
        End If
     
    End If
    Wend
    End Sub
    Le problème dans ma boucle c'est qu'il ne vérifie jms après ^ et il ne sort jms de ma boucle

    pouvez vous m'aider s'il vous plait

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

Discussions similaires

  1. vérification d'un champ
    Par Cyriusix dans le forum VBA Access
    Réponses: 12
    Dernier message: 25/04/2008, 12h36
  2. Fonction vérification cohérence des champs
    Par bc.dumon dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/04/2008, 13h00
  3. [MySQL] Vérification d'un champ sans doublon
    Par khamett dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/02/2008, 13h25
  4. Réponses: 10
    Dernier message: 20/07/2007, 14h39
  5. [RegEx] ereg() vérification d'un champs
    Par akara dans le forum Langage
    Réponses: 1
    Dernier message: 03/07/2007, 16h22

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