Filtre multi-critère sur champ monétaire

Résolu/Fermé
picsoin Messages postés 158 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 24 juin 2023 - Modifié par noctambule28 le 25/09/2015 à 11:16
picsoin Messages postés 158 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 24 juin 2023 - 28 sept. 2015 à 19:30
Bonjour à tous,

Débutant en VBA j'ai développé une petite apli bien sympatique.
J'ai appliqué un modèle copié sur un site de filtre multi-critère dans un formulaire.
Un modèle que l'on voit un peu partout rédigé par un certain Caféine ...

Touts mes filtres dans le code ci-dessous fonctionne sauf un: un champ de type monétaire. J'ai un message "type de donnée incompatible".
Merci de votre aide pour résoudre mon ignorance...
Private Sub Rlibellé_AfterUpdate()
f = ""
'Déclaration du filtre sur Libellé
If Not IsNull(Me.RLibellé) And Me.RLibellé <> "" Then
f = "Libellé LIKE ""*" & Me.RLibellé & "*"""
End If
'Déclaration du filtre sur Tiers
If Not IsNull(Me.RTiers) And Me.RTiers <> "" Then
If f <> "" Then
f = f & " AND Tiers = """ & Me.RTiers & """"
Else
f = "Tiers LIKE ""*" & Me.RTiers & "*"""
End If
End If
<bold>'Déclaration du filtre sur Prix
If Not IsNull(Me.Rprix) And Me.Rprix <> "" Then
If f <> "" Then
f = f & " AND Prix= """ & Me.Rprix & """"
Else
f = "Prix LIKE ""*" & Me.Rprix & "*"""
End If
End If </bold>
'Déclaration du filtre sur Date d'opération
If Not IsNull(Me.Rdate1) And Me.Rdate1 <> "" And Not IsNull(Me.Rdate2) And Me.Rdate2 <> "" Then
If f <> "" Then
f = f & " AND clng([Date d'opération]) BETWEEN " & CLng(Me.Rdate1) & " AND " & CLng(Me.Rdate2) & ""
Else
f = "clng([Date d'opération]) BETWEEN " & CLng(Me.Rdate1) & " AND " & CLng(Me.Rdate2) & ""
End If
End If
'Fin des déclarations sur champs
Me.Filter = f
Me.FilterOn = True
End Sub


1 réponse

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 695
25 sept. 2015 à 18:58
Bonjour,

Sur une rubrique numérique tu ne peux pas utiliser LIKE ""*" qui est en alpha :
f = Prix LIKE  Me.Rprix
devrait suffire.
0
picsoin Messages postés 158 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 24 juin 2023 5
26 sept. 2015 à 13:31
Merci pour ton aide
Il y a du changement, j'ai le droit au message suivant:
"Entrer la valeur du paramètre "
Faux
Si je je mets
f = "Prix LIKE Me.Rprix"
(j'ai rajouté des ")
J'ai:
"Entrer la valeur du paramètre "
Prix
J'ai essayé aussi le remplacement de Like par =.
Pareil
.....
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 695
26 sept. 2015 à 18:51
Bonjour,

Si tu pouvais nous mettre ton classeur, sans éléments personnels, se serait plus facile de t'aider : cela évite de recréer le contexte du formulaire.
Pour communiquer ton classeur tu le télécharges sur https://www.cjoint.com/ (mode d'emploi) et tu mets ici le lien obtenu.
0
picsoin Messages postés 158 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 24 juin 2023 5
26 sept. 2015 à 22:55
Ok, mais beaucoup de données perso, des critères les utilisant ... Je vais en faire une copie et ne mettre que le formulaire et la table concernée. Je reviens dès que prèt.
Au fait, c'est pas sous Excel mais Access ...
0
picsoin Messages postés 158 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 24 juin 2023 5
28 sept. 2015 à 17:00
Du coup j'ai réfléchi, pourquoi faire une recherche sur un montant unique. Peu utilisé ... Par contre, faire un filtre de prix dans une plage me semble plus juste.
Alors j'ai testé en copiant strictement les lignes de code pour le filtrage du champ DateAchat et j'ai remplacé par le nom Rprix et Prix. J'ai changé la propriété de Rprix en monétaire.
Bingo! Ça fonctionne!!!!
Ce qui donne:
If Not IsNull(Me.Rprix1) And Me.Rprix1 <> "" And Not IsNull(Me.Rprix2) And Me.Rprix2 <> "" Then
If f <> "" Then
f = f & " AND clng([Prix]) BETWEEN " & CLng(Me.Rprix1) & " AND " & CLng(Me.Rprix2) & ""
Else
f = "clng([Prix]) BETWEEN " & CLng(Me.Rprix1) & " AND " & CLng(Me.Rprix2) & ""
End If
End If
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 695 > picsoin Messages postés 158 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 24 juin 2023
28 sept. 2015 à 18:37
Bonsoir,
Eh bien voilà, il ne faut avoir peur de soumettre son problème aux autres : si l'on n'a pas une aide évidente des autres, cela fait tout de même progresser la solution.
0