OVH Cloud OVH Cloud

erreur code VBA

2 réponses
Avatar
pean.eric
Bonsoir,
je n'arrive pas à trouver ce qui cloche, je cherche à créer un filtre sur un
formulaire à partir du choix de deux critère dans des listes déroulantes
cmbDiv (texte) et cmbELEREGIME (numérique). ça fonctionne bien sauf s'il n'y
a aucun critère de sélectionné dans ma première boîte cmbDiv, je n'ai alors
aucun traitement, comment faire dans mon deuxième If Not pour charger
uniquement la valeur du cmbELEREGIME? Merci, Eric
Private Sub btOK_Click()
Dim strFiltre As String

On Error Resume Next
strFiltre = ""
If Not IsNull(Me.cmbDiv) Then
strFiltre = "([DIV]='" & Me.cmbDiv & "')"
End If

If Not IsNull(Me.cmbregime) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND " &
"([ELEREGIME]=" & Me.cmbregime & ")"


End If

Me.Caption = strFiltre

With Me.sfmrésultats.Form
.Filter = strFiltre
.FilterOn = True
End With
End Sub

2 réponses

Avatar
Raymond [mvp]
Bonsoir.

sans vérifier la bonne marche de la procédure et seulement les conditions,
essaie de faire ceci:

Dim strFiltre As String

On Error Resume Next ' à vérifier
strFiltre = ""
If Not IsNull(Me.cmbDiv) Then
strFiltre = "([DIV]='" & Me.cmbDiv & "')"
End If

If Not IsNull(Me.cmbregime) Then
If strFiltre = "" Then
strFiltre = "[ELEREGIME]=" & Me.cmbregime & ")"
Else
strFiltre = strFiltre & " AND " & "([ELEREGIME]=" & Me.cmbregime &
")"
End If
End If

Me.Caption = strFiltre

With Me.sfmrésultats.Form
If strFiltre = "" Then
.Filter = ""
.FilterOn = False
Else
.Filter = strFiltre
.FilterOn = True
End If
End With

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"pean.eric" a écrit dans le message de
news:bqav1q$i01$
Bonsoir,
je n'arrive pas à trouver ce qui cloche, je cherche à créer un filtre sur
un

formulaire à partir du choix de deux critère dans des listes déroulantes
cmbDiv (texte) et cmbELEREGIME (numérique). ça fonctionne bien sauf s'il
n'y

a aucun critère de sélectionné dans ma première boîte cmbDiv, je n'ai
alors

aucun traitement, comment faire dans mon deuxième If Not pour charger
uniquement la valeur du cmbELEREGIME? Merci, Eric
Private Sub btOK_Click()
Dim strFiltre As String

On Error Resume Next
strFiltre = ""
If Not IsNull(Me.cmbDiv) Then
strFiltre = "([DIV]='" & Me.cmbDiv & "')"
End If

If Not IsNull(Me.cmbregime) Then
If strFiltre <> "" Then strFiltre = strFiltre & " AND " &
"([ELEREGIME]=" & Me.cmbregime & ")"


End If

Me.Caption = strFiltre

With Me.sfmrésultats.Form
.Filter = strFiltre
.FilterOn = True
End With
End Sub




Avatar
3stone
Salut,

strFiltre = ""

If Not IsNull(Me.cmbDiv) Then
strFiltre = strFiltre & " AND [DIV]='" & Me.cmbDiv & "'"
End If

If Not IsNull(Me.cmbregime) Then
strFiltre = strFiltre & " AND [ELEREGIME]=" & Me.cmbregime
End if

'supprimer le premier ' And'
strFiltre = Mid(strFiltre,5)


Ce qui permet de garder toujours la même "construction"
quelque soit le nombre de critères...


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------