Jordan a besoin de séparer une URL en ses composants. Si l’URL complète (http://www.xyz.com/business) est dans la colonne A, il aimerait avoir un moyen d’avoir le domaine principal (xyz ou xyz.com) dans la colonne B et le chemin (entreprise) dans la colonne C.

Il existe plusieurs façons de résoudre ce problème. Si vous n’avez besoin de le faire qu’une fois ou deux, il peut être plus simple d’utiliser l’outil Texte dans les colonnes, disponible dans l’onglet Données du ruban. Lorsque vous spécifiez comment vous voulez que l’outil sépare les chaînes, indiquez que vous souhaitez qu’il utilise la barre oblique (/) comme délimiteur. Selon la façon dont vos URL d’origine sont assemblées, cela peut nécessiter un peu de «nettoyage»

une fois l’outil terminé, mais c’est rapide et facile.

Si vous faites cela plus souvent, vous pourriez bénéficier de l’utilisation d’une formule pour faire la manipulation de l’URL. La première tâche consiste à extraire le domaine de l’URL, mais c’est un peu plus délicat qu’il n’y paraît. Par exemple, l’URL peut commencer par n’importe quel nombre de spécificateurs de protocole (tels que http: //, https: //, ftp: //, etc.) ou elle peut ne pas commencer du tout par un spécificateur de protocole. De plus, vous voudrez peut-être supprimer le « www ».

nomenclature, que certains considèrent comme étrangère. Pour savoir où commence le « vrai » domaine, vous pouvez utiliser cette formule dans la colonne B:

=IFERROR(FIND("www.",$A1)+4,IFERROR(FIND("://",$A1,1)+3,1))

Ce qu’il fait pour renvoyer la position du premier caractère après « www. », S’il est disponible. S’il n’est pas présent, il renvoie la position du premier caractère après « : // », s’il est présent. Si ce n’est pas là, le numéro 1 est renvoyé, car l’URL ne contient aucun préfixe de protocole ou www.

Avec cette valeur dans la colonne B, vous pouvez alors commencer à extraire les pièces que vous voulez. Ce qui suit, placé dans la colonne C, renverra le domaine, comme déjà décrit. Il renvoie essentiellement tout, de la position du caractère indiquée dans la colonne B jusqu’à la barre oblique suivante (/).

=MID(A1,B1,IFERROR(FIND("/",A1,B1)-B1,LEN(A1))

Si l’URL d’origine incluait «www.xyz.com», alors «xyz.com» est renvoyé par la formule. S’il contenait un sous-domaine différent autre que « www »

(comme « research.xyz.com »), le domaine complet, y compris le sous-domaine, est renvoyé. La fonction IFERROR est incluse au cas où il n’y aurait pas de barre oblique (/) après le nom de domaine. (La fonction FIND renvoie une erreur #VALUE si elle ne trouve pas l’élément qu’elle recherche.)

Pour choisir le chemin après le domaine, vous pouvez utiliser la formule suivante dans la colonne D:

=IFERROR(MID(A1,FIND("/",A1,B1)+1,LEN(A1)),"")

La formule renvoie tout après la première barre oblique (/) après le nom de domaine. S’il n’y a pas de barre oblique après le nom de domaine, cela ne renvoie rien. (Encore une fois, grâce à l’utilisation de la fonction IFERROR.)

La clé pour utiliser les formules ci-dessus, encore une fois, est la colonne d’aide dans la colonne B.Si vous vouliez vous passer de la colonne B, vous devrez remplacer dans les deux autres formules toutes les instances de B1 par la formule (sans le signe égal) qui appartient à B1. Cela rendrait, bien entendu, les deux autres formules assez longues, en particulier celle notée pour la colonne C.

Vous pouvez, si vous le souhaitez, créer une macro qui fait essentiellement la même chose, sans avoir besoin d’une colonne d’assistance. L’exemple suivant s’attend à ce que vous effectuiez une sélection, puis extrayez les parties de l’URL des cellules et les place dans les deux colonnes à droite de la sélection.

Sub GetURLParts()

Dim c As Range     Dim sRaw As String     Dim J As Integer          For Each c In Selection         sRaw = c.Text         J = InStr(sRaw, "://")

If J > 0 Then sRaw = Mid(sRaw, J + 3)

If LCase(Left(sRaw, 4)) = "www." Then             sRaw = Mid(sRaw, 5)

End If         J = InStr(sRaw, "/")

If J > 0 Then             c.Offset(0, 1) = Left(sRaw, J - 1)

c.Offset(0, 2) = Mid(sRaw, J + 1)

Else             c.Offset(0, 1) = sRaw             c.Offset(0, 2) = ""

End If     Next c End Sub

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (13320) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.