Filtre multi-critère sur champ monétaire
Résolu
picsoin
Messages postés
172
Statut
Membre
-
picsoin Messages postés 172 Statut Membre -
picsoin Messages postés 172 Statut Membre -
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...
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
-
Bonjour,
Sur une rubrique numérique tu ne peux pas utiliser LIKE ""*" qui est en alpha :f = Prix LIKE Me.Rprix
devrait suffire.-
-
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. -
-
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 -
-