Scinder / Rechercher des mots dans un texte

Bonjour, ne sachant pas vraiment comment expliquer ce que je veux faire je vais donner une exemple :

Problème 1 :

J'ai un texte comme suit dans A1 " 111 aaa XXX c 2222 XXX dddd ff"

  • Cette séquence peut se répéter plusieurs fois (ce n'est pas prévu a l'avance)
  • Les textes entre les nombres sont extensible, il n'y aura pas toujours uniquement 3 mots entre chaque nombre, par contre le mot XXX sera toujours présente mais pas forcément au même endroit
  • Les mots et les nombres ne font pas forcément la même taille (comme dans l'exemple)

Ce que j'aimerais, c'est une formule qui me fait obtenir cela :

  • En B1 : 111 aaa c
  • En B2 : 2222 dddd ff

etc...

=> Ainsi, une formule qui enlèverait la séquence XXX et qui scinderait en deux (ou plus en fonction du nombre de suite "Nombres / Mots") la séquence initiale avec toujours : Le nombre en premier suivit des mots jusqu'a tomber sur un autre nombre ou sur la fin du texte

Problème 2

J'ai un texte comme suit : "aaa bbb ccc XXX 111

  • Le XXX sera toujours a la même place, et j'aimerais une formule qui puisse renvoyer le nombre qui se trouve juste après

Merci d'avance pour votre aide !

Salut,

Concernant le problème 1, pour moi la solution passe par vba.

Si tu es intéressé, je peux te faire parvenir une solution.

Problème 2

En considérant que ta chaine se trouve en A1, une formule serait "=DROITE(A1;NBCAR(A1)-CHERCHE("XXX";A1;1)-3)"

Jers

Merci beaucoup je vais essayer ca !

Pour ce qui est du VBA, je suis bien entendu intéressé, mais je n'ai presque aucune connaissance dans ce domaine

Merci beaucoup pour tes réponses !

NB : Ta formule marche parfaitement !

J'avais oublié de préciser pour le problème 2, après le nombre il y'a un point

J'ai donc rajouté une formule sur la base de la tienne comme suit dans une cellule a coté : =GAUCHE(B3;CHERCHE(".";B3;1)-1)

Ce n'est qu'un détail, mais serais-tu comme l'incorporer a ta formule précédente qui renvoie le nombre suivit du point ?

Salut Mael,

Concernant le point 2, voici une proposition

=STXT(A1;CHERCHE("XXX";A1;1)+3;NBCAR(A1)-(CHERCHE("XXX";A1;1)+3)).

Concernant le point 1, je reviens vers toi un peu + tard

Jers

Voici une proposition en vba pour le problème 1.

Jers

10scinder-chaine.xlsm (19.03 Ko)

Quand j'essaye d'ouvrir ton fichier, Excel me dit qu'une partie du classeur n'est pas prise en charge par ma version d'Excel.

Je suis sur EXCEL sur mac avec la Version 15.39 (171010)

Un énorme merci pour ton aide en tout cas

NB : Le problème 2 est résolu avec ta formule, merci !

Les problèmes de compatibilité avec la version mac sont récurrents.

N'ayant pas cette version, il va être difficile pour moi de régler cela.

Essaie quand même le fichier joint par tout hasard.

La compatibilité est résolu !

Avec mon exemple, ca marche parfaitement !

Maintenant, j'ai oublié quelques détails qu'on vient de me rappeler...

Pour que ce soit plus simple, je vais approcher mon exemple de la réalité

Cellule A1 : "31 637 ChoseA sont devenu des ChoseB

2 005 ChoseB sont devenu des ChoseC

11 Chose sont devenu des Truc - Z"

NB : Les guillemets sont présentes

Il faudrait donc avec le macco que ca donne ca

B1 = 31 637 ; C1 = ChoseA ; D1 = ChoseB

B2 = 2 005 ; C2 = ChoseB ; D2 = ChoseC

B3 = 11 ; C3 = Chose ; D3 = Truc - Z

Merci encore pour ton aide !

Mael,

Ce que tu demandes là ne correspond plus à ta demande initiale.

Je comprends le principe mais il manque les règles.

Comment déterminé le mot à écrire en colonne C (mot clé (par ex Chose) ou tjs le mot après un nombre ou tjs le mot avant un mot clé (par ex "sont devenus") ?

Comment déterminé le mot à écrire en colonne D ( le mot avant un nombre) ?

Jers

En effet, je m'étais mal exprimé dès le début..

Une séquence type : 31 637 ChoseA sont devenues des ChoseB

Il faut prendre en compte que dans la cellule A1 il y'a x fois cette séquence et que le tout est encadré par des guillemets (Enfin dans tous les cas testé actuellement il y'a des guillemets, mais il est possible qu'un jour on se retrouve avec une suite de séquence sans guillemet, le mieux serait que la formule prend en compte si il y'a ou non des guillemets, et dans le cas ou elles sont présente les enlever.

  • Le mot en Colonne B sera toujours le nombre correspondant a la séquence (Ici on va dire que c'est la séquence 1)
  • Le mot en Colonne C sera toujours le mot ou groupe de mot compris entre le nombre affiché en Colonne B et le "sont devenues"
  • Le mot en Colonne D sera toujours le mot ou groupe de mot compris entre le "devenues des" et le nombre correspond a la ligne suivante (Donc ici le nombre correspondant a la séquence 2).

PS : Si il n'y a pas de ligne suivante, le mot en Colonne D sera le mot ou groupe de mot après le "devenues des"

Si le fait d'ajouter une partie qui détecte la présence ou non des guillemets est trop compliqué, fait comme si il n'y en avait pas, et on enlèvera manuellement les guillemets

Salut,

Voici une nouvelle proposition suite à ta nouvelle demande.

Jers

Ca marche parfait, merci beaucoup ! J'ai juste trouvé deux cas ou ca ne fonctionne pas :

  • Quand les nombres écrit dans la Cellule A1 ont un séparateur des milliers
  • Quand les différentes séquences sont sur plusieurs lignes (Comme si on avait fait un ctrl + alt + enter entre chaque séquence)

Mael,

Voici la modif demandée.

Bonne soirée

Jers

Un énorme merci pour ta patience et ton expertise !

Je test avec des cas différents, et je reviendrais clôturer le sujet !

Encore merci !

J'ai constaté un problème avec cet exemple :

6 900 Chose A sont devenues des Chose

72 228 Chose sont devenues des Chose B

271 Chose C sont devenues des Chose D E

Et voila ce que ca me renvoie :

6900 / Chose A / Chose72

228 / Chose B271 Chose C / Chose D E

Merci d'avance !

Au début du code (ligne 12), remplacer

Cells(1, 1) = Replace(Cells(1, 1).Value, Chr(10), "")

par

Cells(1, 1) = Replace(Cells(1, 1).Value, Chr(10), " ")

Jers

Parfait !

Merci beaucoup

super,

N'oublie pas de clôturer le sujet si tout est ok pour toi.

Jers

Rechercher des sujets similaires à "scinder rechercher mots texte"