Bonjour,

Je travaille sur un sous formulaire pour lequel je souhaite mettre en place un système de filtrage dirigé par l'utilisateur.
Celui-ci dispose de plusieurs comboBox avec des valeurs venant d'une table, et je souhaite que lorsqu'une comboBox change de valeur, le filtre du sous-formulaire s'adapte à la valeur.

Mon algorithme de base est simple:
Si le filtre du sous formulaire n'est pas activé, je l'active et j'y met la valeur de ma comboBox. Si il est déjà activé, je dois vérifier qu'il n'y ait pas déjà une valeur pour le champ qui vient d'être modifié et si ce n'est pas le cas je rajoute une condition sur ce champ.

J'ai cependant quelques soucis pour détecter la présence et la valeur d'un champ de filtre. J'utilise une expression régulière, et je me suis servi du wikibooks pour voir comment l'utiliser. Je poste ci-après mon code actuel.
Le champ sur lequel porte le test est le champ "DR", qui va être de la forme " ([DR] = "<nomDeDR>") ".

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Dim regEx As RegExp
Set regEx = New RegExp
With regEx
    .Pattern = "[DR] = [^)]+"
    .Global = False
End With
 
Dim match As Variant
Set match = regEx.Execute(Me.sousForm.Form.Filter)
 
MsgBox match.Count
Je rencontre deux légers problèmes, et j'ai une question:
- match.Count me retourne systématiquement 0, et je n'arrive pas à savoir si le problème vient de mon expression ou de mes déclarations/utilisation de regEx. Pourtant, avec mon motif, je m'attendais à retrouver quelque chose du genre " [DR] = "<nomDeDR>" ", non?
- De plus, dans mon expression régulière je ne peux pas échapper de caractères, comme les guillemets. Si j'écris .Pattern = "[DR] = \"[^\"]+", le vba ne compile même pas. Même avec des doubles antislash.

Enfin, j'ai une question, je la pose afin d'être sûr que c'est lié: si j'essaye d'appeler match(0).Value (comme je le vois faire partout), j'obtiens une erreur d'exécution 5, argument ou appel de procédure incorrect. Le fait d'obtenir une erreur me semble normal étant donné que mon tableau est très probablement vide ou à null, mais est-ce bien normal d'obtenir cette erreur? J'ai cherché sur le net mais rien n'a pu me le confirmer.

Merci de m'avoir lu.

EDIT: Erreur grossière, j'ai oublié d'échapper les crochets qui entourent mon champ. Et pourtant voilà un moment que je suis sur ce problème. Mes excuses, sujet à supprimer.