Parcourir un texte dans une cellule et récuperer à chaque fois une expression donnée.

maurtoss

XLDnaute Nouveau
Bonjour à vous,

J'ai un gros problème que je voudrais vous soumettre.
En fait, j'ai un millier de cellules excel qui contiennent toutes des phrases du genre:
Vous habitez vers Bordeaux ? Voici quelques offres emploi qui pourraient vous intéresser : Commercial Terrain : http://bit.ly/M2GE49 Assistant de Direction : http://bit.ly/N5VNnZ Gestionnaire Dommages : http://bit.ly/MrEGPL

Moi je voudrais juste récupérer dans n cellules (3 dans le cas présent: donc B1 C1 D1) différentes ligne les parties en rouge. En gros au final j'aurai une cellule qui contient le texte initial dans A1 et les liens courts (chaque partie rouge) en B1 C1 D1.

J'ai essayé les formules excel sans aucun succès. J'en récupère qu'un seul à chaque fois.
Je suis débutant en vba. Mon idée est un programme qui parcourt le texte et à chaque fois qu'il rencontre le mot "http:", il récupère dans une cellule les 15 caractères qui suivent, et il continue. Mais je ne sais pas comment écrire cette partie du code.

Merci pour votre aide.
 

Tibo

XLDnaute Barbatruc
Re : Parcourir un texte dans une cellule et récuperer à chaque fois une expression do

Bonjour,

Avec ton texte en A1, en B1 cette formule :

Code:
=SI(COLONNES($A:A)>(NBCAR($A1)-NBCAR(SUBSTITUE($A1;"http";"")))/4;"";LIEN_HYPERTEXTE(GAUCHE(STXT($A1;TROUVE("µ";SUBSTITUE($A1;"http";"µ";COLONNES($A:A)));999);TROUVE(" ";STXT($A1;TROUVE("µ";SUBSTITUE($A1;"http";"µ";COLONNES($A:A)));999)&" "))))

à recopier vers la droite

Je te laisse tester

@+
 

Tibo

XLDnaute Barbatruc
Re : Parcourir un texte dans une cellule et récuperer à chaque fois une expression do

re,

Voir le fichier joint avec la formule proposée.

Il me semble que ça répond à ta demande.

Sinon, merci de nous donner plus de précisions sur ton souhait

@+
 

Pièces jointes

  • maurtoss.xlsx
    9.1 KB · Affichages: 42

david84

XLDnaute Barbatruc
Re : Parcourir un texte dans une cellule et récuperer à chaque fois une expression do

Bonsoir,
ci-joint une fonction personnalisée utilisant une expression rationnelle à tester et à peaufiner :
Code:
Function Http(c As String, rang As Byte) As String
Dim oRegExp As Object, matches As Object, i As Byte
Set oRegExp = CreateObject("vbscript.regexp")
With oRegExp
    .Global = True
    .MultiLine = True
    .Pattern = "http.{16}"
    If .test(c) = True Then
        Set matches = .Execute(c)
        If rang - 1 <= matches.Count - 1 Then Http = matches.Item(rang - 1)
    End If
End With
End Function
=Http($A1;COLONNES($A:A))
Formule à tirer vers la droite
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 488
Messages
2 088 866
Membres
103 979
dernier inscrit
imed