Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Filtre multi critére 2

2 réponses
Avatar
brucat
Bonsoir,

j'essaye de solutionner Me.Filtre avec plusieurs critéres.

Je remercie déjà Raymond pour son aide.

Entre temps, je suis retourné sur le net et j'ai trouvé cette procédure

______________________________________________________________
Private Function FiltreEnrg()

Dim sFiltre As String

If (Not IsNull(Liste1)) Then

sFiltre = "([Champ1]='" & Liste1 & "' AND "

End If

If (Not IsNull(Liste2)) Then

sFiltre = sFiltre & "[Champ2]=" & CLng(Liste2) & " AND "



End If

If (Not IsNull(Liste3)) Then

sFiltre = sFiltre & "[Champ3]='" & Liste3 & "' AND "

End If

If (MaCaseACocher) Then

sFiltre = sFiltre & "[Champ4]>100 AND "

End If

If (sFiltre = "") Then

Me.Filter = ""

Me.FilterOn = False

Else

sFiltre = Left$(sFiltre, Len(sFiltre) - 5)

sFiltre = sFiltre & ")"

If (Left(sFiltre, 1) <> "(") Then sFiltre = "(" & sFiltre

Me.Filter = sFiltre

Me.FilterOn = True

End If

End Function

=======================

Tu place cette procédure sur l'événement après MàJ des listes et de ta case
:

'=FiltreEnrg()'

C'est assez générique, tu peux l'adapter à presque n'importe quel form, si
l'utilisateur

supprime le contenu dans une liste(liste=null) le filtre sur cette liste est
annuler mais

pas les autres, s'il change de filtre sur une liste les autres sont
conservés, bref il

peux faire pratiquement n'importe quoi. Si tu as des listes non
indépendantes Ajoute une

valeur 'TOUS' par exemple pour indiquer que l'on ne filtre pas sur cette
liste(à la place

d'une valeur null), pour les valeurs à filtrer je te laisse l'adapter à ton
cas

(numérique ou chaîne).

___________________________________________________________________________________

Comme je n'ai jamais utilisé de fonction.



Je n'ai pas bien compris "Tu places................................

et à quoi sert

"Else

sFiltre = Left$(sFiltre, Len(sFiltre) - 5)

sFiltre = sFiltre & ")"

If (Left(sFiltre, 1) <> "(") Then sFiltre = "(" & sFiltre

Me.Filter = sFiltre

Me.FilterOn = True



je pense que c'est là que je dois mettre mon msgbox au cas où aucun
enregistrement est trouvé



Pour précision :

J'ai 3 champs listes déroulantes : 2 textes et 1 numériques

voici mon adaptation de la procédure

....................

sFiltre = "[NomClient]='" & Liste3 & "' AND " TEXTE
.................

sFiltre = sFiltre & "[NumVendeur]=" & Liste1 & " AND " CHIFFRE
......................

sFiltre = sFiltre & "[N°Commande]='" & Liste2 & "' AND " TEXTE
.......................



Merci pour vos explications

Brucat

2 réponses

Avatar
Raymond [mvp]
Bonsoir.

Le left, c'est pour supprimer le And superflu en fin de filtre.
quand il dit tu places....
ça veut dire qu'il faut exécuter la fonction sur l'événement afterupdate de
ta case à cocher.
dans la fenêtre des propriétés, onglet évènement, tu indiques:
- soit =FiltreEnrg()
- soit [Procédure événementielle] et tu cliques sur les 3 points à
droite
dans le code tu tapes FiltreEnrg


--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"brucat" a écrit dans le message de news:
ddvto7$bq1$
Bonsoir,

j'essaye de solutionner Me.Filtre avec plusieurs critéres.

Je remercie déjà Raymond pour son aide.

Entre temps, je suis retourné sur le net et j'ai trouvé cette procédure



Avatar
brucat
Bonjour raymond
Merci pour le complément d'information.

"Raymond [mvp]" a écrit dans le message de
news: %23$
Bonsoir.

Le left, c'est pour supprimer le And superflu en fin de filtre.
quand il dit tu places....
ça veut dire qu'il faut exécuter la fonction sur l'événement afterupdate
de ta case à cocher.
dans la fenêtre des propriétés, onglet évènement, tu indiques:
- soit =FiltreEnrg()
- soit [Procédure événementielle] et tu cliques sur les 3 points à
droite
dans le code tu tapes FiltreEnrg


--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"brucat" a écrit dans le message de news:
ddvto7$bq1$
Bonsoir,

j'essaye de solutionner Me.Filtre avec plusieurs critéres.

Je remercie déjà Raymond pour son aide.

Entre temps, je suis retourné sur le net et j'ai trouvé cette procédure