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 :

Valeur Zone de texte de filtre numérique ou texte


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 121
    Points : 61
    Points
    61
    Par défaut Valeur Zone de texte de filtre numérique ou texte
    Bonjour tout le monde,
    j'ai une table T_eleves(N_Exam(long),N_Etab(Texte),N_Eleve(long))
    dans un formulaire un cadre(Cadre9)avec 3 cases à cocher : 1 N_Exam , 2 N_Etab , 3 N_Eleve
    une zone de texte (Num)
    un bouton(Cmd_FicheEleve) qui filte un Etat (E_Eleves) avec l'evenement 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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
        Private Sub Cmd_FicheEleve_Click()
            Dim stDocName As String
            If IsNull(Me.Cadre9) Then
                MsgBox "Attention Cochez une case", vbExclamation, "Attention"
                Me.Cadre9.SetFocus
            End If
     
            If Cadre9.Value = 1 Then
                If IsNull(Me.Num) Then
                    MsgBox "Attention Saisissez le N_Exam", vbExclamation, "Attention"
                    Me.Num.SetFocus
                ElseIf DCount("Num", "R_Eleves") = 0 Then
                    MsgBox "Aucun enregistrement !", vbExclamation
                    Cancel = True
                ElseIf IsNull(DLookup("[N_Exam]", "R_Eleves", "[N_Exam]=" & Me.Num & "")) Then
                    MsgBox "Vérifier le Numéro N_Exam Saisi !", vbExclamation
                    Cancel = True
                Else
                    DoCmd.OpenReport "E_Eleves", acPreview, , "N_Exam= " & Me.Num & ""
                End If
            End If
     
            If Cadre9.Value = 2 Then
                If IsNull(Me.Num) Then
                    MsgBox "Attention Saisissez le Numéro National", vbExclamation, "Attention"
                    Me.Num.SetFocus
                ElseIf DCount("Num", "R_Eleves") = 0 Then
                    MsgBox "Aucun enregistrement !", vbExclamation
                    Cancel = True
                ElseIf IsNull(DLookup("[N_Etab]", "R_Eleves", "[N_Etab]='" & Me.Num & "'")) Then
                    MsgBox "Vérifier le N_Etab Saisi !", vbExclamation
                    Cancel = True
                Else
                    DoCmd.OpenReport "E_Eleves", acPreview, , "N_Etab= '" & Me.Num & "'"
                End If
            End If
     
            If Cadre9.Value = 3 Then
                If IsNull(Me.Num) Then
                    MsgBox "Attention Saisissez le Numéro D'examen Correcte", vbExclamation, "Attention"
                    Me.Num.SetFocus
                ElseIf DCount("Num", "R_Eleves") = 0 Then
                    MsgBox "Aucun enregistrement !", vbExclamation
                    Cancel = True
                ElseIf IsNull(DLookup("[N_Eleve]", "R_Eleves", "[N_Eleve]=" & Me.Num & "")) Then
                    MsgBox "Vérifier le N_Eleve Saisi !", vbExclamation
                    Cancel = True
                Else
                    DoCmd.OpenReport "E_Eleves", acPreview, , "N_Eleve= " & Me.Num & ""
                End If
            End If
        End Sub
    Mon problème est que lorsque je sasie un (D5666) et je coche soit la case 1 ou 3 le message d'erreur suivant apparait :
    erreur de syntaxe dans l'expression :<<[N_Exam] ou [N_Eleve]=D5666>>.
    Merci pour votre attention.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 368
    Points : 23 840
    Points
    23 840
    Par défaut
    Bonjour.

    C'est un peu normal si N_Exam ou N_Eleve sont des nombres dans Access, D5666 n'est pas un nombre, c'est du texte.
    Donc si tu essaye de faire passer un texte pour un nombre, Access n'accepte pas.

    Tu peux.
    • Changer le type de N_Exam et N_Eleve pour texte, si tu ne fait pas de calcul cela ne devrait pas avoir de grosses conséquence, peut-être seulement si tu tries sur ces valeurs tu vas avoir quelque chose de contre intuitif du genre 1, 11, 110, 20, 232, 3.
    • Si N_Exam et N_Eleve ne sont pas des nombres mais des textes, alors il faut mettre des délimiteurs autours du critère.
      Quelque chose comme "N_Exam= '" & Me.Num & "'", ce que tu as déjà fait pour le choix N_Etab.
    • T'assurer que le critère est bien un nombre.
      Attention la fonction IsNumeric n'est pas fiable à 100%, il y a des texte qui contiennent des chiffres et des lettres qui sont reconnus comme des nombres.
      Il est préférable de faire sa propre fonction qui vérifie les caractères un à un.


    A+

Discussions similaires

  1. Valeur zone de texte vide
    Par yieiii dans le forum IHM
    Réponses: 5
    Dernier message: 25/08/2010, 00h06
  2. meta refresh : valeur zone de texte
    Par dodo91 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 01/06/2009, 12h38
  3. Réponses: 25
    Dernier message: 10/12/2007, 20h28
  4. Réponses: 1
    Dernier message: 09/05/2007, 12h41
  5. Réponses: 7
    Dernier message: 23/06/2006, 15h52

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