Cellules qui contiennent le mot PF et non PFM ou PFMRE ect

Résolu
Marie Chant Messages postés 147 Statut Membre -  
danielc0 Messages postés 2048 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour tout le monde,

Je n'arrive pas en Excel à savoir quelles cellules contiennent seulement le mot PF parmi d'autres mots dans la cellule.

J'ai essayé =NB.SI($B$3:$B$429;"PF*") et =NB.SI($B$3:$B$429;"*PF*") mais cela me donne ceux qui commence par PF ou ceux qui renferme PF.

J'ai besoin de savoir seulement ceux qui ont PF dans le texte, pas PFM, ou PFMRE ou PFI ou PFMR juste ceux qui renferme le mot PF.

La réponse devrait me donner juste (2) VRAI si je veux juste les PF

Voici mon exemple:

Dans ma colonne B j'ai des cellules qui contiennent ceci

en B1: PAP (AE; PFI; PF; PFM; PFMRE)

en B2: AC (FC; AI; PF)

en B3 : PF (AE; AIO; FRC; PFM; PFMR)

en B4 : AM (AC; AIC; PFRM; PFIN)

Merci mille fois pour votre aide.



Windows / Edge 131.0.0.0


A voir également:

4 réponses

Résumé de la discussion

Le problème est d’identifier, dans une plage, les cellules où le mot PF apparaît comme un token distinct dans le texte (par exemple PF dans « PAP (AE; PFI; PF; PFM; PFMRE) », ou dans « AC (FC; AI; PF) »), sans prendre PF comme partie d’autres mots.
Une solution robuste consiste à FRACTIONNER.TEXTE pour découper chaque cellule en tokens séparés par les séparateurs courants et à vérifier si l’un d’eux est PF; sur Excel 365, cela peut donner: =SI(SOMME(N(FRACTIONNER.TEXTE(B1;{".";",";"(";")";" "})="PF"))>0;"trouvé";"pas trouvé").
Pour obtenir un décompte sur plusieurs cellules, on peut additionner les résultats par une colonne intermédiaire (1/0 par cellule) ou bien employer REDUCE avec LAMBDA pour agréger directement sur B1:B4.
Dans l’exemple fourni, B1, B2 et B3 contiennent PF comme mot distinct, B4 ne l’inclut pas, soit un total de 3.

Généré automatiquement par IA
sur la base des meilleures réponses
NonoM45 Messages postés 1051 Date d'inscription   Statut Membre Dernière intervention   3
 

Bonjour MC

Une possibilité, mais à voir

=NB.SI($B$1:$B$249;"* PF;*")+NB.SI($B$1:$B$249;"* PF)")+NB.SI($B$1:$B$249;"PF (*")

A+

1
Marie Chant Messages postés 147 Statut Membre 9
 

Merci, NonoM45. j'ai essayé mais ca ne fonctionne pas car ca inclus tout ceux qui ont le PF (PF,PFM,PFMRM, etc)

J'ai recu ceci de Daniel et cela fonctionne. j'ai ajouté un colonne après la colonne B et j'ai inscrit la formule de Daniel.

=SI(SOMME(N(FRACTIONNER.TEXTE(B1;{".";";";"(";")";" "})="MISR"))>0;"trouvé";"pas trouvé")

C'est une autre façon pour avoir mon résultat et cela fonctionne.

Merci beaucoup à vous ! c'est apprécié

MC

1
Marie Chant Messages postés 147 Statut Membre 9
 

Bonjour Daniel,

SUPER cela fonctionne très bien. Je te remercie tellement pour ton aide.

Je te souhaite de très Joyeuses Fêtes1 tu viens de faire ma journée même si ici c'est du verglas!☺

0
danielc0 Messages postés 2048 Date d'inscription   Statut Membre Dernière intervention   248 > Marie Chant Messages postés 147 Statut Membre
 

Bonnes fêtes également !

Daniel

0
danielc0 Messages postés 2048 Date d'inscription   Statut Membre Dernière intervention   248
 

Bonjour à tous,

Une solution avec Excel 365 :

=SI(SOMME(N(FRACTIONNER.TEXTE(B1;{".";",";";";"(";")";" "})="PF"))>0;"trouvé";"pas trouvé")

Daniel


1
Marie Chant Messages postés 147 Statut Membre 9
 

Bonjour Daniel,

Merci beaucoup. Cela fonctionne très bien. J'ai ajouté une colonne après la B et inscrit la formule. Cela me donne le résultat dont j'ai besoin.

Est-ce possible d' être dans une cellule vierge et demander combien j'ai de cellule dans la B qui me donne seulement PF? si je fais de B1 à B4 cela le résultat serait 3

Est ce faisable?

Merci de ton aide Daniel

1
danielc0 Messages postés 2048 Date d'inscription   Statut Membre Dernière intervention   248 > Marie Chant Messages postés 147 Statut Membre
 

Il faut ajouter une colonne intermédiaire de calcul avec la formule :

=SOMME(N(FRACTIONNER.TEXTE(B1;{".";",";";";"(";")";" "})="PF"))

Je regarde s'il est possible de faire le calcul directement.

Daniel

