[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.

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

Messagepar gaelec » 19 Jan 2020 09:36

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   AgrandirRéduire
=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   AgrandirRéduire
=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

Pièces jointes
biblio ocr tricot.ods
(89.65 Kio) Téléchargé 15 fois
Dernière édition par micmac le 20 Jan 2020 08:32, édité 3 fois.
Raison: Retitrage + ajout balise (coche présente)
*libre officce 6.3.5.2 (x64) sous Windows 10 (64)
gaelec
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 14
Inscrit le : 12 Fév 2014 18:55

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

Messagepar Jean-Louis Cadeillan » 19 Jan 2020 15:46

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   AgrandirRéduire
=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
Pièces jointes
gaelec_20200119_JLC01.ods
(232.22 Kio) Téléchargé 10 fois
LibO 6.3.6.2 (x64 avec Java 1.8.0_241) et AOO 4.1.7 (avec Java x32 1.8.0_261), Windows 7 Édition Intégrale 64 SP1, (Domicile)
LibO 5.4.1.2 (x86) sous Ubuntu LTS 16.04.1, noyau 4.4.0-93 et Xfce 4.12, Java (x86) 1.8.0_131 (Travail) [obligation de version]
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
 
Message(s) : 5030
Inscrit le : 03 Jan 2009 00:56

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

Messagepar gaelec » 19 Jan 2020 22:19

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 6.3.5.2 (x64) sous Windows 10 (64)
gaelec
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 14
Inscrit le : 12 Fév 2014 18:55


Retour vers Tableur

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 12 invité(s)