Automatiser une extraction de nom de domaine d'une adresse URL

Résolu
papachat Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
 papachat -
Bonjour,

Je souhaiterais pouvoir automatiser l'extraction de noms de domaines des adresses URL que j'ai copiées en colonne dans Excel.
L'un des problèmes auquel je suis confronté est que toutes ces adresses n'ont pas la même "forme" initiale.

J'ai essayé :
- les macros en VBA, mais je bloque sur la rédaction de la boucle "do...while" et le "rechercher / remplacer" s'avère être trop lourd;
- de "convertir" en remplaçant les "." par des espaces pour ventiler dans différentes colonnes, mais les différentes "formes initiales" posent problème ... idem avec les fonctions "gauche" ou "droite".

Exemples:

Adresse de départ => ce que je souhaite obtenir
www.bing.com => bing
go.microsoft.com => microsoft
static2.pagesjaunes.fr => pagesjaunes
www.taratatatsointsoin.com => taratatatsointsoin
taratatatsointsoin.com => taratatatsointsoin

J'en passe et des meilleures ...

Si quelqu'un pouvait me donner un coup de main ...

Merci par avance ! :)




A voir également:

2 réponses

aziz_alg80 Messages postés 382 Date d'inscription   Statut Membre Dernière intervention   22
 
Salut;

En supossant que le nom du domaine se situt entre deux points : (exemple: .Bing. & .Microsoft. ) et que cette forme est la plus utilisée, tu peux extraire le nom du domaine en utilisant la Fonction: CONVERTIR (Menu Données / Zone outils de donnés / convertir

pour le faire :
Sélectionner la plage de cellules contenant les URLs
cliquer sur convertir
et suivre l'assistant en choisissant le point (.) comme séparateur

Avant de sélectionner la plage, mettre à part les URLs de forme différents que celle qui délimite le nom entre les deux points, pour les traiter séparément.

Bon courage
0
papachat Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour vos propositions (eriiic et toi) !
Je mets en application de ce pas :)
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonsoir,

une petite fonction personnalisée qui traite les cas que tu as cité :
Function nomDomaine(adr As String) As String
    Dim part As Variant
    part = Split(adr, ".")
    Select Case UBound(part)
    Case 0, 1
        nomDomaine = part(0)
    Case 2
        nomDomaine = part(1)
    End Select
End Function 

Mais comme tu as gardé le meilleur... ;-)
https://www.cjoint.com/?CBmv1Ckcl4b

eric

0
papachat Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour vos propositions (aziz_alg80 et toi) !
Je mets en application de ce pas :)
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
ok, n'oublie pas de mettre en résolu si c'est le cas.
eric
0
papachat
 
Bonjour eriiic,
Désolé pour le retour tardif, je n'étais pas dispo ces derniers jours ...
Au risque de paraître ridicule, je n'arrive pas à intégrer ta proposition de fonction dans ma macro ...
si j'ai bien compris :
1-on nomme la zone de "nomDomaine";
2-ensuite je m'enregistre une macro quelconque sur le sujet et je remplace les commandes par celles que tu m'as proposé (je sais, c'est un peu de la bidouille ... :)).
Par contre, la fonction s'insère après :
Sub Macro1
'
et se termine avant :
'
End Sub ?
Merci pour ton aide :)
A+
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

non, pas vraiment.
Pas besoin de Sub... End Sub puisqu'une fonction se déclare entre Function et End Function.
Tu copie-colles le code fourni, c'est tout.

Ensuite sur la feuille ça s'utilise comme une fonction d'excel.
Dans une cellule tu écris =nomDomaine(ta_cellule_URL)
Tu peux aussi faire 'insertion / fonction' et la choisir dans la catégorie 'fonctions personnalisées'.

eric
0
papachat
 
Super eriiic !
Un grand merci pour ton aide.
Problème résolu :)
0