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

Résolu
papachat Messages postés 3 Statut Membre -  
 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 ! :)

2 réponses

  1. aziz_alg80 Messages postés 427 Statut Membre 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
    1. papachat Messages postés 3 Statut Membre
       
      Merci pour vos propositions (eriiic et toi) !
      Je mets en application de ce pas :)
      0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    1. papachat Messages postés 3 Statut Membre
       
      Merci pour vos propositions (aziz_alg80 et toi) !
      Je mets en application de ce pas :)
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      ok, n'oublie pas de mettre en résolu si c'est le cas.
      eric
      0
    3. 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
    4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
    5. papachat
       
      Super eriiic !
      Un grand merci pour ton aide.
      Problème résolu :)
      0