Filtre sur case à cocher

dragoes64 Messages postés 10 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 12 août 2011 - 11 août 2011 à 16:49
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 - 12 août 2011 à 15:06
--------------------------------------------------------------------------------

Bonjour,

J'ai un formulaire continu qui regroupe tous les enregistrements de ma base. Dans ce formulaire j'ai 4 cases à cocher (on les nomme cocher1...cocher4), qui sont décochées à l'ouverture du formulaire et qui filtre des valeurs(val1...val4).
Lorsqu'on coche un case, sa filtre les enregistrements en affichant ceux qui correspondent à la valeur de la case cochée (jusqu'ici pas de problème).

Mon problème survient lorsque je coche une deuxième case. J'aimerais que sa cumule les deux filtres. Or dans mon cas sa remplace les valeurs du 1er filtre par le deuxième.
J'aimerais savoir comment on fait pour cumuler les filtres sur les 4 cases à cocher?

J'espère avoir été clair.
Merci de votre aide.

7 réponses

4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
11 août 2011 à 17:48
Peux-tu poster la/les lignes de code qui fait le premier filtre. Celui qui fonctionne.
0
dragoes64 Messages postés 10 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 12 août 2011
12 août 2011 à 08:36
POur l'instant mon code est le suivant :

Private Sub CocherSSS_Click()
If CocherSSS.Value = True Then
DoCmd.ApplyFilter , "([SYSTEM] = 'SSS')"
Else
FilterOn = False
End If
End Sub
Private Sub CocherPSS_Click()
If CocherPSS.Value = True Then
DoCmd.ApplyFilter , "([SYSTEM] = 'PSS')"
Else
FilterOn = False
End If
End Sub
Private Sub CocherHIPS_Click()
If CocherHIPS.Value = True Then
DoCmd.ApplyFilter , "([SYSTEM] = 'HIPS')"
Else
FilterOn = False
End If
End Sub
Private Sub CocherPACK_Click()
If CocherPACK.Value = True Then
DoCmd.ApplyFilter , "([SYSTEM] = 'PACKAGE')"
Else
FilterOn = False
End If
End Sub

En fait pour chaque case à cocher je fait le filtre. Ce que je n'arrive pas a faire c'est par exemple créé une fonction qui me cumule ces filtres si je coche plusieurs cases.

Merci,
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
12 août 2011 à 09:33
Suis désolet mais je ne reconnais pas la commande ApplyFilter. Je m'attandais a un recordset ou a des req. SQL.

Bref suis désolet mais moi je ne peut pas t'aider c audessus de mes compétances.
0
dragoes64 Messages postés 10 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 12 août 2011
12 août 2011 à 13:19
Sinon j'ai testé ce code avec des requêtes mais il se passe rien quand je coche la case :

Private Sub FilterEnrg()
Dim SQL As String

SQL = " SELECT SYSTEM,SIMPLE,TYPE,WORKPERMIT,COMMENTS,REQUESTER,POSTE,TAGNAME,UNIT,FUNCTION,EQUIPMENT,LEVEL,STATUS FROM SSS WHERE ID <>0"

If Me.CocherSSS Then
SQL SQL & "OR SYSTEM 'SSS'"
End If

If Me.CocherPSS Then
SQL SQL & "OR SYSTEM 'PSS'"
End If

If Me.CocherHIPS Then
SQL SQL & "OR SYSTEM 'HIPS'"
End If

If Me.CocherPACK Then
SQL SQL & "OR SYSTEM 'PACKAGE'"
End If

Me.RecordSource = SQL

End Sub


Si tu as une solution avec ceci?

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
12 août 2011 à 14:47
Oui! Je comprends mieu.

Peut tu utliliser un ADO recordset ?

Si oui je te donne l'exemple fait en VB6
Set infoChange = New ADODB.Recordset
infoChange.Open SQL
0
dragoes64 Messages postés 10 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 12 août 2011
12 août 2011 à 14:54
A vrai dire je ne maitrise pas trop le recordset.
Après à partir du code que j'ai posté, ne peut on pas l'amélioré pour que sa fonctionne, je vois pas ce qui ne marche pas.

Merci
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
12 août 2011 à 15:06
Ce qu'il y a c que je ne connais pas RecordSource.

J'ai regardé sur le net et j'ai trouvé ça:
Adodc1.RecordSource = "Select * from Records Where Name like'" & Text17.Text & "%'"
Adodc1.CommandType = ADODB.CommandTypeEnum.adCmdText
        Adodc1.Refresh()

Que je pense qu'il faut adapter comme cela:
Me.RecordSource = SQL
Me.CommandType =ADODB.CommandTypeEnum.adCmdText
Me.Refresh()


Encore une fois je te présise que je ne connais pas ce code.
0
Rejoignez-nous