[Résolu] Traiter les homonymes dans formule de recherche

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
gaelec
NOOuvel adepte
NOOuvel adepte
Messages : 15
Inscription : 12 févr. 2014 17:55

[Résolu] Traiter les homonymes dans formule de recherche

Message par gaelec »

Bonjour (et merci au moderateur qui a rajouté les balise autour des formule)

(tableur en PJ, j'utilise Libre Office Version: 6.2.8.2 (x64))

Je dois determiner parmi une liste d'environ 120 references bibliographique qu'elle sont les 3 references les plus souvent citées.
J'ai donc une liste de references dans la colonne A. les references sont du type : "auteur1, auteur2, (année), titre, nom revue, page sxx à yy"
Les titres des revues sont en lignes.
J'ai rentré une formule trouvé sur ce forum :

Code : Tout sélectionner

=SI(ESTERREUR(CHERCHE(D$2;$B13));0;1)
Problème, il y a parfois des homonymes:
soit dans le titre de l'article 'ex the kid's education..."

ou bien dans le nom d'une autre revue:
Azevedo, R., Guthrie, J. T., & Seibert, D. (2004). The role (...) hypermedia. Journal of Educational Computing Research, 30(1 & 2), 87-111.
et "Education" est aussi une revue.

Comme les references obeissent à une nomenclature stricte,(le titre se fini par un point ou un point d'interrogation suivi d'un espace puis apparait le nom de la revue) j'ai ajouté :

Code : Tout sélectionner

=SI(ESTERREUR(CHERCHE(D$2;$B13));SI(ESTERREUR(CHERCHE(D$1;$B13));0;1) ;1)
Mais: cela ne fonctionne pas et cela ne regle pas le soucis du titre d'une revue contenue dans une autre.

Pourriez vous m'aider, sachant que je ne maitrise pas du tout le code et le vba...

Gaetan.
La modération vous a écrit: Formules mises entre balises pour faciliter la lecture

Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par micmac le 20 janv. 2020 07:32, modifié 3 fois.
Raison : Retitrage + ajout balise (coche présente)
*libre officce 7.0.6 (x64) sous Windows 10 (64)
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5748
Inscription : 02 janv. 2009 23:56

Re: F recherche: homonymes, carac. "cachés" comment les evi

Message par Jean-Louis Cadeillan »

Bonjour,
Je te propose une solution qui est sensible à la casse (pas comme CHERCHE). On aurait pu utiliser TROUVE, mais SUBSTITUE me semble plus facile à maintenir dans ton cas de figure. Ici en D5 de la feuille Solution du fichier joint) :

Code : Tout sélectionner

=SI(NBCAR(SUBSTITUE($B5;". "&D$3&",";"")&SUBSTITUE($B5;"? "&D$3&",";"")&SUBSTITUE($B5;"?  "&D$3&",";"")&SUBSTITUE($B5;": "&D$3&".";"")&SUBSTITUE($B5;". "&D$3&".";""))=5*NBCAR($B5);0;1)
L'idée de base est de remplacer, dans la référence, l'expression clé (la revue) par une chaîne vide. Si la revue s'y trouve, la longueur de la chaîne est modifiée, sinon, non. On ajoute les SUBSTITUE, pour tenir compte de l'encadrement possible de la revue :
  • point+ espace avant - virgule après
  • point d'interrogation + espace avant - virgule après
  • point d'interrogation + deux espace avant - virgule après
  • deux points+ espace avant - point après
  • point+ espace avant - point après
Si la référence ne contient pas ces cas de figure, elle n'est pas transformée, donc la concaténation de ces 5 cas de figure a toujours la même longueur = 5 fois la longueur de la référence initiale.
Si la référence contient au moins 1 de ces 5 cas de figure, la concaténation change de longueur et cette longueur est donc différente de cinq fois la longueur de la référence initiale.
Bon je n'ai trouvé que 5 cas d'encadrement, il y en a peut-être d'autres. À toi de vérifier. Si l'y en a un autre, tu ajoutes le SUBSTITUE() correspondant dans la formule et tu remplaces 5*NBCAR() par 6*NBCAR().
À tester. J'ai gardé la feuille initiale (Feuille2) pour que tu puisses comparer avec la feuille Solution.
Cordialement,
Jean-Louis
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 7.6.6.3 (x64 avec Java 1.8.0_401) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
gaelec
NOOuvel adepte
NOOuvel adepte
Messages : 15
Inscription : 12 févr. 2014 17:55

Re: F recherche: homonymes, carac. "cachés" comment les evi

Message par gaelec »

RE bonjour,

Merci beaucoup jean louis ca fonctionne très bien. :bravo: :bravo: :super: :bravo:
J'ai ajouter des paquets de "SUBSTITUTE" car effectivement il en fallait d'autres.

Pour le problème des mot "caché dans d'autre (ex education vs educational review) j'ai fait une solution "gros doigts" en modifiant la cassede la premiere lettre.
Les mots seul représentant une revue ont été appelé: "Education", l'autre "education review".
Il doit bien y avoir une solution plus propre mais ca ira pour ce que je dois faire.

Merci encore de cette réponse tres concise et les explication qui vont avec. J'ai du reflmechir un peu pour comprendre la logique, ca fait pas de mal!!
Bonne soirée a tous.
*libre officce 7.0.6 (x64) sous Windows 10 (64)