Autres Extraire dans une phrase, les mots précédés d'un # en colonne.(Excel 2007)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jmst1

XLDnaute Nouveau
Bonjour, je desire extraire les mots d'une phrase précédé d'un# , en colonne ou en ligne.

Par exemple:
Demain, je vais à #Paris , mais j'hésite à rendre visite à #Josette qui habite #Lyon.

#Paris
#Josette
#Lyon

#Paris #Josette #Lyon

Je n'arrive pas à construire une formule avec

EQUIV DECALER NBVAL J'arrive à extraire la ligne complète, mais pas un/les mot(s).

Merci pour vos idées.
 
Solution
"Separe" n'est pas une fonction XL mais c'est une fonction VBA. Vous m'avez dit que vous ne vouliez pas de VBA. D'où mes autres propositions en formules.
S'il vous répond "#NOM" c'est que vous n'avez pas copiez le code du module VBA.
OK merci pour la précision.
j'ai pris les formules de la feuille 2
Transposer en verticale. et cela fonctionne très bien.
Merci
Bonjour,

Essaie :

VB:
=SIERREUR(GAUCHE(INDEX(FILTRE.XML("<M><R>"&SUBSTITUE(SUBSTITUE($A$1;".";" ");"#";"</R><R>")&"</R></M>";"//R");LIGNE(A2));SIERREUR(CHERCHE(" ";INDEX(FILTRE.XML("<M><R>"&SUBSTITUE(SUBSTITUE($A$1;".";" ");"#";"</R><R>")&"</R></M>";"//R");LIGNE(A2)));NBCAR(INDEX(FILTRE.XML("<M><R>"&SUBSTITUE(SUBSTITUE($A$1;".";" ");"#";"</R><R>")&"</R></M>";"//R");LIGNE(A2)))+1)-1);"")

Capture d'écran 2025-03-02 102544.png


Daniel
 
Bonjour,

Essaie :

VB:
=SIERREUR(GAUCHE(INDEX(FILTRE.XML("<M><R>"&SUBSTITUE(SUBSTITUE($A$1;".";" ");"#";"</R><R>")&"</R></M>";"//R");LIGNE(A2));SIERREUR(CHERCHE(" ";INDEX(FILTRE.XML("<M><R>"&SUBSTITUE(SUBSTITUE($A$1;".";" ");"#";"</R><R>")&"</R></M>";"//R");LIGNE(A2)));NBCAR(INDEX(FILTRE.XML("<M><R>"&SUBSTITUE(SUBSTITUE($A$1;".";" ");"#";"</R><R>")&"</R></M>";"//R");LIGNE(A2)))+1)-1);"")

Regarde la pièce jointe 1213899

Daniel
Mon Excel 2007 ne reconnait pas le FILTRE.XML
Désolé, mais merci pour cette proposition.
 
Bonjour Jmst, Danielco,
Peut être avec une fonction perso en VBA :
VB:
Function Separe(C$, N)
On Error Resume Next
C = Replace(Replace(C, ".", " "), ",", " ")
T = Split(C, "#")
Separe = Split(T(N), " ")(0)
If IsEmpty(Separe) Then Separe = " "
End Function
 

Pièces jointes

Alors une solution avec des colonnes masquées et :
VB:
=SIERREUR(STXT(A1;1+CHERCHE("#";A1);1000);"")
=GAUCHE(B1;SIERREUR(CHERCHE(" ";B1);NBCAR(B1)))
Mais limité à 5 "#", mais simple à extrapoler.
 

Pièces jointes

Merci sylvanu
La 1ere feuille fait exactement le boulot que je cherche.
Il suffit de concaténé cette liste avec
="#"&B1
Ce qui est bizarre, je n'arrive pas à "copier/coller" ta formule dans mon classeur 2007
Sur ton classeur cela fonctionne.
 
Dernière édition:
Hello,
jmst1 et sylvanu si vous êtes en Excel 2007, justement je cherchais des personnes pour tester mon complément XlDnALibJP avec cette version d'Excel.
j'ai pu le tester jusqu'à Excel 2010 sous Windows 7 mais je n'ai pas de version d'Excel inférieur.
Pour l'installer c'est facile dans le zip disponible en téléchargement, il suffit de lancer le fichier exe d'install qui correspond à sa version d'Excel ( x64 pour une version excel 64 bits) et se laisser guider par l'installeur. Une fois le complément installé il faut l'activer dans Fichiers/Options/Compléments -> Compléments Excel/Atteindre -> cocher XlDnaLibJP. Pour désinstaller , c'est par ajouter et supprimer des programmes de windows.
Dans le complément il y a des fonctions en particulier REGEXEXTRACTJP qui permet d'extraire des parties de texte en utilisant les expressions régulières. Voici son utilisation pour le sujet de cette discussion :
RegExtract.gif

Formule :
VB:
=REGEXEXTRACTJP(A1;"#(\w+)";1)
Extraire les mots précédés par # résultats en vertical (1) pour résultats en horizontal mettre 2

Alors si vous pouvez essayer la fonction dans votre Excel 2007 pour voir si le complément fonctionne avec cette version.
Ami calmant, J.P
 
Dernière édition:
Il n'y a pas 1 formule mais 10. Sur chaque colonne la formule est différente.
Il faut copier B1:K1 en collage formules, si la phrase test est en A1, sinon il faut modifier.
( étant aussi sous 2007, cela devrait marcher sans souci de compatibilité )
Si, il n'y a qu'une seul formule sur la feuille 1 à tirer contre le bas.

=Separe($A$1;LIGNE())

Cela fonctionne très bien sur ton classeur, mais pas sur le mien.

Sur le mien, il répond
[td width="66pt"]
#NOM?​
[/td]​
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour