[RESOLU]Contrôler qu'une cellule contient exactement 5 des 6 lettres de la précédente

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Victor21

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous.

En lien avec ce fil, je planche sur une solution par formule , à recopier vers le bas, pour vérifier que le mot de 6 lettres entré en A4 comporte exactement 5 des lettres qui composent le mot de 6 lettres entré en A3.

Plusieurs essais tous infructueux dans le fichier joint. Je subodore une matricielle, mais ce n'est pas mon fort.

En attendant le plaisir de décortiquer le résultat de vos cogitations, je vous souhaite la bonne nuit 🙂
 

Pièces jointes

Dernière édition:
Re : Contrôler qu'une cellule contient exactement 5 des 6 lettres de la précédente

Salut Victor,
A5="ACEDGF"
A6="ACEGGF"
"A" existe en A5 donc la formule va generer ==> 0
"C" existe en A5 donc la formule va generer ==> 0
"E" existe en A5 donc la formule va generer ==> 0
"G" existe en A5 donc la formule va generer ==> 0
"G" existe en A5 donc la formule va generer ==> 0

"F" existe en A5 donc la formule va generer ==> 0
donc l'origine de probleme vient de doublon du fait que la formule ne gere pas le cas de doublon.
alors c'est pas la bonne forumle
@ + +
Rachid
 
Re : Contrôler qu'une cellule contient exactement 5 des 6 lettres de la précédente

Bonjour Victor, Rachid,

En attendant mieux, un essai ci-joint en 6 colonnes. Les mots en colonne A, 1er mot en A1.

B2
Code:
=SI(ESTERR(CHERCHE(STXT(A1;1;1);A2));A2;SUBSTITUE(A2;STXT(A1;1;1);"";1))

C2 et copier jusque F2
Code:
=SI(ESTERR(CHERCHE(STXT($A1;COLONNE(B2);1);B2));B2;SUBSTITUE(B2;STXT($A1;COLONNE(B2);1);"";1))

G2
Code:
=SI(NBCAR(SI(ESTERR(CHERCHE(STXT(A1;6;1);F2));F2;SUBSTITUE(F2;STXT(A1;6;1);"";1)))=1;"OK";"NOK")

Cordialement

KD
 

Pièces jointes

Re : Contrôler qu'une cellule contient exactement 5 des 6 lettres de la précédente

Bonjour à tous

Une possibilité en pièce jointe avec plusieurs SUBSTITUE imbriqués.
Code:
SI(NBCAR(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(Feuil1!$A3;STXT(Feuil1!$A4;1;1);"";1);STXT(Feuil1!$A4;2;1);"";1);STXT(Feuil1!$A4;3;1);"";1);STXT(Feuil1!$A4;4;1);"";1);STXT(Feuil1!$A4;5;1);"";1);STXT(Feuil1!$A4;6;1);"";1))=1;"OK";"NOK")

J'ai dû passer par un nom comprenant tous les SUBSTITUE pour qu'excel 2003 accepte la formule.

Une formule matricielle aurait l'avantage de pouvoir traiter plus facilement des mots comportant un nombre quelconque de caractères. Par contre, pour le moment, je n'y suis pas arrivé à cause des "doublons" du style GG.

@ plus

PS : En fait, c'est la méthode proposée par Kendev, tout étant mis dans une seule formule.

P.S 2 : Modification de la formule et du fichier joint avec ;"";1) au lieu de "") dans chaque SUBSTITUE
 

Pièces jointes

Dernière édition:
Re : Contrôler qu'une cellule contient exactement 5 des 6 lettres de la précédente

Bonjour, KenDev.

Merci d'avoir planché sur ce sujet.
Les tests que j'ai effectués semblent correspondre au résultat attendu; même en remplaçant colonne(x) par les valeurs 1 à 6 pour simplifier. J'ai tenté de concentrer les 6 formules en une seule sans résultat. Mais heureusement, il n'y a aucun caractère d'urgence 🙂
 
Re : Contrôler qu'une cellule contient exactement 5 des 6 lettres de la précédente

Bonjour, CISCO.

Merci pour ta solution.
Il semblerait que chercher le nb de caractères absents de l'entrée précédente soit effectivement la bonne approche.
Et comme l'a bien vu Rachid, j'étais également embêté avec les lettres utilisées plusieurs fois.
 
Re : Contrôler qu'une cellule contient exactement 5 des 6 lettres de la précédente

Re, CISCO 🙂

ACEFGH en A7 avec ACEGGF en A6 doit renvoyer OK. Seul le nombre de lettres communes (Un G a été remplacé par un H, donc 5 lettres d'origine conservées) compte, et peu importe leur emplacement.
 
Re : Contrôler qu'une cellule contient exactement 5 des 6 lettres de la précédente

Bonjour

Ma précédente formule ne donnant pas le bon résultat, j'ai modifié chaque SUBSTITUE(.....;"") en SUBSTITUE(.....;"";1). Maintenant, c'est OK.

@ plus
 
Dernière édition:
Re : Contrôler qu'une cellule contient exactement 5 des 6 lettres de la précédente

Bonjour,

=SOMMEPROD(NBCAR(B2)-NBCAR(SUBSTITUE(B2;STXT(A2;LIGNE($1:$255);1);"")))

JB
 

Pièces jointes

Dernière édition:
Re : Contrôler qu'une cellule contient exactement 5 des 6 lettres de la précédente

Bonjour, Jacques.

Merci, mais sauf erreur de ma part, le cas des lettres doublées renvoie une valeur erronnée :
FOLIOS comparé à POLIOS renvoie 7 lettres communes.
 
Re : Contrôler qu'une cellule contient exactement 5 des 6 lettres de la précédente

Indique s'il y a doublon

=SOMMEPROD(NBCAR(A2)-NBCAR(SUBSTITUE(A2;STXT(A2;LIGNE($1:$255);1);"")))<>NBCAR(A2)

Combiner avec formule précédente

=SI(ET(SOMMEPROD(NBCAR(A4)-NBCAR(SUBSTITUE(A4;STXT(A3;LIGNE($1:$255);1);"")))=5;SOMMEPROD(NBCAR(A4)-NBCAR(SUBSTITUE(A4;STXT(A4;LIGNE($1:$255);1);"")))=NBCAR(A4));"ok";"ko")

JB
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour