XL 2021 Recherche mot ou expression dans une cellule pour en déduire une imputation

Jouxte

XLDnaute Occasionnel
Bonsoir à toutes et tous,

J'utilise une formule en colonne E (ici réduite pour le fichier test) pour dispatcher les lignes de comptes en fonction de mots clés.

VB:
=SI($C2="";"";
SI(OU(ESTNUM(CHERCHE("FINANCES";$C2));ESTNUM(CHERCHE("TAXES";$C2));ESTNUM(CHERCHE("SIP";$C2));ESTNUM(CHERCHE("SERVANT";$C2));ESTNUM(CHERCHE("RECETTE*";$C2));ESTNUM(CHERCHE("CSG";$C2))=VRAI);"Impôts";
SI(OU(ESTNUM(CHERCHE("DON";$C2));ESTNUM(CHERCHE("ASSOCIATION";$C2));ESTNUM(CHERCHE("CROIX";$C2))=VRAI);"Don";
SI(ESTNUM(CHERCHE("Carte";$C2))=VRAI;"Divers";"Autre"))))

Comme il y a beaucoup de types d'imputation, je cherche à réduire la formule. y aurait-il possibilité de mettre "en facteur" les mots à rechercher dans la colonne C.
Par exemple quelquechose du genre
SI(OU(ESTNUM(CHERCHE("FINANCES""TAXES""SIP""SERVANT""RECETTE""CSG";$C2)))=VRAI);"Impôts";

Par avance merci pour votre aide et vos conseils. Bonne soirée.
 

Pièces jointes

  • Compte test.xlsm
    10.1 KB · Affichages: 12

Gégé-45550

XLDnaute Accro
Bonsoir à toutes et tous,

J'utilise une formule en colonne E (ici réduite pour le fichier test) pour dispatcher les lignes de comptes en fonction de mots clés.

VB:
=SI($C2="";"";
SI(OU(ESTNUM(CHERCHE("FINANCES";$C2));ESTNUM(CHERCHE("TAXES";$C2));ESTNUM(CHERCHE("SIP";$C2));ESTNUM(CHERCHE("SERVANT";$C2));ESTNUM(CHERCHE("RECETTE*";$C2));ESTNUM(CHERCHE("CSG";$C2))=VRAI);"Impôts";
SI(OU(ESTNUM(CHERCHE("DON";$C2));ESTNUM(CHERCHE("ASSOCIATION";$C2));ESTNUM(CHERCHE("CROIX";$C2))=VRAI);"Don";
SI(ESTNUM(CHERCHE("Carte";$C2))=VRAI;"Divers";"Autre"))))

Comme il y a beaucoup de types d'imputation, je cherche à réduire la formule. y aurait-il possibilité de mettre "en facteur" les mots à rechercher dans la colonne C.
Par exemple quelquechose du genre
SI(OU(ESTNUM(CHERCHE("FINANCES""TAXES""SIP""SERVANT""RECETTE""CSG";$C2)))=VRAI);"Impôts";

Par avance merci pour votre aide et vos conseils. Bonne soirée.
Bonsoir,
Une possibilité en PJ.
On remplit le Tableau1 en colonne F avec la liste des mots à trouver et on teste en colonne D.
Cordialement,
 

Pièces jointes

  • Classeur.xlsx
    17.4 KB · Affichages: 12

Phil69970

XLDnaute Barbatruc
Bonjour à tous

@Jouxte je te propose cette formule en E2 à tirer vers le bas

=SI(SOMMEPROD(N(ESTNUM(TROUVE({"FINANCES";"TAXES";"SIP";"SERVANT";"RECETTE";"CSG";"Impôts"};C2))))>0;"Impôts";SI(SOMMEPROD(N(ESTNUM(TROUVE({"DON";"ASSOCIATION";"CROIX"};C2))))>0;"Don";SI(SOMMEPROD(N(ESTNUM(TROUVE({"Carte"};C2))))>0;"Divers";"Autre")))

Merci de ton retour
 

Pièces jointes

  • Compte test.xlsm
    9.7 KB · Affichages: 3

Jouxte

XLDnaute Occasionnel
Bonjour Phil69970,

Merci pour cette autre solution, plus simple et surtout plus visuelle que celle que j'utilise à l'heure actuelle.
Je vais la tester sur mon gros tableau, mais je ne doute pas qu'elle fonctionne.

 

Jouxte

XLDnaute Occasionnel
Bonjour,
je fais derechef (le mot est beau) appel à vous .
Je souhaiterais maintenant en colonne F mettre une formule telle que si un mot de la colonne M se trouve dans la colonne C alors le résultat en F est celui de la colonne N. Pensez-vous que ce là soit possible ?

Par avance merci.
 

Pièces jointes

  • Compte test.xlsm
    12 KB · Affichages: 4

Gégé-45550

XLDnaute Accro
Bonjour,
je fais derechef (le mot est beau) appel à vous .
Je souhaiterais maintenant en colonne F mettre une formule telle que si un mot de la colonne M se trouve dans la colonne C alors le résultat en F est celui de la colonne N. Pensez-vous que ce là soit possible ?

