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 :

Pb en sortie vba d'un champ avec masque de saisie [AC-2000]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Par défaut Pb en sortie vba d'un champ avec masque de saisie
    Bonjour,

    Je cherche depuis hier après-midi la solution mais en désespoir de cause , je viens chercher de l'aide vers vous...

    Voilà mon problème... pour expliquer rapidement, je gère dans un formulaire des "fausses" successions d'écrans simplement en jouant sur les propriétés des champs (visible, activé et verrouillé).

    J'ai donc des boutons "suivant" et "précédent" qui manipulent ces propriétés de champ, donnant l'impression que les écrans défilent.

    Le code de ces boutons effectuent les opérations suivantes :
    1. Teste la caption d'un champ (pour vérifier quel "écran" est en cours)
    2. Disparition de tous les contrôles du formulaire
    3. En fonction de la caption, les contrôles concernés vont apparaîtrent comme nouvel "écran"

    Par défaut, tous mes contrôles sont invisibles, désactivés et verrouillés. J'ai donc placé un champ indépendant que j'ai appelé change_focus dont je ne me sers que pour récupérer le focus en transition de la partie 2 à 3 du code expliqué ci-dessus.

    Le problème survient lorsque, en lançant le code des boutons "suivant" ou "précédent", mon focus est dans un champ avec masque de saisie et que ce masque n'est pas respecté... le code s'exécute quand même mais va planter sur la réception focus du champ change_focus... ce qui affiche le code vba... pas super donc !

    Je ne vois pas comment tester la valeur de mon champ qui contient le masque de saisie (un numéro siret) avant d'exécuter le code ?
    Je ne vois pas comment non plus règler cela à partir des propriétés du champ ?
    Par ailleurs, je ne souhaite pas masquer les boutons "suivant" et "précédent" pour des raisons d'ergonomie.

    Quelqu'un aurait-il une ou plusieurs solutions ?

    J'espère avoir été clair dans mes explications...

    Merci
    Cordialement
    David Curty

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 357
    Par défaut
    Bonjour,

    Pourrait-on avoir un exemplaire de la base ? (si la confidentialité des données le permet)

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Par défaut
    Bonjour,

    il faut utiliser l'événement BeforeUpdate de la zone de texte exigeant un masque de saisie. Si la saisie ne respecte pas le masque tu annules la validation du champ.

  4. #4
    Membre habitué
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Par défaut
    Merci pour vos réponses, toutefois comme je l'ai expliqué précédemment, je ne sais pas comment tester en vba si mon champ respecte le masque de saisie, surtout sur un numéro siret donc de type "___ ___ ___ _____"...

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 357
    Par défaut
    Je pense que vous devriez faire 2 tests successifs :
    le premier sur la longueur de la chaine (qui doit etre egale a 17)
    puis sur la position des espaces (un coup d'oeil du coté de la fonction mid devrait vous aider)

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 357
    Par défaut
    Quelque chose dans ce genre :

    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
    Function IsNumSiret(strNumSiret As String) As Boolean
    'verifie le format d'un numero siret
     
    If Len(strNumSiret) <> 17 Then
    'verification de la longueur de la chaine
        IsNumSiret = False
        Exit Function
    Else
        If Mid(strNumSiret, 5, 1) = " " And Mid(strNumSiret, 8, 1) = " " And _
        Mid(strNumSiret, 12, 1) = " " Then
        'vérification de la position des espaces
            If IsNumeric(Left(strNumSiret, 4)) And IsNumeric(Mid(strNumSiret, 6, 2)) And IsNumeric(Mid(strNumSiret, 9, 3)) _
            And IsNumeric(Right(strNumSiret, 5)) Then
            'verifie que les données saisies soient bien des chiffres
                IsNumSiret = True
            Else
                IsNumSiret = False
            End If
        Else
            IsNumSiret = False
        End If
    End If
     
    End Function

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 21/08/2008, 17h07
  2. Réponses: 1
    Dernier message: 04/09/2007, 06h21
  3. [SQL-VBA]Recuperer valeur champ avec requete
    Par docky dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 05/04/2007, 13h20
  4. clause sql sur champ Date avec masque de saisie
    Par TOMSEC dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/04/2007, 12h20
  5. problème avec masque de saisie dans table
    Par porki dans le forum Access
    Réponses: 6
    Dernier message: 13/10/2004, 08h58

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