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

Recherche Multi Critères avec plusieurs Combo Box

3 réponses
Avatar
yves.duchene
Bonjour,

J'ai un projet qui comporte un formulaire avec une "Recherche
Multi-Critères" qui fonctionne très bien.
Celui-ci compte 2 "Combo Box", mais lorsque je désire modifier des
"Text Box" en "Combo Box" alors cela ne fonctionne plus.


Code pour les "Test Box"

If Not IsNull(Me.txtNOM) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([NOM] LIKE '*" & Me.txtNOM & "*')"
End If


Code pour les deux "Combo Box"

If Not IsNull(Me.cmbType) Then
strFiltre = "([Type]='" & Me.cmbType & "')"
End If



Merci d'avance pour vos lumières.

3 réponses

Avatar
Raymond [mvp]
Bonjour.
si txtNOM est égal à "", il n'y a rien de prévu. quand il y a plusieurs if
imbriqués mets bien les end if sinon c'est très difficile à lire.

If Nz(Me.txtNOM,"") <> "" Then
If Nz(strFiltre, "") <> "" Then
strFiltre = strFiltre & " AND "
End If
strFiltre = strFiltre & "([NOM] LIKE '*" & Me.txtNOM & "*')"
End If

je ne comprends pas bien ton système à combo et texte, tu veux utiliser quoi
exactement, l'un ou l'autre, les deux ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Closemofo" a écrit dans le message de news:

Bonjour,

J'ai un projet qui comporte un formulaire avec une "Recherche
Multi-Critères" qui fonctionne très bien.
Celui-ci compte 2 "Combo Box", mais lorsque je désire modifier des
"Text Box" en "Combo Box" alors cela ne fonctionne plus.


Code pour les "Test Box"

If Not IsNull(Me.txtNOM) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([NOM] LIKE '*" & Me.txtNOM & "*')"
End If


Code pour les deux "Combo Box"

If Not IsNull(Me.cmbType) Then
strFiltre = "([Type]='" & Me.cmbType & "')"
End If



Merci d'avance pour vos lumières.


Avatar
If
Raymond,
Merci pour ta réponse

En fait j'ai modifié un exemple venant du livre CookBook 2 (chapitre 5) que
j'ai téléchargé ici :
http://www.self-access.com/access/cookbook/acCookbookDL.php


Voilà le code que j'ai actuellement.
Je désire que le zone texte CAS1 -> CAS2 soient des combo box (2-3 valeurs
différentes dans ces champs)

------------------------------------------------
Option Compare Database
Option Explicit

Sub btnChercher_Click()
Dim strFiltre As String

' Filtre sur Type
strFiltre = ""
If Not IsNull(Me.cmbType) Then
strFiltre = "([Type]='" & Me.cmbType & "')"
End If


' Filtre sur NOM1
If Not IsNull(Me.txtNOM1) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([NOM1] LIKE '*" & Me.txtNOM1 & "*')"
End If

' Filtre sur Nom NOM2
If Not IsNull(Me.TxtNOM2) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([NOM2] LIKE '*" & Me.TxtNOM2 & "*')"
End If

' Filtre sur ID
If Not IsNull(Me.TxtID) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([ID]=" & Me.TxtID & ")"
End If

' Filtre sur PAYS
If Not IsNull(Me.TxtPAYS) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([PAYS] LIKE '*" & Me.TxtPAYS & "*')"
End If

' Filtre sur Date
If Not IsNull(Me.txtDateDebut) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([Date]>=" & DateUS(Me.txtDateDebut) & ")"
End If
If Not IsNull(Me.txtDateFin) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([Date]<=" & DateUS(Me.txtDateFin) & ")"
End If


' Filtre sur CAS1
If Not IsNull(Me.TxtCAS1) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([CAS1] LIKE '*" & Me.TxtCAS1 & "*')"
End If

' Filtre sur CAS2
If Not IsNull(Me.TxtCAS2) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([CAS2] LIKE '*" & Me.TxtCAS2 & "*')"
End If

' Filtre sur CAS3
If Not IsNull(Me.TxtCAS3) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([CAS3] LIKE '*" & Me.TxtCAS3 & "*')"
End If

' Filtre sur CAS4
If Not IsNull(Me.TxtCAS4) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([CAS4] LIKE '*" & Me.TxtCAS4 & "*')"
End If


' Filtrer OPTION
If Me.opgOPTION = 1 Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([OPTION]=yes)"
End If
If Me.opgOPTION = 2 Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([OPTION]=no)"
End If

' Afficher le filtre dans la zone d'étiquette lblFiltre
Me.lblFiltre.Caption = strFiltre

' Appliquer le filtre dans le sous-form.
With Me.sfmRecherche.Form
.Filter = strFiltre
.FilterOn = True
End With
End Sub


Private Sub btnToutAfficher_Click()
' Désactiver le filtre
Me.sfmRecherche.Form.FilterOn = False

'Me.cmbType = ""

' Mettre à jour le descriptif du filtre
Me.lblFiltre.Caption = ""
End Sub
Private Sub btnFermer_Click()
On Error GoTo Err_btnFermer_Click


