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 :

Tester un champ vide avec un expression régulière


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Toulouse 3
    Inscrit en
    Avril 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Toulouse 3
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 31
    Points : 24
    Points
    24
    Par défaut Tester un champ vide avec un expression régulière
    Bonjour !

    J'aimerais tester la saisie d'une zone de texte à l'aide d'une expression régulière.
    Je ne veux que des chiffres dans cette zone, donc j'ai 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
     
    Set RegularExpressionObject = New RegExp
    With RegularExpressionObject
     .Pattern = "^[0-9]+$"
     .IgnoreCase = True
    End With
     
    If RegularExpressionObject.test(Me.Zone) = False Then
    MsgBox "Erreur dans la saisie"
    Else
    'Autres Instructions
    End If
    Ce code matche bien, sauf quand je laisse la zone de saisie vide, sans rien marqué dedans.

    J'ai alors essayer d'adapter l'expression régulière, comme celle ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Pattern = "^(([-a-zA-Z0-9.:,]*)|([0-9]+))$"
    , mais je ne trouve pas la bonne...

  2. #2
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 152
    Points : 143
    Points
    143
    Par défaut
    Salut,

    Est-ce que les réponses de ce sujet peuvent t'aider?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Toulouse 3
    Inscrit en
    Avril 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Toulouse 3
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Justement, je me sert également de ce code.

    Enfait je veux tester en même temps la valeur de 3 zone te texte. Dans la première on peut rentrer n'importe quoi, dans les deux autres ça doit être un entier.

    Voici le test de condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsNull(Me.Zone1) Or IsEmpty(Me.Zone1) Or RegularExpressionObject.test(Me.Zone2) = False Or IsEmpty(Me.Zone2) Or IsNull(Me.Zone2) Or RegularExpressionObject.test(Me.Zone3) = False Or IsEmpty(Me.Zone3p) Or IsNull(Me.Zone3) Then
    Ce code marche, sauf lorsque un des deux champs zone2 et zone3, ou les deux sont vide.

  4. #4
    Membre actif Avatar de Flyoss
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 157
    Points : 278
    Points
    278
    Par défaut
    Tes champs vides ne contiennent pas 0 mais la valeur null, ce qui doit faire planter ton affaire.
    Utilise al fonction Nz sur ces champs afin de transformer les valeur null en ce que tu veux ( "", 0, "toto", -1, ......)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Toulouse 3
    Inscrit en
    Avril 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Toulouse 3
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Nickel ça fonctionne ! je ne connaissais pas cette fonction, Nz, très utile je pense ! je l'avais déja vu sur des discussion mais je m'y étais jamais intéressé.

    Pour info aux autres utilisateurs qui chercheraient la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsNull(Me.Zone1) Or IsEmpty(Me.Zone1) Or RegularExpressionObject.test(Nz(Me.Zone2,"a")) = False Or IsEmpty(Me.Zone2) Or IsNull(Me.Zone2) Or RegularExpressionObject.test(Nz(Me.Zone3,"a")) = False Or IsEmpty(Me.Zone3p) Or IsNull(Me.Zone3) Then
    "a" peut être remplacer par n'importe quelle valeur. Pour ma part j'ai choisis au pif, car il ne faut pas que ma zone de texte ai autre chose que des chiffres.

    Merci Flyoss et BornToBe !

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

Discussions similaires

  1. [FAQ] Comment tester une chaîne de caractères avec une expression régulière ?
    Par Baptiste Wicht dans le forum Vos Contributions VBScript
    Réponses: 1
    Dernier message: 20/11/2007, 19h43
  2. tester un champ vide avec changement de couleur
    Par lolothom dans le forum IHM
    Réponses: 4
    Dernier message: 13/05/2007, 21h08
  3. [VB.net][vs2005] Problème avec les expressions régulières
    Par zouhib dans le forum Windows Forms
    Réponses: 13
    Dernier message: 22/06/2006, 15h56
  4. Problème avec les expressions régulières
    Par Premium dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 18/06/2006, 16h41
  5. tester si champ vide
    Par trialrofr dans le forum ASP
    Réponses: 2
    Dernier message: 07/03/2005, 19h26

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