Extraire en B2 une (ou aucune) suite de caractères susceptibles de se trouv

Bonjour,

Il s’agit de ma deuxième demande sur ce site. Avant toute chose, je vous rappelle que malheureusement je n’ai pas accès à Excel directement et que je dois avoir recours à l’ordinateur d’une tierce personne pour effectuer mon travail de recherche sur le plan documentaire. Ordinateur qui n’est pas forcément disponible quand je souhaite l’utiliser…. C’est le cas en ce moment.

Comme cela m’a été autorisé pour ma première demande, je me permets de poster à nouveau un fichier issu de Libre Office, mais qui vous permettra de comprendre ce que je souhaite obtenir.

Mon travail de recherche avance bien et ce faisant, j’ai affaire maintenant à des chaînes de caractères qui comprennent souvent des données spécifiques et fréquentes, que je souhaite extraire dans une autre colonne.

Fichier :

Explications : J’ai pris quelques exemples représentatifs de ce qui se trouvera en colonne A :

en A2 : ECO_LONDON_ELR_10K_1949

en A3 : ECO_LONDON_ERP_5K_1962

en A4 : PVIL_LONDON_RTS_10K_1954

en A5 : GENE_UNITED_KINGDOM_1M_1952

en A6 : GENE_UK_TIR-1_TRS_1M5_1958

Je souhaite que donc dans des cellules en colonne B apparaissent les suites de caractères « ELR » ou bien « ERP » ou bien encore « RTS » ou encore « TRS » ou bien encore rien du tout, le tout en fonction de leur présence ou non dans les cellules ad-hoc en colonne A.
Par exemple, pour A4, la cellule B4 restera vide.

C’est là le but unique de ma nouvelle demande. Aucune interaction avec ma demande précédente, pour plus de simplicité.

Si possible : compte tenu des caractéristiques très différentes des cellules de départ entre elles, établir une formule « classique » (qui ne soit pas sous forme de fonction VBA) ?

Ceci pour me permettre ultérieurement, si besoin, de simplement remplacer une suite de caractères par une nouvelle ?

Si la solution passe impérativement par une fonction VBA, alors pourriez-vous s’il vous plait me préciser ce que je devrais faire si je voulais remplacer ultérieurement une suite par une nouvelle ou en ajouter une autre ? Est-ce aussi facile que cela, peut-être, qui sait, en raison des suite de caractères en K (milliers) ou en M (million ?)(je dis cela au hasard ...)

J’espère que mes explications sont compréhensibles pour vous.

Merci à l’avance pour vos réponses,

Thierry

Bonsoir à tous !

Une proposition ? :

Bonjour

Bonjour à tous

Une variante.

Bye !

Re,

Merci à JFL et gmb pour leurs réponses rapides.

Pour l’instant, je n’ai pas accès à Excel. Ce sera pour le début de semaine. Je ne peux donc pas examiner le fichier de gmb puisque je m’aperçois qu’il est en .xlsm. N’ayant que L.O. en ce moment, je pense que je ne peux pas l’ouvrir du tout.

Par contre, j’ai pu ouvrir le fichier de JFL avec L.O. et j’ai vu le résultat ainsi que les formules. Sur le fond, cela devrait me convenir. A vérifier sur Excel mais li n'y a pas de raison que cela ne fonctionne pas.

Par contre, (cela doit être normal) : sur Libre office la formule n'est pas prise en compte lorsque je veux l'appliquer à une nouvelle cellule. Après avoir créé une ligne supplémentaire en A10 par exemple, qui contient un des quatre mots, je recopie la formule =SIERREUR(STXT(A6;MAX(SIERREUR(TROUVE(t_ListeMots[];A6);0));3);"") en remplaçant bien sûr A6 par A10, Mais cela ne fonctionne pas. Aucun mot n’apparait en B10. Et pas mention d’une erreur.

