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

Access Discussion :

filtre sur date et chekbox [AC-2013]


Sujet :

Access

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 116
    Points : 89
    Points
    89
    Par défaut filtre sur date et chekbox
    Bonjour,
    Je bloque sur mon projet.

    J'ai une fenêtre qui appel une requête.
    Cette requête répertorie une liste d'infos que je visualise avec un formulaire "hist_sie" (l'historique des mes sorties de matériel).

    Dans ce formulaire j'aimerais donner la possibilité à la personne qui utilise l'application de filtrer les données (qui seront assez conséquentes en terme de lignes).

    Pour cela j'ai créer des combobox.
    Quand je sélectionne une info dans une combo, après la mise à jour de cette combo, je filtre mon formulaire.
    Si je sélectionne plusieurs infos (plusieurs combos renseignée), idem, je n'affiche que les lignes contenant les infos sélectionnée dans mes combos.

    Ensuite je bloque...
    J'aimerais également donner la possibilité à l’utilisateur de filtrer sur une date ou/et une chekbox...

    Voici le code que j'ai mis pour le moment et qui gère très bien les combobox..

    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 MAJ_Filtre()
    Dim strFilter As String
    FilterOn = False
        'Concaténation du filtre selon ce qui a été saisie
        If Len(Me.Cmb_adh) <> 0 Or Not IsNull(Me.Cmb_adh) Then strFilter = "[nom_adh] = '" & Me.Cmb_adh & "' AND "
        If Len(Me.cmb_Nom_prod) <> 0 Or Not IsNull(Me.cmb_Nom_prod) Then strFilter = strFilter & "[nom_prod] = '" & Me.cmb_Nom_prod & "' AND "
        If Len(Me.Cmb_descr_prod) <> 0 Or Not IsNull(Me.Cmb_descr_prod) Then strFilter = strFilter & "[descr_prod] = '" & Me.Cmb_descr_prod & "' AND "
        If Len(Me.Cmb_utilisateur) <> 0 Or Not IsNull(Me.Cmb_utilisateur) Then strFilter = strFilter & "[nom_util] = '" & Me.Cmb_utilisateur & "' AND "
     
    'Si il y a eu saisie
    If IsNull(strFilter) = True Then      'si toutes les combo de critère filtre sont vides alors pas de filtres
        FilterOn = False
    ElseIf Len(strFilter) <> 0 Then                          'sinon je filtre
        'Suppression du dernier AND
        strFilter = Left(strFilter, Len(strFilter) - 5)
        DoCmd.ApplyFilter "", strFilter
    End If
    'Me.BtRetour.SetFocus
     
    End Sub

    Je souhaitais également vous montrer une image de mon formulaire.

    Nom : Capture.PNG
