Extraire les liens URL à partir de texte dans des cellules, Excel VBA

Extraire les liens URL à partir de texte dans des cellules, Excel VBA

Voici un code VBA détaillé pour extraire les liens URL à partir de texte dans des cellules Excel, avec une explication détaillée.
Code VBA Excel pour Extraire les Liens URL à partir de Texte
Vue d’Ensemble
Ce macro VBA va parcourir une plage de cellules spécifiée (par exemple, la colonne A), rechercher les textes qui ressemblent à des URL (commençant par « http:// » ou « https:// »), et extraire ces URL dans une nouvelle colonne (par exemple, la colonne B). Il utilise des expressions régulières (RegExp) pour identifier les URL dans le texte.
Explication Étape par Étape
1. Configuration de l’Expression Régulière : Une expression régulière (RegExp) est utilisée pour identifier les URL qui commencent par http:// ou https://, suivies de noms de domaine valides et de chemins.
2. Parcours des Cellules : Le code parcourt chaque cellule dans la plage spécifiée et applique l’expression régulière pour trouver les URL correspondantes.
3. Extraction des URL : Lorsqu’une correspondance est trouvée, l’URL est extraite et placée dans une nouvelle colonne (ou dans l’endroit de votre choix).
4. Gestion de Plusieurs URL : Si une cellule contient plusieurs URL, toutes les URL seront extraites et listées dans la nouvelle colonne.
Code VBA Excel

Sub ExtraireURLsDepuisTexte()
    ' Déclarer les variables nécessaires
    Dim rng As Range
    Dim cell As Range
    Dim regex As Object
    Dim matches As Object
    Dim match As Variant
    Dim urlPattern As String
    Dim outputCol As Long
    Dim currentRow As Long
    ' Définir la plage à traiter (modifiez "A1:A10" selon votre besoin)
    Set rng = Range("A1:A10")
    ' Définir la colonne où les URLs extraites seront placées (colonne B dans ce cas)
    outputCol = 2
    currentRow = 1
    ' Initialiser l'objet d'expressions régulières
    Set regex = CreateObject("VBScript.RegExp")
    ' Définir le motif pour une URL (http ou https)
    urlPattern = "https?://[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+(/[a-zA-Z0-9-._?=&%]*)?"
    ' Définir le motif de l'expression régulière
    regex.IgnoreCase = True
    regex.Global = True
    regex.Pattern = urlPattern
    ' Parcourir chaque cellule de la plage définie
    For Each cell In rng
        ' S'assurer que la cellule contient du texte
        If Not IsEmpty(cell.Value) Then
            ' Trouver toutes les correspondances pour le motif URL dans le texte de la cellule
            Set matches = regex.Execute(cell.Value)
            ' Si des URLs sont trouvées, les traiter
            If matches.Count > 0 Then
                ' Parcourir toutes les correspondances et les écrire dans la colonne de sortie
                For Each match In matches
                    ' Placer chaque correspondance dans la colonne adjacente (colonne B)
                    Cells(currentRow, outputCol).Value = match.Value
                    currentRow = currentRow + 1 ' Passer à la ligne suivante
                Next match
            End If
        End If
    Next cell
    ' Informer l'utilisateur que le processus est terminé
    MsgBox "L'extraction des URLs est terminée.", vbInformation
End Sub

Explication du Code
1. Définir la Plage (Set rng = Range(« A1:A10 »)) : Cette ligne définit la plage de cellules dans laquelle nous souhaitons rechercher les URLs. Par défaut, cela est défini sur A1:A10, mais vous pouvez le modifier selon votre besoin (par exemple, A1:A100).
2. Créer l’Objet d’Expression Régulière (Set regex = CreateObject(« VBScript.RegExp »)) : Cette ligne initialise l’objet d’expressions régulières qui sera utilisé pour rechercher des URL dans le texte.
3. Motif d’URL (urlPattern = « https?://[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+(/[a-zA-Z0-9-._?=&%]*)? ») : Ce motif est utilisé pour trouver des URL qui commencent par http:// ou https://. L’expression régulière est suffisamment flexible pour capturer :

  • Des noms de domaine comme exemple.com
  • Des sous-répertoires et des paramètres de requête comme /chemin/vers/fichier?query=1

Détail du motif :

  • https?:// correspond à http:// ou https://
  • [a-zA-Z0-9-]+ correspond à la partie du nom de domaine.
  • (\.[a-zA-Z0-9-]+)+ correspond à l’extension du domaine (.com, .org, etc.).
  • (/[a-zA-Z0-9-._?=&%]*)? correspond aux chemins, répertoires et paramètres optionnels qui suivent le domaine.

4. Boucle à Travers les Cellules : La boucle For Each cell In rng parcourt chaque cellule de la plage définie. Si la cellule n’est pas vide, elle utilise l’objet regex pour rechercher les correspondances.
5. Extraction des Correspondances :

  • Set matches = regex.Execute(cell.Value) exécute l’expression régulière sur le texte de la cellule.
  • If matches.Count > 0 vérifie s’il y a des correspondances (URL) trouvées.
  • Pour chaque correspondance trouvée, Cells(currentRow, outputCol).Value = match.Value place l’URL dans la colonne adjacente (ici, la colonne B).
  • currentRow = currentRow + 1 garantit que chaque URL est placée sur une nouvelle ligne.

6. Message de Confirmation : Après que la boucle a terminé, une boîte de message informe l’utilisateur que l’extraction des URL est terminée.
Personnalisation Possible

  • Changer la Plage : Vous pouvez modifier la plage de cellules à traiter en ajustant Set rng = Range(« A1:A10″) pour couvrir une plus grande ou plus petite plage.
  • Extraction de Plusieurs URL : Le code gère déjà les cellules contenant plusieurs URL, chacune étant extraite et placée sur une ligne différente.
  • Changer la Colonne de Sortie : Vous pouvez changer la valeur de outputCol pour spécifier une autre colonne dans laquelle placer les URL extraites. Par exemple, en modifiant outputCol = 2 à outputCol = 3, les URL seront placées dans la colonne C.

Comment Utiliser le Code
1. Ouvrez votre fichier Excel.
2. Appuyez sur Alt + F11 pour ouvrir l’éditeur Visual Basic (VBA).
3. Allez dans Insertion > Module pour ajouter un nouveau module.
4. Collez le code fourni dans ce module.
5. Appuyez sur F5 ou allez dans Exécuter > Exécuter Sub/UserForm pour exécuter le code.
Ce code est utile si vous travaillez avec un ensemble de données contenant des textes avec des URL intégrées et que vous devez les extraire pour un traitement ultérieur.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x