Je viens à l’instant de découvrir que =SIERREUR sur Excel deviendrait =SI(ESTERREUR sur LO … de plus je pense qu’il faut apporter d’autres modifications à la formule. Pas grave, je vais attendre d’être sur Excel.

Par ailleurs, question peut-être « absurde » ; mais je préfère anticiper concernant la liste de mots : je vois la liste de mots en colonne E. Pourriez-vous SVP me préciser comment on ajoute un mot dans la liste sur Excel ?

(Toujours en raison de l’utilisation actuellement de LO, tout se trouve différemment organisé à propos de cette liste de mots)

D’avance, merci.

Thierry

Bonsoir de nouveau !

...... Pourriez-vous SVP me préciser comment on ajoute un mot dans la liste sur Excel ?

J'ai inséré un tableau structuré (t_ListeMots) contenant la liste des mots à rechercher. L'ajout d'un mot nouveau dans cette liste ( à la suite, sans ligne vide !) sera automatiquement pris en compte dans t_ListeMots.

Bonjour,

Merci à JFL pour son message concernant l'ajout dans la liste de mots.

A JFL et gmb : je vous tiens au courant dès que j'ai eu accès à Excel.

Bonne journée,

Thierry

Bonjour,

J’ai eu accès à Excel ce matin.

Je viens de tester la proposition de JFL ; cela fonctionne sur le tableau fourni.

J’ai voulu transposer cette façon d’extraire ces suites de caractères sur un de mes tableaux précédents.

Avant cela, je suis allé d’abord voir les caractéristiques la cellule « Mots » figurant en E2. En allant sur « création », j’ai vu que le nom du tableau est « t_ListeMots ».

C’est une « expression » que je retrouve bien sûr dans la formule fournie par vous et que je dois appliquer :

=SIERREUR(STXT(A2;MAX(SIERREUR(TROUVE(t_ListeMots;A2);0));3);"")

Dans un autre tableau donc, j’ai choisi une cellule. J’ai cliqué sur « mettre sous forme de tableau » ; personnalisé ;

une fenêtre apparaît avec noté « =$P$3 » (où se trouvent données tableau) ; ok ; La cellule en P3 s’intitule Colonne1 mais je peux la renommer si nécessaire.

J’écris dans les deux cellules en dessous de Colonne1 : ABC et CDE ; je clique sur le menu déroulant de « Colonne1 » et ABC et CDE apparaissent bien dans la fenêtre qui apparaît.

Je vais dans « création » pour modifier le nom du tableau : t_ListeMots que je viens de créer dans la cellule P3.

Lorsque je copie la formule =SIERREUR(STXT(A1;MAX(SIERREUR(TROUVE(t_ListeMots;A1);0));3);"") en M2 par exemple, je n’ai aucun résultat. Pourtant la cellule en A2 comprend bien ABC

Je dois avoir oublié quelque chose ; j’ai tout examiné mais je ne vois pas ce qui fait défaut.

Je joins ici un exemple d’un tableau que je viens de créer pour l’occasion, avec un tableau intitulé "t_ListeMots". La formule se situe colonne B.

Vous avez peut-être la réponse.

D’avance, merci.

Thierry

Bonjour à tous !

La syntaxe de la formule est :

=SIERREUR(STXT(A1;MAX(SIERREUR(TROUVE(t_ListeMots;A1);0));3);"")

et non =SIERREUR(STXT(A1;MAX(SIERREUR(TROUVE(@t_ListeMots;A1);0));3);"")

Re,

Merci à JFL.

Cependant, je n'ai jamais mis la formule contenant un @ : =SIERREUR(STXT(A1;MAX(SIERREUR(TROUVE(@t_ListeMots;A1);0));3);"")

J'ai bien inscrit (et je viens encore de vérifier)

=SIERREUR(STXT(A1;MAX(SIERREUR(TROUVE(t_ListeMots;A1);0));3);"")

mais cela ne fonctionne pas. Je ne pense pas m'être trompé lors de la création de la liste de mots ...

Merci

Thierry

Bonjour de nouveau !

Votre fichier affiche la formule suivante :

image

En retour, votre fichier avec formule amendée. Nous allons croiser les doigts....

Bonjour de nouveau,

Merci pour votre aide. Par chance, j'ai pu encore avoir accès à Excel.

En fait, je vois bien que sur votre Excel ma formule contient ce fameux @. Or, sur mon Excel (2010), ce @ s'apparait pas ... (et je ne l'écris pas d'ailleurs).

C'est surprenant. Est-ce dû au fait de la version Excel ?

Sur votre nouveau fichier, en voulant faire un copier-coller sur mon "tableau-exemple", je vois que votre nouvelle formule commence par un "{" et se termine par un "}". Je crois savoir que ces { et } signifient qu'il s'agit d'une macro. je me trompe ?

Mais en faisant alt+F11 je ne vois pas de codes. Et puis le fichier n'est pas enregistré en .xlsm...

Ah, quand on n'est pas expert en excel ...

Merci

Thierry

Bonjour de nouveau,

C'est surprenant. Est-ce dû au fait de la version Excel ?

Je pense !

Sur votre nouveau fichier, en voulant faire un copier-coller sur mon "tableau-exemple", je vois que votre nouvelle formule commence par un "{" et se termine par un "}".

Les "{" signifient que la formule est matricielle. (Touches Ctrl+Maj+Entrée après la saisie. Cette action s'occupera de placer les accolades).

Bonsoir,

Pour JFL : merci beaucoup pour votre réponse.

Vous avez raison, les{ } signifient plutôt que la formule est matricielle. Je savais que cela avait un rapport avec le type de formule.

Grâce à vous, j'ai réussi avec cette dernière formule.

Encore merci !

Thierry

bonsoir,

ceci n'est pas une formule matricielle (mieux) + elle cherche tous les longueurs (<>3) + elle cherche aussi les majuscules/miniscules + cherche "_" & mot & "_"

Toute facon, ce sont des formules à éviter, une dizaine est okay, mais haut de là, cela ralentira le système.

=SIERREUR(INDIRECT("J" &AGREGAT(14;6;LIGNE(t_ListeMots[Mots])/(CHERCHE("_" & t_ListeMots& "_";A1)>0);1));"??")

Bonjour à tous !

ceci n'est pas une formule matricielle (mieux) .....

Toute facon, ce sont des formules à éviter, une dizaine est okay, mais haut de là, cela ralentira le système.

La littérature confirme effectivement l'impact couteux des formules matricielles.

La fonction INDIRECT, comme toutes les fonctions volatiles, déclenche un re-calcul à chaque modification de la feuille ce qui n'est pas optimal de ce point de vue.

Alors.... la peste ou le choléra ?

Je remercie par avance les spécialistes qui pourraient parfaire ma connaissance en la matière !

bonjour,

@JFL, vous avez raison concernant cette recalculation, ma solution est le choléra.

Moi, j'utilise une formule parreil dans une macro et je remplace directement la formule par son valeur.

Donc, cela est plutôt le corona.

Bonjour à tous,

Désolé de ne pas avoir répondu plus tôt. Un grand merci pour votre aide à tous.

J'ai pu trouver une réponse à ma demande et je la "marque" comme résolue.

Je note la formule avec INDIRECT dans un coin de ma ^tête, au cas où. Mais j'ai bien noté qu'il ne fallait pas en faire un usage régulier.

Pour le reste, vos derniers messages montrent un fois de plus que vous êtes "au top" sur Excel.

Encore merci,

Thierry

Rechercher des sujets similaires à "extraire aucune suite caracteres susceptibles trouv"