[Calc] RechercheV et expressions régulières

Bonjour,

LibO Version: 5.4.1.2 (tous OS)

sous Calc, j'ai réglé les options de calcul sur "Autoriser les expressions régulières dans les formules".

Ce choix a un effet de bord ennuyeux : lorsque RECHERCHEV() rencontre une chaîne comportant des parenthèses, elle renvoie #N/D quand bien même la valeur cherchée existe bel et bien. EQUIV() fait pareil, au demeurant.

Manifestement cette option est ancienne (sous v.4.3 elle existe déjà).

Exemple : une recherche sur les communes de France, telles que trouvées dans le COG (ici : https://www.insee.fr/fr/statistiques/fichier/2666684/comsimp2017-txt.zip)

Par exemple, les deux premières communes de la liste sont <grr> :
Abergement-Clémenciat (L')
Abergement-de-Varey (L')

Une RECHERCHEV() sur ces communes retourne #N/D

Pour résoudre, il "suffit" de basculer l'option sur l'un des deux autres choix (caractères génériques ou bien aucun caractère).

Mais quid lorsque l'on veut *aussi* profiter des expressions régulières dans les formules ? Y a-t-il une astuce ou un contournement que j'aurais loupés ?

Merci d'avance pour vos lumières.

Bien cordialement,

Bonjour

Il faudrait en savoir un peu plus sur la formule utilisée.

Peut-être mettre \( et \) dans l'expression recherchée.

Bonne soirée

Bonsoir Jean-Luc,

Il faudrait en savoir un peu plus sur la formule utilisée.

Peut-être mettre \( et \) dans l'expression recherchée.

Le RECHERCHEV() porte sur le résultat d'une saisie ou la sélection dans une liste déroulante (Données > Validité), donc pas possible d'insérer les échappements.

Ex :
A1 contient : Abergement-Clémenciat (L')

D1:D10 contiennent une liste de communes, celle du dessus est dedans.
La liste n'est pas triée (mais ça n'a pas d'importance ici).

A2 contient =RECHERCHEV(A1;D1:D10;1;0)
et renvoie #N/A si l'option "expressions régulières" est cochée. Sinon, elle renvoie la bonne valeur.
Les noms sans les parenthèses sont bien trouvés.

Bien cordialement,

Bonsoir,

Et en utilisant la fonction SUBSTITUE pour insérer les antislash à la volée ?
Quelque chose du genre

=RECHERCHEV(SUBSTITUE(SUBSTITUE(A1;"(";"\(";1);")";"\)";1);D1:D10;1;0)

En un sens ça ne fait que déplacer le problème, mais ça serait déjà une solution ...

Bon courage

Christian Fourcroy