Extraire plusieurs chaînes de caractères entre deux caractères identiques [Résolu]

Messages postés
22
Date d'inscription
jeudi 27 octobre 2011
Statut
Membre
Dernière intervention
6 juin 2019
-
Bonjour,

Voici un exemple de situation que j'aimerais résoudre:

"ahshshdhshdha bonjour/maison/porte ififiifofeofoejfefe

ahsdadasdasdad bonjour/voiture/porte fefefefefefefefef

frgtrgrgrgrgrggrg bonjour/igloo/porte grgrgrgrgrgrgrgr

dwdgrgrgrgrgrgr bonjour/bateau/porte grgrgrgrgrgrgrgr"


(ce texte se trouve sur un fichier Word et je peux le mettre sur une cellule excel)

Je recherche un moyen automatique pour extraire les mots maison, voiture, igloo, bateau et les mettre en colonne sur un fichier excel. J'imagine qu'il faudra utiliser VBA et dire que dans ce texte je veux extraire tous les mots qui se trouvent entre "bonjour/" et "/porte".

J'ai suivi un cours sur le VBA, mais je ne sais pas du tout comment je vais devoir m'y prendre. Auriez-vous un indice?

(Déjà: est-ce que c'est faisable? :euh:)

Merci!
Afficher la suite 

6 réponses

Messages postés
4582
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
14 octobre 2019
117
0
Merci
Bonjour Tanvir, bonjour le forum,

Peut-être comme ça (à adapter) :

Sub Macro1()
Dim O As Worksheet 'décalre la variable O (Onglet)
Dim TV As Variant 'décalre la variable TV (Tableau des Valeurs)
Dim TM() As Variant 'décalre la variable TM (Tableau des Mots)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV
    ReDim Preserve TM(1 To I) 'redimensionne le tableau des lignes TM
    TM(I) = Split(TV(I, 1), "/")(1) 'récupère le premier mot apres le symbole "/"
Next I 'prochaine ligne de la boucle
'renvoie dans la cellule F1 (à adapter) redimensionnée, le tableau TM transposé
O.Range("F1").Resize(UBound(TM), 1).Value = Application.Transpose(TM)
End Sub

Commenter la réponse de ThauTheme
Messages postés
22
Date d'inscription
jeudi 27 octobre 2011
Statut
Membre
Dernière intervention
6 juin 2019
0
Merci
Salut, merci pour ta réponse.

j'ai mis le texte sur une cellule A1 sur une feuil1, et insérer le code sur VBA, mais ça bug:


Commenter la réponse de tanvir658
Messages postés
1214
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
13 août 2019
226
0
Merci
Bonjour,

Dans la colonne A, tu mets tes textes les uns au dessous des autres,
Dans la colonne B1, tu mets la formule suivante :

=STXT(A1;(CHERCHE("bonjour/";A1)+8);(CHERCHE("/porte";A1)-(CHERCHE("bonjour/";A1)+8)))

et tu la dragues sur les cases B2, B3 etc. pour que la formule s'incrémente. Tu auras ton résultat dans la colonne B

Cldt
Commenter la réponse de PSud
Messages postés
4582
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
14 octobre 2019
117
0
Merci
Re,

Ben oui... J'avais précisé "à adapter" car de ton coté tu n'as rien précisé du tout. Où se trouvent les cellules initiales, avant traitement de la macro ?
Mon exemple fonctionne si tu fais un copier/coler de Word vers Excel. L'onglet se nomme Feuil1 et tu colles à partir de la cellule A1. Le tableau sera renvoyé à partir de F1...
Commenter la réponse de ThauTheme
Messages postés
13838
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 octobre 2019
403
0
Merci
Bonsoir

c'est aussi possible avec une regex
(?<=bonjour/).*(?=/porte)

Ici un exemple


Et là un tuto
https://analystcave.com/excel-regex-tutorial/

Commenter la réponse de Whismeril
Messages postés
22
Date d'inscription
jeudi 27 octobre 2011
Statut
Membre
Dernière intervention
6 juin 2019
0
Merci
Hello!

J'ai réussi à avoir ce que je voulais, merci à tous!
Commenter la réponse de tanvir658