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 :

Recherche Multicritière sous Access 2003


Sujet :

VBA Access

  1. #1
    Membre du Club Avatar de Pwouaro
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 68
    Points : 57
    Points
    57
    Par défaut Recherche Multicritière sous Access 2003
    Bonjour à tous,

    J'essaye de réaliser un formulaire de recherche multi-critère (2 critères). Malheuresement, je suis novice en Access et en VBA. Je me suis largement inspiré du tutoriel Caféïne, mais quelques difficultés se présentent.

    Je travaille sous Access 2003, j'ai créé une table "pointage" qui comporte quatre champs: numéro (clé), Matricule, BT, Date et Heures.
    Le but est de faire une recherche selon les BT (bon de travail) et les dates.

    Le problème est que cela ne fonctionne pas, malheuresement je ne peux pas vous dire d'où viens le soucis....je n'en ai aucunes idées.

    Voilà le code:

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    Private Sub chkDate_Click()
     
    If Me.chkdate Then
        Me.txtDate.Visible = False
    Else
        Me.txtDate.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
    Private Sub chkBT_Click()
     
    If Me.chkBT Then
        Me.txtBT.Visible = False
    Else
        Me.txtBT.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
    Private Sub Form_Load()
     
    Dim ctl As Control
     
    For Each ctl In Me.Controls
        Select Case Left(ctl.Name, 3)
            Case "chk"
                ctl.Value = -1
     
            Case "lbl"
            ctl.Caption = "- * - * -"
     
            Case "txt"
                ctl.Visible = False
                ctl.Value = ""
     
        End Select
    Next ctl
     
    Me.lstresultats.RowSource = "SELECT Matricule, BT, Date, Heures, Type FOM pointage;"
    Me.lstresultats.Requery
     
    End Sub
     
    Private Sub RefreshQuery()
     
    Dim SQL As String
    Dim SQLWhere As String
     
    SQL = "SELECT Matricule, BT, Date, Heures, Type FROM pointage Where pointage!Numero <> 0"
     
    If Not Me.chkdate Then
        SQL = SQL & "And pointage!Date like '*" & Me.txtDate & "*' "
    End If
     
    If Not Me.chkBT Then
        SQL = SQL & "And pointage!BT like '*" & Me.txtBT & "*' "
    End If
     
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
    SQL = SQL & ";"
     
    Me.lblStats.Caption = DCount("*", "pointage", SQLWhere) & " / " & DCount("*", "pointage")
    Me.lstresultats.RowSource = SQL
    End Sub
     
    Private Sub txtDate_BeforeUpdate(Cancel As Integer)
    RefreshQuery
     
    End Sub
     
    Private Sub txtBT_BeforeUpdate(Cancel As Integer)
    RefreshQuery
    End Sub
     
    End Sub
    Voyez-vous des erreurs?
    Si vous avez des suggestions, je suis tout ouïe.

    Amicalement.

  2. #2
    Membre régulier Avatar de 973thom
    Inscrit en
    Juin 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2004
    Messages : 132
    Points : 78
    Points
    78
    Par défaut
    commence déjà par mettre un espace avant le "And" et dis moi ce qui se passe

  3. #3
    Membre du Club Avatar de Pwouaro
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 68
    Points : 57
    Points
    57
    Par défaut
    Salut 973thom

    Voilà j'ai ajouté les espaces , mais pas de changement apparent

    En faisant "Pas à pas détaillé" j'ai une erreur du type:

    "Utilisation incorrect du mot clé Me"
    A ce niveau là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If Not Me.chkdate Then
        SQL = SQL & " And pointage!Date like '*" & Me.txtDate & "*' "
    End If
    J'ai cru comprendre, que l'on ne pouvait pas utilisé le mot clé Me dans un module standard, (d'après l'aide Windows) mais uniquement dans module de classe...

    Merci pour ton soutien!

  4. #4
    Membre régulier Avatar de 973thom
    Inscrit en
    Juin 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2004
    Messages : 132
    Points : 78
    Points
    78
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Not Me.chkdate Then
        SQL = SQL & " And pointage!Date = " & chr(34) &  format(Me![txtDate],"mm\/dd\/yyyy")  & chr(34) 
    End If
    Attention aux format des dates dans el SQL, voir la faq pour plus d'infos

  5. #5
    Membre du Club Avatar de Pwouaro
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 68
    Points : 57
    Points
    57
    Par défaut
    J'ai modifié la ligne que tu m'as indiqué.

    Il y a une erreur ici (erreur de compilation, utilisation incorrect du mot clé Me.)


    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 RefreshQuery()
     
    Dim SQL As String
    Dim SQLWhere As String
     
    SQL = "SELECT Matricule, BT, Date, Heures FROM pointage Where pointage!Numero <> 0"
     
    If Not Me.chkdate Then
        SQL = SQL & " And pointage!Date = " & Chr(34) & Format(Me![txtDate], "mm\/dd\/yyyy") & Chr(34)
    End If
     
    If Not Me.chkBT Then
        SQL = SQL & " And pointage!BT like '*" & Me.txtBT & "*' "
    End If
     
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
    SQL = SQL & ";"
     
    Me.lblStats.Caption = DCount("*", "pointage", SQLWhere) & " / " & DCount("*", "pointage")
    Me.lstresultats.RowSource = SQL
    End Sub
    Une idée?
    Merci

  6. #6
    Membre régulier Avatar de 973thom
    Inscrit en
    Juin 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2004
    Messages : 132
    Points : 78
    Points
    78
    Par défaut
    tu as essayer avec me.txtdate ???

  7. #7
    Membre du Club Avatar de Pwouaro
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 68
    Points : 57
    Points
    57
    Par défaut
    Oui, mais ça ne change rien.

    A mon avis, le problème vient du fait que Me ne renvoie à rien.
    Je vais faire des recherches pour comprendre comment affecter une variable.

    Merci.

  8. #8
    Membre du Club Avatar de Pwouaro
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 68
    Points : 57
    Points
    57
    Par défaut
    Ça y est! J'ai réglé mon problème!

    En fait, je n'avais pas créé les codes événements comme il fallait. J'ai tapé le code directement dans "Generals". Voilà la cause de feu mes soucis.

    Il ne me reste plus qu'a faire en sorte que les champs textes soient vidés automatiquement.

    Merci pour ton soutien 973thom.

  9. #9
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Salut,

    Est ce que tu as bien mis ton code dans le module pour le formulaire et pas autre part ?

    [EDIT] je suis arrivée 30 s trop tard... n'oublie pas de mettre le tag

  10. #10
    Membre du Club Avatar de Pwouaro
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 68
    Points : 57
    Points
    57
    Par défaut
    Salut lola,

    oui, j'ai bien mis le code dans le module pour le formulaire.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/04/2007, 17h53
  2. Taille d'une zone de texte dans un état sous Access 2003
    Par Petite grenouille dans le forum Contribuez
    Réponses: 4
    Dernier message: 15/05/2006, 19h39
  3. Problème de table liées sous Access 2003
    Par FuRioX dans le forum Access
    Réponses: 2
    Dernier message: 05/04/2006, 12h19
  4. Probleme formulaire sous access 2003
    Par pedrosystem dans le forum Access
    Réponses: 2
    Dernier message: 28/02/2006, 17h02
  5. PB importation classeur excel sous access 2003
    Par techinfo37 dans le forum Access
    Réponses: 6
    Dernier message: 04/10/2005, 20h41

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