Recherche par mots clés et ajout d'un code spécifique au mot clé trouvé

Bonjour à tous !

@hanane92 : d'abord, un conseil à retenir, cela ne se fait pas de squatter un sujet, surtout en cours de discussion, il convient de poser le sien pour obtenir des réponses spécifiques sans perturber une autre discussion. A intégrer pour tes prochaines interventions !

J'y fais une petite réponse tout de même, pour débrousailler un peu et parce qu'elle recoupe également la discussion en cours, bien que cette dernière semble désormais achevée avec la solution proposée par Eric (NB- je n'attache pas d'importance particulière aux appréciations, cependant constatant que CDavid en a usé pour apprécier positivement toute autre intervention que la mienne, j'avais arrêté par conséquent d'intervenir sur le sujet mais j'apprécierais de savoir ce qui la déprécie tant ?)

Pour en revenir à ta formule, une question préalable est à examiner d'abord : nous disposons de deux fonctions proches : CHERCHE et TROUVE, qu'est-ce qui les différencie ?

CHERCHE n'est pas sensible à la casse, et accepte les caractères jokers.

TROUVE est sensible à la casse, et n'accepte pas les caractères jokers.

Il convient donc de réserver TROUVE si l'on veut opérer une distinction entre Bon et bon par exemple. Le choix était relativement indifférent dans la configuration de CDavid (quoi que ? ), mais en ce qui te concerne il semble clair de provilégier CHERCHE !

Le conseil standard serait d'utiliser CHERCHE par défaut et réserver TROUVE lorque l'on a des raisons de le faire.

Ensuite, ta formule définit une première matrice : ESTNUM(CHERCHE(cod_sentiment!$A$2:A$123;A2)) qui va donc renvoyer VRAI ou FAUX selon que l'expression est trouvée ou non (note que tu peux avoir des doublons avec ta liste d'expressions..., mais autre problème à voir ultérieurement). Mais si tu multiplies cette matrice par : cod_sentiment!B$2:B$123, matrice de valeurs textuelles (positif ou négatif), SOMMEPROD ne renverra aucun résultat de cette multiplication !

Tu peux par exemple mettre : (cod_sentiment!B$2:B$123="positif"), qui renverra des VRAI ou FAUX selon que figure positif ou non. Et la multiplication des deux matrices donnera des 1 pour VRAI*VRAI et des 0 dans tous les autres cas...

Tu peux aussi tester la balance des positif et négatif : ((cod_sentiment!B$2:B$123="positif")-(cod_sentiment!B$2:B$123="négatif")). Là tu soustrais la valeur si négatif, cette expression va renvoyer pour chaque élément (puisqu'ils sont alternatifs) : 1 si positif et -1 si négatif, valeur qui pourra être multipliée par 1 ou 0 renvoyé par la première matrice.

La formule donnerait donc :

=SOMMEPROD(ESTNUM(CHERCHE(cod_sentiment!$A$2:A$123;A2))*((cod_sentiment!B$2:B$123="positif")-(cod_sentiment!B$2:B$123="négatif")))

dont la validité du résultat demeure cependant fortement dépendante de la qualité de ta liste...

Une formule analogue est faisable pour les activités mais sera nettement plus longue...

Quelques remarques sur tes macros, plutôt bien écrites au demeurant, qui sont utilisables (après quelques rectifications à opérer), même si on se met un peu hors sujet par rapport au sujet initial !

Les comparaisons en VBA sont par défaut sensibles à la casse, contrairement à Excel. Tu aurais donc naturellement intérêt à définir le paramètre compare de ton dictionnaire pour qu'il ne la différencie pas :

w.CompareMode = vbTextCompare

NB- En passant, tu peux te passer du mot-clé Public pour une procédure, en VBA elles sont publiques par défaut, donc si pas Private, c'est public... A l'inverse les variables (niveau module) sont privées par défaut, donc pour elles Dim et Private sont équivalents et pour les rendre publiques, Public est requis.

Ensuite, ceci :

s(w(k)) = s(w(k)) + 1

pourrait poser problème, un dico, c'est du texte ! Et :

s(w(k)) = CInt(s(w(k))) + 1

serait certainement préférable.

Enfin, pour définir m, je trouverais préférable d'intercaler vbLf ou Chr(10) [saut de ligne] plutôt que vbCrLf qui renvoie Chr(13) suivi de Chr(10)...

Et mettre les cellules dans lesquelles tu utiliseras ces fonctions en passage à la ligne automatique pour que l'effet se manifeste.

Cordialement.

Pour poursuivre la discussion, je conseille d'ouvrir ton propre sujet.

Bonsoir MFERRAND,

Pour tout te dire ta formule est loin d'être déprécié car premièrement elle m'a appris à utiliser la fonction "SOMMEPROD" que j'avais déjà aperçu dans excel sans avoir une idée de son utilité

En deuxième lieu cela m'a permis de pouvoir mieux comprendre et surtout mieux exprimer la problématique.

Enfin j'ai autant apprécié ton intervention que les autres interventions car je l'ai signifié dans un post précédant.

Mais moi j'ai une question à poser à tous, MFERRAND y compris bien sûr ... Comment vous vous êtes pris pour avoir un niveau aussi élevé en Excel? Parce que moi je croyais avoir un bon niveau en excel mais là je me rend compte que je ne connais absolument rien

Si vous avez des conseils pour que j'évolue rapidement svp n'hésitez pas à m'en faire part pour que je puisse aussi un jour (pas cette année vu mon niveau j'imagine ) aider les autres comme vous. C'est vraiment génial ce que vous faites franchement

