Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
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]​
la différence c'est xlsx et xlsm, mais rien ne change si j'enregistre mon classeur en xlsm, ni en déplacent ta feuille sur le mien elle ne fonctionne plus.
 
Dernière édition:
bonjour une formule qui va fonctionner sur toute les version excel
principe
  1. on remplace la caractère"# par une serie de 255 espaces
  2. on en ajoute 1 devant
  3. avec stxt (mid) on va selectionner une tranche de 255 caractère
  4. a la quelle on supprime les espaces ajoutés précédemment
pour la sélection on va utilise les index de colonnes
comme ca on va pouvoir étendre la formule

donc test
en A1 j'ai
toto#titi#riri#fifi#loulou
en c2 par exemple je vais mettre cette formule
=SUBSTITUE(STXT(SUBSTITUE("#" &$A1;"#";REPT(" ";255));COLONNE(A1)*255;255);" ";"")
et on étend la formule vers la droite

la techno est simple a comprendre et c'est compatible All version excel
on peut faire la même chose en la transférant verticalement en utilisant ligne au lieu de colonne
et on tendra alors la formule vers le bas
=SUBSTITUE(STXT(SUBSTITUE("#" &$A$1;"#";REPT(" ";255));LIGNE(A1)*255;255);" ";"")

simple comme un bonjour
issue d'une démonstration que @mapomme a fait dans le passé
bonne journée
 
"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
 

Pièces jointes

Bonjour @sylvanu
tu te sert de trouve tout simplement pour choper le début ou la fin de la sous chaine que tu veux
il faut alors remplacer lesespaces originals par un autre caractère "µ" par exemple
le reste c'est toujours pareil on substitue ce que l'on a ajouté a la fin

#truc#bidule chouette#machin#chose blablabla
substitution des espace par "µ"
substitution des "#" par un string(255," ")

et tu englobe ma formule initiale(verticale ou horizontale par un
stxt(souschaine;1;trouve(souschaine;"µ"])' pour le premier
stxt(souschaine;trouve(souschaine;"µ"];255)' pour le second

remplacer souschaine par ma formule (verticale ou horizontale)selon votre besoin
terminé
 
Bonjour à tous,

Une solution très simple.

Sélectionner A1 et définir le nom deb :
Code:
=SI(STXT(Feuil1!$A1;LIGNE(INDIRECT("1:"&NBCAR(Feuil1!$A1)));1)="#";LIGNE(INDIRECT("1:"&NBCAR(Feuil1!$A1))))
Formule normale en B1 à tirer à droite et vers le bas :
Code:
=SIERREUR(STXT($A1;PETITE.VALEUR(deb;COLONNE(A1));TROUVE(" ";$A1&" ";PETITE.VALEUR(deb;COLONNE(A1)))-PETITE.VALEUR(deb;COLONNE(A1)));"")
A+
 

Pièces jointes

re
j'ai cloné l'idée de @jurassic pork en vba
  1. argument 1 la cellule ou est le texte à traiter
  2. argument 2 le motif ou Pattern
  3. argument 3
a) 0 pour toute la table d’occurrence
b) l'index de l’occurrence de 1 à x

pour le mode table sélectionner x cellules mettez la formule et valider par CTRL+MAJ+ENTER
et j'ai ajouter la macrodescription pour le dialog Fx


VB:
Function REGEXEXTRACTPV(texte As String, Pattern$, Optional index As Variant = 0)
    Dim t, matchs
    With CreateObject("VBScript.RegExp"):
        .Global = True: .IgnoreCase = True: .Pattern = Pattern
        Set matchs = .Execute(texte)
        If matchs.Count > 0 Then
            If index = 0 Then
                ReDim t(matchs.Count)
                For i = 0 To matchs.Count - 1
                    Debug.Print matchs(i)
                    t(i) = matchs(i)
                Next
                REGEXEXTRACTPV = t
            Else
                REGEXEXTRACTPV = matchs(index - 1)
            End If
        Else
        End If
    End With
End Function

et pour ceux qui veulent le Fx
Code:
Sub UnregisterOptions()
    On Error Resume Next
    Application.Calculation = xlCalculationManual
    Application.MacroOptions Macro:="REGEXEXTRACTPV", Description:=vbNullString, ArgumentDescriptions:=vbNullString, Category:=vbNullString
    On Error GoTo 0
End Sub
Sub registerOptions()
    Dim Funct_description As String
    Dim argumtsArray As Variant

    ' (max 255 caractères)
    Funct_description = "Fonction REGEXEXTRACTPV" & vbCrLf & _
                         "1° chaîne à traiter (String)" & vbCrLf & _
                         "2° pattern ou motif(String)" & vbCrLf & _
                         "3° mode array ou mode single" & vbCrLf & vbCrLf & "Créé par patricktoulon"
   
    argumtsArray = Array(1, 2, 3)
    ' Enregistrement
    Application.MacroOptions Macro:="REGEXEXTRACTPV", _
                                     Description:=Funct_description, _
                                     ArgumentDescriptions:=argumtsArray, _
                                     Category:="Personnalisée"
End Sub
et voila
 

Pièces jointes

- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…