1
danielc0 Messages postés 2048 Date d'inscription   Statut Membre Dernière intervention   248 > Marie Chant Messages postés 147 Statut Membre
 

Sans colonne intermédiaire :

=REDUCE(0;B1:B4;LAMBDA(x;y;x+SOMME(N(FRACTIONNER.TEXTE(y;{".";",";";";"(";")";" "})="PF"))))

Daniel

1
Marie Chant Messages postés 147 Statut Membre 9 > danielc0 Messages postés 2048 Date d'inscription   Statut Membre Dernière intervention  
 

Bonjour Daniel,

Merci pour ta réponse. J'aime bien la réponse sans colonne intermédiaire mais le problème est que si le mot PF se trouve deux fois dans la cellule il en compte 2. Je voudrais qu'il m'en compte seulement 1 par cellule exemple:

en B1: PAP (AE; PFI; PF; PFM; PFMRE) ici c'est 1 fois

en B2: AC (FC; AI; PF) ici c'est une fois

en B3 : PF (AE; AIO; FRC; PF; PFM; PFMR) ici c'est 1 fois même s'il est écrit deux fois.

en B4 : AM (AC; AIC; PFRM; PFIN) ici c'est 0. Alors résultat serais 3

Merci beaucoup!

1
danielc0 Messages postés 2048 Date d'inscription   Statut Membre Dernière intervention   248 > Marie Chant Messages postés 147 Statut Membre
 

Essaie :

=REDUCE(0;B1:B4;LAMBDA(x;y;x+SI(SOMME(N(FRACTIONNER.TEXTE(y;{".";",";";";"(";")";" "})="PF"))>0;1;0)))

Daniel

1
danielc0 Messages postés 2048 Date d'inscription   Statut Membre Dernière intervention   248
 

Bonjour DjiDjji59430,

En l’occurrence, REDUCE fait le job sans colonne intermédiaire. Il faut par contre se passer de NB.SI.

https://www.cjoint.com/c/NLmolSBJ0h4

Daniel


1
DjiDji59430 Messages postés 4343 Date d'inscription   Statut Membre Dernière intervention   705
 

Oui,,mais ça compte 2 PF de B3 alors que le premier, d'apres MC ne devrait pas etre compté. dans son exemple c'est

PF (AE; AIO; FRC; PF; PFM; PFMR)

et pas

PF (AE; AIO; FRC; PFM; PFMR) comme tu as fait

D'ou ma remarque


Crdlmt

0
danielc0 Messages postés 2048 Date d'inscription   Statut Membre Dernière intervention   248 > DjiDji59430 Messages postés 4343 Date d'inscription   Statut Membre Dernière intervention  
 

Je ne crois pas :

Ou j'ai mal compris ?

Daniel

0
bigoudiii Messages postés 276 Date d'inscription   Statut Membre Dernière intervention   91
 

Hello à tous,

Sûrement un peu tard, mais un essai qui semble donner le résultat souhaité, avec NB.SI et un critère matrice (sous réserve de ne pas avoir d'autres séparateurs).

à commenter :

=SOMME(N(MAP(B1:B4;LAMBDA(p;MAX(NB.SI(p;"*PF"&{";".")"." "}&"*"))>0))))
0
danielc0 Messages postés 2048 Date d'inscription   Statut Membre Dernière intervention   248
 

Bonjour bigoudiii,

Il me semble que ça ne fonctionne pas s'il y a un plusieurs caractères avant PF :

Daniel

0
bigoudiii Messages postés 276 Date d'inscription   Statut Membre Dernière intervention   91 > danielc0 Messages postés 2048 Date d'inscription   Statut Membre Dernière intervention  
 

 Re,

Exact, il y avait aussi d'autres lacunes. C'était surtout pour utiliser NB.SI :

=SOMME(N(MAP(B1:B10;LAMBDA(p;MAX(NB.SI(p;{"PF "."*(PF;"."* PF; "."* PF)"}&"*"))>0))))

Cela peut être suffisant selon les données, ...

0
danielc0 Messages postés 2048 Date d'inscription   Statut Membre Dernière intervention   248 > bigoudiii Messages postés 276 Date d'inscription   Statut Membre Dernière intervention  
 

Bonjour à tous,

NB.SI fonctionne avec ta formule parce qu'il s'applique à une cellule à la fois. Le problème survient quand on entre une matrice de cellules exemple :

=nb.si(ASSEMB.V(A1;A2);"x")

dont la syntaxe n'est pas acceptée :

Daniel

0
bigoudiii Messages postés 276 Date d'inscription   Statut Membre Dernière intervention   91 > danielc0 Messages postés 2048 Date d'inscription   Statut Membre Dernière intervention  
 

Hello,

Non, il y a méprise, on ne parle pas de la même chose.

Le premier paramètre (Plage) de portée, n'accepte effectivement qu'une plage de cellule et pas une matrice.

Le second paramètre (critère) d'entrée accepte tout à fait une matrice.

0
danielc0 Messages postés 2048 Date d'inscription   Statut Membre Dernière intervention   248 > bigoudiii Messages postés 276 Date d'inscription   Statut Membre Dernière intervention  
 

On va finir par être d'accord, alors ;-)

Daniel

0