Affichages : 149
Taille : 17,4 Ko

    J’espère que vous pourrez m'aider...
    Merci par avance

  2. #2
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut filtre sur date et chekbox
    Ou est la question ? Si ton filtre fonctionne bien, tu le complète par le critère date (date = date précise ou un intervalle) et une checkbox (qui prend les valeurs vrai ou faux)

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 116
    Points : 89
    Points
    89
    Par défaut
    Bonsoir,
    J'ai avancé dans mon projet.
    Cependant dans mon code, le filtre sur la date ne fonctionne pas...
    Aucune erreur mais si je saisie une date (date qui existe bien) alors le filtre ne m'affiche aucun enregistrement...
    Est ce que quelqu'un pourrais m'aider ?

    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
     
    Private Sub MAJ_FILTRE()
     Dim strFilter As String
     FilterOn = False
        'Concaténation du filtre selon ce qui a été saisie
        If Len(Me.Cmb_adh) <> 0 Or Not IsNull(Me.Cmb_adh) Then strFilter = "[nom_adh] = '" & Me.Cmb_adh & "' AND "
        If Len(Me.cmb_Nom_prod) <> 0 Or Not IsNull(Me.cmb_Nom_prod) Then strFilter = strFilter & "[nom_prod] = '" & Me.cmb_Nom_prod & "' AND "
        If Len(Me.Cmb_descr_prod) <> 0 Or Not IsNull(Me.Cmb_descr_prod) Then strFilter = strFilter & "[descr_prod] = '" & Me.Cmb_descr_prod & "' AND "
        If Len(Me.Cmb_utilisateur) <> 0 Or Not IsNull(Me.Cmb_utilisateur) Then strFilter = strFilter & "[nom_util] = '" & Me.Cmb_utilisateur & "' AND "
     
        'code Filtre sur date:
        If Len(Me.txt_date) <> 0 Or Me.txt_date <> "" Then strFilter = strFilter & "[date_remise] = " & Me.txt_date & " AND "
     
        'code Filtre sur chekbox:
        If Len(Me.Chk_CB) <> 0 Or Me.Chk_CB = -1 Then strFilter = strFilter & "[cb] = " & Me.Chk_CB & " AND "
        If Len(Me.Chk_Cheque) <> 0 Or Me.Chk_Cheque = -1 Then strFilter = strFilter & "[cheque] = " & Me.Chk_Cheque & " AND "
        If Len(Me.Chk_Espece) <> 0 Or Me.Chk_Espece = -1 Then strFilter = strFilter & "[espece] = " & Me.Chk_Espece & " AND "
        If Len(Me.Chk_Cheque_vac) <> 0 Or Me.Chk_Cheque_vac = -1 Then strFilter = strFilter & "[cheque_vac] = " & Me.Chk_Cheque_vac & " AND "
     
     
    'Si il y a eu saisie
        If IsNull(strFilter) = True Then
            FilterOn = False        'si toutes les combo de critère filtre sont vides alors pas de filtres
     
     
    'Si les chekbox repasse à 0 je le met en null et je relance la mise à jour du filtre
        ElseIf Me.Chk_CB = 0 Then
            Me.Chk_CB = Null
            MAJ_FILTRE
        ElseIf Me.Chk_Cheque = 0 Then
            Me.Chk_Cheque = Null
            MAJ_FILTRE
        ElseIf Me.Chk_Espece = 0 Then
            Me.Chk_Espece = Null
            MAJ_FILTRE
        ElseIf Me.Chk_Cheque_vac = 0 Then
            Me.Chk_Cheque_vac = Null
            MAJ_FILTRE
     
     
        ElseIf Len(strFilter) <> 0 Then                          'sinon je filtre
    'Suppression du dernier AND
                strFilter = Left(strFilter, Len(strFilter) - 5)
                DoCmd.ApplyFilter "", strFilter
        End If
    Me.bt_accueil.SetFocus
     
    End Sub

    résultat :


    Nom : Capture.JPG
Affichages : 217
Taille : 75,0 Ko

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Les variables de type date doivent être quoter entre des croisillons #.
    Ensuite, en VBA, il faut utiliser le format US quand on fait référence à une date.
    Le code pour le filtre de la date à la ligne 12 ressemblerait à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     'code Filtre sur date:
        If Len(Me.txt_date) <> 0 Or Me.txt_date <> "" Then strFilter = strFilter & "[date_remise] =# " & Format(Me.txt_date,"yyyy/mm/dd") & "# AND "
    Cordialement.
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

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

Discussions similaires

  1. MySQL + c++ builder : Filtre sur date inposible
    Par fpascal dans le forum MySQL
    Réponses: 8
    Dernier message: 09/10/2008, 09h46
  2. [BOXI] Problème de filtre sur date
    Par Julien59 dans le forum Deski
    Réponses: 6
    Dernier message: 10/06/2008, 10h25
  3. Filtre sur date du jour + date du jour+1
    Par pierrot67 dans le forum Bases de données
    Réponses: 6
    Dernier message: 16/05/2007, 07h21
  4. Problème de filtre sur date avec ADOQuery
    Par lingli dans le forum Bases de données
    Réponses: 12
    Dernier message: 30/04/2006, 15h40
  5. Filtre sur date
    Par MagicManu dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/08/2005, 00h05

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