Reconnaître des chaînes de caractères variables avec une même forme de base
Résolu
Stamd
-
Stamd -
Stamd -
Bonjour,
Je cherche une formule (solution sans VBA si c'est faisable, sinon VBA qui s'exécute automatiquement) qui me permette de reconnaître une certaine suite de caractères et d'inscrire dans une cellule une donnée selon la structure reconnue. C'est-à-dire:
J'ai des titres de documents dans ma colonne B sous cette forme:
A-215-2019
B-025-2019
C-014-2019 (tous les titres ont la même structure:
B-026-2019 Une lettre pour le type de document, un numéro de doc et l'année)
D-002-2019
A-056-2019
Je voudrais que dans la colonne C, les cellules reconnaissent le pattern X-000-AAA et selon que c'est A/B/C/D affichent Urgent(A)/Important(B)/À faire(C)/À classer(D).
Mon problème c'est que je ne peux pas me contenter de faire reconnaître juste le segment "A-/B-/C-/D-", car j'ai aussi d'autres documents dans ma liste qui commencent ainsi, mais qui sont ensuite différents (par exemple "C-Inventory"). Il faudrait donc que la formule ne correspondent qu'aux documents avec la structure ci-dessus.
J'ai essayé avec des caractères génériques dans la formule SI, mais ça ne marche pas. J'ai aussi essayé de faire une liste de tous les documents A-001-2019, A-002-2019, A-003-2019... pour ensuite utiliser un SI avec des valeurs précises, mais ce n'est pas possible de remplir automatiquement la suite (Excel ne reconnaît pas de structure), et taper à la main 4x999 écritures, bof bof...
Voilà, j'espère que c'est assez clair et que vous pourrez m'aider.
Merci beaucoup
Je cherche une formule (solution sans VBA si c'est faisable, sinon VBA qui s'exécute automatiquement) qui me permette de reconnaître une certaine suite de caractères et d'inscrire dans une cellule une donnée selon la structure reconnue. C'est-à-dire:
J'ai des titres de documents dans ma colonne B sous cette forme:
A-215-2019
B-025-2019
C-014-2019 (tous les titres ont la même structure:
B-026-2019 Une lettre pour le type de document, un numéro de doc et l'année)
D-002-2019
A-056-2019
Je voudrais que dans la colonne C, les cellules reconnaissent le pattern X-000-AAA et selon que c'est A/B/C/D affichent Urgent(A)/Important(B)/À faire(C)/À classer(D).
Mon problème c'est que je ne peux pas me contenter de faire reconnaître juste le segment "A-/B-/C-/D-", car j'ai aussi d'autres documents dans ma liste qui commencent ainsi, mais qui sont ensuite différents (par exemple "C-Inventory"). Il faudrait donc que la formule ne correspondent qu'aux documents avec la structure ci-dessus.
J'ai essayé avec des caractères génériques dans la formule SI, mais ça ne marche pas. J'ai aussi essayé de faire une liste de tous les documents A-001-2019, A-002-2019, A-003-2019... pour ensuite utiliser un SI avec des valeurs précises, mais ce n'est pas possible de remplir automatiquement la suite (Excel ne reconnaît pas de structure), et taper à la main 4x999 écritures, bof bof...
Voilà, j'espère que c'est assez clair et que vous pourrez m'aider.
Merci beaucoup
Configuration: Windows / Internet Explorer 11.0
A voir également:
- Reconnaître des chaînes de caractères variables avec une même forme de base
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Base de registre - Guide
- Mise en forme conditionnelle excel - Guide
- Caractères ascii - Guide
- Caractères spéciaux - Guide
4 réponses
Bonjour,
Tu peux créer une formule qui associe les conditions suivantes :
- nombre de caractères=10,
- numéro de code du premier caractère du texte supérieur ou égal à 65 (lettre A),
- numéro de code du premier caractère du texte inférieur ou égal à 68 (lettre D),
- valeur numérique du 3ème au 5ème caractère,
- valeur numérique du 7ème au 10ème caractère.
=ET(NBCAR(A1)=10;CODE(A1)>=65;CODE(A1)<=68;ESTNUM(STXT(A1;3;3)*1);ESTNUM(STXT(A1;7;4)*1))
Cordialement.
Tu peux créer une formule qui associe les conditions suivantes :
- nombre de caractères=10,
- numéro de code du premier caractère du texte supérieur ou égal à 65 (lettre A),
- numéro de code du premier caractère du texte inférieur ou égal à 68 (lettre D),
- valeur numérique du 3ème au 5ème caractère,
- valeur numérique du 7ème au 10ème caractère.
=ET(NBCAR(A1)=10;CODE(A1)>=65;CODE(A1)<=68;ESTNUM(STXT(A1;3;3)*1);ESTNUM(STXT(A1;7;4)*1))
Cordialement.
Stamd
Merci beaucoup !
Bonjour
Un exemple, en espérant qu'il corresponde à ce que tu recherches
https://mon-partage.fr/f/bSRuAFmx/
Cdlmnt
Via
Un exemple, en espérant qu'il corresponde à ce que tu recherches
https://mon-partage.fr/f/bSRuAFmx/
Cdlmnt
Via
Bonjour
voyez cette proposition.
Elle détecte si le texte contient bien deux tirets et si les 3 caractères qui suivent le premier tiret donnent bien une valeur numérique
si oui, elle va chercher selon la 1° lettre dans le tableau de référence
Je ne peux pas dire si ces conditions vont suffire, mais il est peut être possible, sur ce principe, d'en rajouter d'autre dans l'item SI(ET(condition1;condition;2;condition3;ect);RECHERCHE....
https://mon-partage.fr/f/xDEiANVZ/
crdlmnt
voyez cette proposition.
Elle détecte si le texte contient bien deux tirets et si les 3 caractères qui suivent le premier tiret donnent bien une valeur numérique
si oui, elle va chercher selon la 1° lettre dans le tableau de référence
Je ne peux pas dire si ces conditions vont suffire, mais il est peut être possible, sur ce principe, d'en rajouter d'autre dans l'item SI(ET(condition1;condition;2;condition3;ect);RECHERCHE....
https://mon-partage.fr/f/xDEiANVZ/
crdlmnt
Bonjour
Tant qu'on y'est une autre proposition
si en A2 A-215-2019
test en B2
affichage en C2
Tant qu'on y'est une autre proposition
si en A2 A-215-2019
test en B2
=SI(ESTERREUR(TROUVE("-";A2)+TROUVE("-";A2;TROUVE("-";A2)+1));"";TROUVE("-";A2)+TROUVE("-";A2;TROUVE("-";A2)+1))
affichage en C2
=SI(ET(B2=8;GAUCHE(A2;1)="A");"Urgent";SI(ET(B2=8;GAUCHE(A2;1)="B");"Important";SI(ET(B2=8;GAUCHE(A2;1)="C");"A faire";SI(GAUCHE(A2;1)="D";"Aclasser";"---"))))