Forum Clubic

Trouver le mot qui suit une expression

Bonjour à tous,

Je cherche à créer une macro qui irait rechercher le mot (pas nécessairement du texte) qui suit une expression donnée dans une cellule donnée.

Je m’'explique: j’ai un tableau avec différentes colonnes. La dernière colonne est une colonne “commentaires”. Les commentaires sont toujours structurés de la même manière: il s’agit d’un texte généré automatiquement par un autre programme.

Je voudrais isoler une valeur dans ce commentaire (voir image), sachant qu’elle sera toujours précédée de la phrase “Cannot find mapping in the customizer with the value”.

http://img518.imageshack.us/img518/8494/exportimagepg6.png

Comment pourrais-je procéder?

Merci beaucoup!
Edité le 18/12/2008 à 10:08

Une bonne regexp peut résoudre ton problème je pense. Sinon un éditeur capable de gérer la sélection en colonne comme jEdit te permettrait de supprimer ce qu’il y avant et après, étant donné que ton pattern est assez répétitif.

Merci pour la réponse rapide!

Est-ce que tu pourrais préciser pour regexp?

(je cherche à faire une macro Excel-VBA, j’ai oublié de préciser!)

Tu veux ton résultat sous quelle forme ?
Isoler la valeur dans une autre colonne sur la même ligne, créer une nouvelle feuille, sortir les valeurs dans un fichier texte ?

Dans le premier cas, tu as la fonction trouve() qui te permet de le faire directement en excel, sans vba. Au besoin, tu filtres ensuite les lignes pour éliminer celles qui ne répondent pas à la condition

Dans les deux autres cas, une simple boucle for each en vba sur l’étendue source, un test sur l’existence de ta chaine clé, et ensuite une recopie soit dans de nouvelles cellules, soit directement dans un fichier texte

je voudrais isoler la valeur qui suit mon texte dans une autre colonne sur la même ligne, donc le premier cas.

J’ai essayé avec la fonction FIND() (ou trouve() ), et il me donne la position de l’expression “Cannot find mapping in the customizer with the value” dans la cellule demandée. C’est n’est pas trop ce que je cherche. Je cherche à sortir le mot qui suit directement cette expression. Ce mot est de longueur variable…

Le mot que je cherche sera aussi toujours suivi par une autre expression, on aura donc:

Cannot find mapping in the customizer with the value XXXXXX and first criteria

en sachant qu’il y a encore du texte avant et après ce qu’ily a ci-dessus.

Est-ce que ça aide?
Edité le 18/12/2008 à 12:14

Je n’avais pas compris que tu voulais seulement le mot suivant et pas le reste de la phrase.
De toute manière, c’est le même principe.
Comme c’est une formule gigogne, donc pas très facile à expliquer, je te propose une réalisation en plusieurs colonnes, tu pourras le cas échéant regrouper ensuite le tout dans une seule
En supposant tes données dans la colonne A
colonne B, tu identifies la position de début de la chaine qui t’intéresse.
Tu procèdes comme tu l’as fait, avec trouve(), et tu ajoutes la longueur de ta clé, qui est fixe si j’ai bien compris
ca devrait de donner quelque chose du genre
=trouve(“Cannot find mapping in the customizer”;A1)+54
Colonne C, tu refais la même chose pour “and first criteria” ; cette fois-ci c’est le début de chaine qui t’intéresse
Colonne D, tu extrais la partie qui t’intéresse avec stxt(); la valeur de départ est en B, la longueur est C-B (peut être ±1 à cause des espaces)
Edité le 18/12/2008 à 14:57

super, ça fonctionne ! Je te remercie !

:jap: