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 :

Filtre bouton action triple état


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 33
    Points : 12
    Points
    12
    Par défaut Filtre bouton action triple état
    Bonjour

    D'avance désolé de demander encore un peu d'aide
    Dans mon formulaire, j'ai une case à cocher indépendante qui peut avoir le triple état (oui/non/tout)

    J'applique ce filtre dans mon formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'Filtre sur cloture
    If Not IsNull(Me.RechCloture) Then
    If strFiltre <> "" Then strFiltre = strFiltre & " AND "
    strFiltre = strFiltre & "([Cloture]= " & Me.RechCloture & ")"
    End If
    Ce filtre ne teste que le oui et le non

    Comment adapter pour qu'il affiche aussi tout (oui et non en même temps)

    PS : le filtre enchaine également d'autres critères. Je ne peux donc pas mettre la valeuur "" à la variable string strFiltre

    Merci d'avance
    Cdt

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    Bonsoir,
    puisque tu veux tout, tu n'as donc pas besoin de filtrer ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    le filtre fonctionne avec l'état à oui, à non. Les 2 aucun problème
    C'est juste l'état ni l'un ni l'autre qui ne fonctionne pas

    Et je ne sais justement pas lui dire ni l un ni l autre

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    C'est juste l'état ni l'un ni l'autre qui ne fonctionne pas
    cela n'existe pas avec un booléen dans une table, il n'y a que 2 valeurs Oui ou Non
    La valeur vide n'est possible que dans le cas d'une valeur par défaut sur enregistrement pas encore créé.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    oui dans la table

    mais dans le formulaire comme champ indépendant pour utilisation en filtre
    et donc pour filtrer mon formulaire et avoir les enregistrements qui répondent à la fois à oui et à non
    j'ai essayé la valeur null mais pas fonctionnait, ou peut etre pas sû l'écrire

    en tout cas merci pour cette aide à ma réflexion

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    pour filtrer mon formulaire et avoir les enregistrements qui répondent à la fois à oui et à non
    C'est ce que je t'ai dit la première fois : pas de filtre si tu veux tout, toi tu voulais ni l'un ni l'autre :
    le filtre fonctionne avec l'état à oui, à non. Les 2 aucun problème
    C'est juste l'état ni l'un ni l'autre qui ne fonctionne pas

    Et je ne sais justement pas lui dire ni l un ni l autre
    De plus, ton code fonctionne comme tu le souhaites : si ce n'es pas nul, tu prends la valeur indiquée, si c'est nul, tu ne fais rien, donc tu prends toutes les valeurs (les oui et les non)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    oui le code fonctionne bien tant que je n'ai pas cliqué
    si je coche, le filtre fonctionne, si je décoche le filtre fonctionne, si je clique encore et revient au tripe état (ni oui ni non) le filtre ne fait rien (il n'affiche pas la totalité (comme s'il restait à non)

    Il me semblait que triple état c'etait oui non null

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    essaie ce code pour voir si il passe bien dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'Filtre sur cloture
    If Not IsNull(Me.RechCloture) Then
        If strFiltre <> "" Then strFiltre = strFiltre & " AND "
            strFiltre = strFiltre & "([Cloture]= " & Me.RechCloture & ")"
        End if
    Else
        Msgbox "je suis nul, la preuve : " & Me.RechCloture
    End If
    et cela ne s'adresse pas à toi
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  9. #9
    Membre à l'essai
    Inscrit en
    Juillet 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Me.RechCloture prend bien la valeur null

    Je pense que le soucis c'est que le filtre ne teste que si pas null justement, et ne teste pas si null

  10. #10
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    Bonjour,
    Je pense que le soucis c'est que le filtre ne teste que si pas null justement, et ne teste pas si null
    je te ferai remarquer que le code posté est incomplet : du coup on ne sait pas ce que fait le code quand Me.RechCloture est nul : remplace le message que je t'ai mis par le contenu de strFiltre.

    De plus je n'ai pas percuté en lisant ceci :
    Je ne peux donc pas mettre la valeuur "" à la variable string strFiltre
    bien sûr que si, cela doit fonctionner,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     strFiltre = strFiltre & ""
    as-tu au moins essayé ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  11. #11
    Membre à l'essai
    Inscrit en
    Juillet 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Voici le code complet


    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
     
    Private Sub resultatschercher_click()
     
    Dim strFiltre As String
    strFiltre = ""
     
    'Filtre sur cloture
    If Not IsNull(Me.RechCloture) Then
    If strFiltre <> "" Then strFiltre = strFiltre & " AND "
    strFiltre = strFiltre & "([Cloture]= " & Me.RechCloture & ")"
    Else: strFiltre = strFiltre & ""
    End If
     
    'Filtre sur urgent
    If Not IsNull(Me.RechUrgence) Then
    If strFiltre <> "" Then strFiltre = strFiltre & " AND "
    strFiltre = strFiltre & "([Urgence]= " & Me.RechUrgence & ")"
    End If
     
    'affichage dans formulaire
    Me.Filter = strFiltre
    Me.FilterOn = True
     
    End Sub
    La msgbox n'affiche pas le résultat de strFiltre en mettant comme ceci : msgbox ("texte") & strFiltre
    Je teste tout ce que vous me dites, et je vous en remercie encore une fois

  12. #12
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    Bonjour,
    un conseil : pense à indenter ton code pour plus de lisibilité et, pour ma part je préfère mettre les instructions suivant le Then à la ligne en-dessous même si cela me coute un End If en plus.

    Après avoir modifié ton code pour ne pas qu'il plante, je constate qu'il passe bien à l'instruction Else :

    Nom : testMilou16.JPG
Affichages : 334
Taille : 55,2 Ko

    Donc essaie de faire de même : mets un point d'arrêt à l'instruction If Not IsNull(Me.Rechcloture) Then, ensuite utilise le mode pas à pas (touche F8) et vois par où le curseur passe.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  13. #13
    Membre à l'essai
    Inscrit en
    Juillet 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Une fois le point d'arrêt mis, et dans le formulaire la case à cocher en état triple (c'est à dire ni à oui et ni à non), le vba passe bien du If au Else

    Nom : Capture.PNG
Affichages : 276
Taille : 8,3 Ko

    Je pense donc que je ne sais pas écrire le filtre que je recherche (ni à oui ni à non) dans la partie Else et j'en suis désolé

  14. #14
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    a priori :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     strFiltre = strFiltre & ""
    devrait suffire car, je le répète, si tu prend toutes les valeurs (Oui, Non) il n'y aura pas de filtre sur ce champ cela revient à prendre tous les enregistrements ayant ces 2 valeurs.
    Mais si tu tiens absolument à appliquer un filtre sur ces 2 valeurs fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    strFiltre = strFiltre &  " ([Cloture]=True Or [Cloture]=False)"
    'ou:
    strFiltre = strFiltre &  " [Cloture] In (True, False)"
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

Discussions similaires

  1. Bouton triple état
    Par kemiolek dans le forum IHM
    Réponses: 6
    Dernier message: 05/06/2008, 12h27
  2. Figer la couleur d'un bouton sur l'état "cliqué"
    Par plesguillon dans le forum Flash
    Réponses: 10
    Dernier message: 15/05/2007, 15h22
  3. Réponses: 3
    Dernier message: 27/09/2006, 13h11
  4. [Système] liste déroulante > bouton > Action
    Par KingOfIce dans le forum Langage
    Réponses: 3
    Dernier message: 22/09/2006, 16h07
  5. [FLASH MX2004] Création d'un bouton Action Script
    Par chocobos dans le forum Flash
    Réponses: 12
    Dernier message: 13/04/2005, 12h03

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