Par avance merci.
Bonsoir,
Voir colonne G en PJ.
Cordialement,
 

Pièces jointes

  • Compte test.xlsm
    16.8 KB · Affichages: 3

Jouxte

XLDnaute Occasionnel
Bonjour Gégé-45550,
Merci pour cette solution. Elle ne pourra malheureusement pas convenir car le fichier est important et j'aurais beaucoup trop d'imbrications (plus de 64) pour arriver à mes fins.
Peut-être faudrait-il passer par une solution VBA ?
 

Gégé-45550

XLDnaute Accro
Bonjour Gégé-45550,
Merci pour cette solution. Elle ne pourra malheureusement pas convenir car le fichier est important et j'aurais beaucoup trop d'imbrications (plus de 64) pour arriver à mes fins.
Peut-être faudrait-il passer par une solution VBA ?
Bonsoir,
C'est toujours mieux de tout dire du premier coup, ça évite à tout le monde des pertes de temps inutiles.
C'est parfaitement possible en VBA.
Cordialement,
 

Phil69970

XLDnaute Barbatruc
Bonsoir à tous les 2

C'est toujours mieux de tout dire du premier coup, ça évite à tout le monde des pertes de temps inutiles.

Perso, je plussoie @Gégé-45550 feuilletonner une demande ne me donne pas envie car pas définition quand il y a feuilletonnage il y a toujours une bricole en plus puis encore une autre et une autre .... :oops: et souvent il faut tout refaire. o_O
 

Jouxte

XLDnaute Occasionnel
Bonjour à tous les deux,

Je comprend bien ce que vous dites.
Comme évoqué dans mon post initial, le fichier test n'est qu'une petite partie de l'iceberg.
C'est la solution proposée par Gégé-45500 qui propose dans le post #2 l'utilisation de listes qui m'a donné l'idée de tester cette solution de liste pour trouver une formule qui pourrait réaliser en une seule fois ce que je fais en plusieurs étapes.
Merci encore d'avoir pris le temps de répondre à ma demande.
Bonne journée.
 

Cousinhub

XLDnaute Barbatruc
Inactif
Bonjour,
Une solution par le biais de Power Query (en natif dans ta version d'Excel)
Ici, je reporte ton tableau dans un nouvel onglet, mais si, comme on pourrait le supposer, cette demande de "Précision" servira à établir un bilan, on pourrait directement charger dans un Tableau Croisé Dynamique (TCD)
Si ça convient
 

Pièces jointes

  • PQ_Precision.xlsm
    23.5 KB · Affichages: 3

Jouxte

XLDnaute Occasionnel
Bonjour Cousinhub,

Merci pour avoir pris le temps de regarder ce sujet.
Je ne connais pas Power Query. peut-être une bonne occasion pour comprendre :)
En tout cas ce que tu me proposes fonctionne parfaitement.
Si j'ai bien compris :
  • T_crit est le tableau des critères et il peut être déplacé dans mon fichier tant qu'il porte le même nom
  • Les formules de Power Query reprennent pour les colonnes ABCDE les valeurs de la feuille Compte
  • la formule pour la colonne F (Précision) va chercher le mot de la 1ère colonne de T_Crit dans la colonne C et colle dans la colonne F le mot correspondant de la 2ème colonne de T_Crit.
Pourquoi la recherche du mot ORANGE ne fonctionne-t-elle pas (on doit mettre SA-ORANGE) ?

Si je souhaite ajouter une colonne précision 2 (en G) et la reprendre à l'identique de la feuille compte comment puis-je faire ?
Par avance merci pour tes réponses.
 

Cousinhub

XLDnaute Barbatruc
Inactif
Re-,
Welcome in the PQ's world... ;)
Pour tes questionnements :
- T_Crit, tu le mets où cela t'arrange
- Effectivement, comme je l'ai dit, je reporte le tableau entier, avec juste l'ajout de la "Précision"
- Dans la requête PQ, on calcule selon cette formule :

PowerQuery:
Precision = Table.AddColumn(Source, "Précision", each Text.Combine(List.Transform(Text.Split([Libellé]," "), each try T_Crit{[MOT = _ ]}[Précision] otherwise null)," "))

Soit :
- On ajoute une colonne, nommée "Précision"
- Pour effectuer le calcul, on met en "mémoire" la liste des mots de la colonne "Libellé" selon un découpage "espace"
- Puis on recherche le MOT (de T_Crit), et si on trouve, on met la "Précision" de T_Crit dans la cellule, sinon, on ne met rien
- Donc, comme la recherche se fait sur les mots séparés par des espaces, dans mon exemple, il faut vraiment le mot entier (soit SA-ORANGE) - Mais tout s'adapte

Pour ta dernière, rien ne vaudrait un autre fichier exemple, avec le résultat attendu
Bonne soirée
 

Statistiques des forums

Discussions
315 093
Messages
2 116 139
Membres
112 669
dernier inscrit
Guigui2502