Extraire d'une cellule plusieurs chaines de caractères entre 2 caractères =/=

Résolu/Fermé
LucieDiter Messages postés 4 Date d'inscription dimanche 16 février 2020 Statut Membre Dernière intervention 18 février 2020 - 18 févr. 2020 à 11:56
LucieDiter Messages postés 4 Date d'inscription dimanche 16 février 2020 Statut Membre Dernière intervention 18 février 2020 - 18 févr. 2020 à 19:07
Bonjour,

J’aurais voulu savoir s’il est possible dans Excel d’extraire d’une cellule contenant une chaîne de caractères, toutes les chaines de caractères contenues entre deux caractères définis.

Par exemple dans une cellule j’ai la chaîne suivante :
graphisme - #sketchnote - Education ; e-learning ; rédacteur @tt (https://t.co/rrFis22gB) - #cercleAPI
Je voudrais extraire dans la cellule adjacente seulement les chaines de caractères commençant par "#" et finissant par " " dans l'exemple seulement #sketchnote #cercleAPI

1/ J’ai déjà trouvé sur le forum plusieurs formules qui ne marchent que pour le premier # ou lorsque les hashtags se suivent

2/ J’ai essayé de définir une fonction grâce à un code VBA trouvé ici https://excel-malin.com/codes-sources-vba/extraire-chaine-de-caracteres-delimitee/ qui me donne le résultat suivant :

sketchnote - Education ; e-learning ; rédacteur @tt (https://t.co/rrFis22gB) - #cercleAPI

Je ne sais pas comment modifier le code pour positionner la fin des chaînes à extraire correctement et faire recommencer l’opération tant qu’il reste des # dans la cellule.

Merci d’avance pour votre aide.

Configuration: Windows / Chrome 79.0.3945.130
A voir également:

2 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
Modifié le 18 févr. 2020 à 14:06
bonjour, peux-tu partager ton code VBA, en utilisant les balises de code?
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
suggestion:
Function lucie(entree As String) As String
Dim regle As RegExp, retour As Match
Set regle = New RegExp
regle.Pattern = "#[^\s]+\s?"
regle.Global = True
For Each retour In regle.Execute(entree)
    lucie = lucie + CStr(retour.Value)
Next retour
End Function
qui demande d'ajouter "Microsoft VBScript Regular Expressions" dans les références du projet
1
LucieDiter Messages postés 4 Date d'inscription dimanche 16 février 2020 Statut Membre Dernière intervention 18 février 2020
18 févr. 2020 à 14:11
Merci de ton retour. Je mets ci-après le code que j'ai utilisé trouvé sur excel-malin.com. J'espère que j'ai bien inséré le code car je n'ai pas trouvé vba dans la liste des langages.

Je te tiens informé dès que j'ai testé ce que tu m'as envoyé.

Public Function ExtraireChaineDelimitee(ChaineSource As String, Optional LimiteAvant As String = "", Optional LimiteApres As String = "")
'par: Excel-Malin.com ( https://excel-malin.com )

On Error GoTo FunctionErreur
If InStr(1, ChaineSource, LimiteAvant) = 0 Then
ExtraireChaineDelimitee = CVErr(xlErrNA)
Exit Function
Else
ExtraitPositionDebut = InStr(1, ChaineSource, LimiteAvant) + Len(LimiteAvant)
End If

If LimiteApres = "" Then
ExtraitPositionFin = Len(ChaineSource)
Else
ExtraitPositionFin = InStr(1, ChaineSource, LimiteApres) - 1
End If
ExtraireChaineDelimitee = Mid(ChaineSource, ExtraitPositionDebut, ExtraitPositionFin - ExtraitPositionDebut + 1)
Exit Function

FunctionErreur:
ExtraireChaineDelimitee = CVErr(xlErrNA)
'ExtraireChaineDelimitee = ""
End Function
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > LucieDiter Messages postés 4 Date d'inscription dimanche 16 février 2020 Statut Membre Dernière intervention 18 février 2020
18 févr. 2020 à 14:45
merci. il faut utiliser "basic" pour le vba.
entretemps, j'ai ajouté une suggestion.
0
LucieDiter Messages postés 4 Date d'inscription dimanche 16 février 2020 Statut Membre Dernière intervention 18 février 2020
18 févr. 2020 à 18:58
Bonsoir,

Je viens d'essayer et ça marche super bien où que soit placée la sous-chaîne dans la chaîne ! Merci !

PS: J'ai mis un peu de temps à trouver comment ajouter "Microsoft VBScript Regular Expressions" dans les références donc pour ceux que ça pourra aider c'est dans outils / références / puis cocher Microsoft VBScript Regular Expressions 5.5

Je vais essayer d'adapter moi-même le code pour faire pareil pour les chaînes précédées de @ merci encore !

Bonne soirée
0