DoCmd.Close

Exit_btnFermer_Click:
Exit Sub

Err_btnFermer_Click:
MsgBox Err.Description
Resume Exit_btnFermer_Click

End Sub


------------------------------------------------


"Raymond [mvp]" a écrit dans le message de
news: OSli$
Bonjour.
si txtNOM est égal à "", il n'y a rien de prévu. quand il y a plusieurs if
imbriqués mets bien les end if sinon c'est très difficile à lire.

If Nz(Me.txtNOM,"") <> "" Then
If Nz(strFiltre, "") <> "" Then
strFiltre = strFiltre & " AND "
End If
strFiltre = strFiltre & "([NOM] LIKE '*" & Me.txtNOM & "*')"
End If

je ne comprends pas bien ton système à combo et texte, tu veux utiliser
quoi exactement, l'un ou l'autre, les deux ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Closemofo" a écrit dans le message de news:

Bonjour,

J'ai un projet qui comporte un formulaire avec une "Recherche
Multi-Critères" qui fonctionne très bien.
Celui-ci compte 2 "Combo Box", mais lorsque je désire modifier des
"Text Box" en "Combo Box" alors cela ne fonctionne plus.


Code pour les "Test Box"

If Not IsNull(Me.txtNOM) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([NOM] LIKE '*" & Me.txtNOM & "*')"
End If


Code pour les deux "Combo Box"

If Not IsNull(Me.cmbType) Then
strFiltre = "([Type]='" & Me.cmbType & "')"
End If



Merci d'avance pour vos lumières.






Avatar
Raymond [mvp]
Tu ne penses pas qu'il serait plus profitable de poser toutes les questions
directement à Hervé sur son forum ? tu gagneras certainement du temps.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"If" a écrit dans le message de news:
417d26f2$0$25832$
Raymond,
Merci pour ta réponse

En fait j'ai modifié un exemple venant du livre CookBook 2 (chapitre 5)
que j'ai téléchargé ici :
http://www.self-access.com/access/cookbook/acCookbookDL.php


Voilà le code que j'ai actuellement.
Je désire que le zone texte CAS1 -> CAS2 soient des combo box (2-3 valeurs
différentes dans ces champs)

------------------------------------------------
Option Compare Database
Option Explicit

Sub btnChercher_Click()
Dim strFiltre As String

' Filtre sur Type
strFiltre = ""
If Not IsNull(Me.cmbType) Then
strFiltre = "([Type]='" & Me.cmbType & "')"
End If


' Filtre sur NOM1
If Not IsNull(Me.txtNOM1) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([NOM1] LIKE '*" & Me.txtNOM1 & "*')"
End If

' Filtre sur Nom NOM2
If Not IsNull(Me.TxtNOM2) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([NOM2] LIKE '*" & Me.TxtNOM2 & "*')"
End If

' Filtre sur ID
If Not IsNull(Me.TxtID) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([ID]=" & Me.TxtID & ")"
End If

' Filtre sur PAYS
If Not IsNull(Me.TxtPAYS) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([PAYS] LIKE '*" & Me.TxtPAYS & "*')"
End If

' Filtre sur Date
If Not IsNull(Me.txtDateDebut) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([Date]>=" & DateUS(Me.txtDateDebut) & ")"
End If
If Not IsNull(Me.txtDateFin) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([Date]<=" & DateUS(Me.txtDateFin) & ")"
End If


' Filtre sur CAS1
If Not IsNull(Me.TxtCAS1) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([CAS1] LIKE '*" & Me.TxtCAS1 & "*')"
End If

' Filtre sur CAS2
If Not IsNull(Me.TxtCAS2) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([CAS2] LIKE '*" & Me.TxtCAS2 & "*')"
End If

' Filtre sur CAS3
If Not IsNull(Me.TxtCAS3) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([CAS3] LIKE '*" & Me.TxtCAS3 & "*')"
End If

' Filtre sur CAS4
If Not IsNull(Me.TxtCAS4) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([CAS4] LIKE '*" & Me.TxtCAS4 & "*')"
End If


' Filtrer OPTION
If Me.opgOPTION = 1 Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([OPTION]=yes)"
End If
If Me.opgOPTION = 2 Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND "
strFiltre = strFiltre & "([OPTION]=no)"
End If

' Afficher le filtre dans la zone d'étiquette lblFiltre
Me.lblFiltre.Caption = strFiltre

' Appliquer le filtre dans le sous-form.
With Me.sfmRecherche.Form
.Filter = strFiltre
.FilterOn = True
End With
End Sub


Private Sub btnToutAfficher_Click()
' Désactiver le filtre
Me.sfmRecherche.Form.FilterOn = False

'Me.cmbType = ""

' Mettre à jour le descriptif du filtre
Me.lblFiltre.Caption = ""
End Sub
Private Sub btnFermer_Click()
On Error GoTo Err_btnFermer_Click


DoCmd.Close

Exit_btnFermer_Click:
Exit Sub

Err_btnFermer_Click:
MsgBox Err.Description
Resume Exit_btnFermer_Click

End Sub


------------------------------------------------