En attendant vos retours, je te dis encore merci MFERRAND

Bonjour,

si j'avais dis la même chose en 2014 :

(pas cette année vu mon niveau j'imagine )

je pense que mon niveau ne se serait pas amélioré... Je ne dis pas que je suis bon, mais je suis un peu meilleur qu'il y a 4 ans... Comment ai-je fais ? En répondant aux sollicitations des "demandeurs", car seuls eux ont des problèmes pour nous faire travailler les méninges !!!

Sinon pour le Maréchal, je répondrais à sa place s'il me le permet, en disant :

C'est en forgeant qu'on devient forgeron... Tout comme Léonard, qui en sciant de Vinci...

@ bientôt

LouReed

Merci LouReed !

Cdavid, ce jour étant le plus mauvais de la semaine (en principe, et pour moi seulement , et spécifiquement cette semaine ) je reviendrai donc un peu plus tard...

Mais bonne journée à tous.

Bonjour à tous,

LouReed: ok c'est noté, merci pour tes conseils (Tout comme Léonard, qui en sciant de Vinci

MFerrand : Pas de soucis, bonne journée à toi aussi et à la prochaine.

Bonjour,

J'espère être un peu mieux éveillé ce matin, quoique c'est avant de passer sous la douche...

Evacuons d'abord une fausse querelle : comme je l'ai dit, je n'attache pas d'importance particulière au système d'appréciations, nombreux sont ceux qui n'ont pas encore vu sa présence et les utilisations en sont si diverses que la signification en demeure assez peu formalisée. C'est donc à considérer comme un signe d'attention parmi d'autres, l'attention pouvant se manifester de cette façon, parmi d'autres, les aspects importants ou intéressants demeurant dans le contenu de la discussion.

Cependant, il est logique que constatant l'utilisation de ce dispositif au cours d'une discussion impliquant plusieurs protagonistes, lorsqu'une distribution quasi-générale d'appréciations intervient, faisant l'impasse en ce qui me concerne, que je soie amené à me poser la question de la raison de ce phénomène. Si c'est fortuit, ça le restera, s'il y a une raison, je tiens à la connaître, sans autre acrimonie, car cela pourrait être un élément de la discussion. La chose étant évacuée, il est clair que la formule de Tulipe apportait un plus, s'agissant de solutions par formules.

Cela n'épuisait pas la discussion sur deux points : le choix des mots clés d'une part, et à cet égard il ne me semblait pas que cela doive te poser des difficultés particulières, sachant qu'un doublon apparaît lorsqu'un mot-clé est inclus dans un autre, le nombre de mots-clés devant demeurer logiquement limité, cette gestion n'a rien d'insurmontable ; d'autre part, pouvait éventuellement se poser la question de procéder par formules, ou bien les éviter par une procédure opérant la codification recherchée...

En ce qui concerne, l'acquisition d'une plus grande technicité dans Excel... il faut laisser faire son oeuvre au temps, en mettant les atouts de son côté... comme l'a dit LouReed :

si j'avais dis la même chose en 2014

ce que j'illustrerais a-contrario en disant qu'après 25 ans de VBA je pourrais être un peu plus avancé que je ne le suis et que j'ai plutôt progressé en dillettante !

Il est vrai que sans Forum lors des premières années, les échanges demeuraient réduit et les incitations insuffisantes...

Un Forum est bien dans ce cadre un élément moteur de progrès, en conduisant à aborder des problèmes auxquels on n'avait même pas pensé jusqu'alors... Et à chaque fois que l'on reprend un problème de même type, on peut toujours tenter de faire mieux que la fois précédente, ça finit par fonctionner et on accumule des connaissances et une technicité plus rapidement qu'on pouvait le penser au départ...

Je vais vaquer... Cordialement et bonne journée.

Bonjour MFERRAND,

Ok c'est noté merci pour tes conseils et bonne journée à toi aussi.

A la prochaine.

Rechercher des sujets similaires à "recherche mots cles ajout code specifique mot cle trouve"