Création d'une macro pour nettoyer un tableau avec des regex

Aurelien74

XLDnaute Nouveau
Bonjour tout le monde,

Je cherche à faire une macro pour nettoyer un tableau composé d'une liste d'urls. C'est en fait assez basique, mais les expressions régulières et moi, ça n'a jamais été le grand amour, et avec VBA pas mieux :/

J'ai donc un fichier excel composé de plusieurs colonnes remplies d'urls parasitées par des chaines de caractères avant et après l'url. Ces chaines des caractères "parasites" commencent heureusement toujours de la même manière.

Concrètement, voici un exemple d'une url non nettoyée que j'ai au départ :

Code:
/url?q=http://www.domaine.com/dossier/index.html&sa=U&ei=PQndU535Gs-gogTK-YKgCA&ved=0CFMQ

Pour l'ensemble des urls qui composent mon tableau, je souhaite supprimer toutes les chaines de caractères qui se trouve avant http:// (/url?q=), mais également tout ce qui commence par &sa=
Donc au final, mon url exemple, une fois nettoyée doit ressembler à http://www.domaine.com/dossier/index.html

Merci pour votre aide :)
Aurélien
 

Paf

XLDnaute Barbatruc
Re : Création d'une macro pour nettoyer un tableau avec des regex

Bonjour

Une solution basée sur l'unique exemple fourni . Pas sûr que ça marche pour tout .

en A1 l'url ; en A2 (ou ailleurs...):
=STXT(A1;CHERCHE("http";A1);CHERCHE("&amp";A1)-CHERCHE("http";A1))

A+

Edit : désolé, je n'avais pas vu le besoin d'une macro.
 

camarchepas

XLDnaute Barbatruc
Re : Création d'une macro pour nettoyer un tableau avec des regex

Bonsoir,

Voici la portion de code pour filtrer les partie indésirables

Code:
Sub test()
Dim Chaine As String
Dim Epuré As String
Chaine = "/url?q=http://www.domaine.com/dossier/index.html&sa=U&ei=PQndU535Gs-gogTK-YKgCA&ved=0CFMQ"
Epuré = Mid(Chaine, InStr(1, Chaine, "http"))
Epuré = Mid(Epuré, 1, InStr(1, Epuré, "&") - 1)

End Sub
 

Aurelien74

XLDnaute Nouveau
Re : Création d'une macro pour nettoyer un tableau avec des regex

Merci :) Mais ça ne marche pas, sans doute ai-je manqué de précision.

j'ai donné l'url http://www.domaine.com/dossier/index.html à titre d'exemple, mais j'en ai des centaines différentes ! tout ce que je veux faire avec ma macro (et seulement via macro) c'est supprimer tout ce qui se trouve avant http et tout ce qui commence par &sa=. Je pense que c'est plus clair :)

Donc mes colonnes ressemblent à ça :
sdf6554http://www.truc.fr/fichier.php&sa=blablabla
sd5s6ds6d6sd6shttp://www.machin.com/fichier.php&sa=dsds65/ds4ds4ds
sd5s6ds6d6sd6shttps://www.nom-domaine.com/&sa=fffff?dddd
...

Ce qui devrait donner :
http://www.truc.fr/fichier.php
http://www.machin.com/fichier.php
https://www.nom-domaine.com/

Merci pour votre aide !
 
Dernière édition:

camarchepas

XLDnaute Barbatruc
Re : Création d'une macro pour nettoyer un tableau avec des regex

Bon , tu as du mal faire l'essai car ça marche parfaitement .

ensuite , il faut biensur compléter le code pour attaquer l'ensemble de ta liste ,

Encore une fois , où est le fichier de travail afin de faire les tests , ben oui pas là .

Merci de fournir un mini fichier reprennant la scructure du fichier à traiter .

Qu'est-ce qui ne marchge pas , as tu essayé au moins ?

Moi oui,
 

Aurelien74

XLDnaute Nouveau
Re : Création d'une macro pour nettoyer un tableau avec des regex

Oui camarchepas, j'ai essayé ;-) Je viens d'éditer mon message pour être plus précis. Je peux uploader un fichier exemple si tu veux, mais je ne suis pas sur que ce soit nécessaire. Ta macro marche si la structure de l'url (à garder) ne varie pas, sauf que dans mon tableau, elle sont toutes différentes !
 

camarchepas

XLDnaute Barbatruc
Re : Création d'une macro pour nettoyer un tableau avec des regex

Et bien ,

suite aux quelques exemples fournis avec parcimonie, je te prouve que cela fonctionne .


Appuies sur le sourire lorsque tu as ouvert le fichier .

Y'aurait peut être des ajustement à faire , mais avec le regex s'est pareil et comme dans les 2 cas tu n'y comprends rien .

de plus pour utiliser les regex , il faut référencer une bibliothéque et donc tu diminue la portabilité .

j'attends un exemple qui ne fonctionne pas afin d'améliorer ce filtre , mais pour le moment ca marche
 

Pièces jointes

  • demo_epure.xlsm
    15.4 KB · Affichages: 27

camarchepas

XLDnaute Barbatruc
Re : Création d'une macro pour nettoyer un tableau avec des regex

Et oui , juste paramètré pour que cela parcoourt de la ligne 2 à la ligne 4 , lise l'origine dans la colonne A et dépose le résultat en colonne B .

Mais les formules elles n'ont pas bougées , y'a longtemps que je les utilise , .....

Et oui , allez bonne soirée ,
 

Aurelien74

XLDnaute Nouveau
Re : Création d'une macro pour nettoyer un tableau avec des regex

Coucou camarchepas, encore moi ;)

Il me manque en fait une toute petite modification pour que la macro soit parfaite. Ce doit être très simple à faire, mais je rame... d'ailleurs je ne suis pas sur ce forum par hasard ;)

Alors voilà : j'aimerai que la macro nettoie toutes les colonnes A, B, C... X, sans en créer d'autres, mais juste en nettoyant les existantes. Merci d'avance pour ton aide !

Aurélien
 

Statistiques des forums

Discussions
312 233
Messages
2 086 466
Membres
103 225
dernier inscrit
PAPA ALIOUNE HANE