XL 2016 Recherche d'url valides

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

azraelle

XLDnaute Nouveau
Bonjour à tous, c'est mon premier post dans ce forum. Je ne suis pas débutante sur Excel, mais je ne suis pas experte non plus. J'utilise des macros régulièrement pour automatiser des tâches dans mon boulot, mais là je sèche.
J'ai un fichier avec une seule colonne qui comprend des URL.
Mon souci : avoir dans la deuxième colonne OK si l'URL est valide, et NOK si elle ne l'est pas.
Comme mon fichier fait environ 160 000 lignes, je ne suis pas très partant pour vérifier les URL à la main...
Je travaille sur Excel 2016.
Merci d'avance pour l'aide que vous pourrez m'apporter, bonne soirée 🙂
 
Solution
Hello,
la première erreur c'est parce que tu as ?v901 à la fin de ton url. La deuxième je ne sais pas .
J'ai changé le code . L'objet qui est utilisé pour les requêtes est plus élaboré . Si le nom d'image se termine par ?xxxx je supprime cette partie. Quand il y a une erreur je ne bloque pas je passe à l'image suivante (il n'y ni OK ni NOK sur la ligne)
VB:
Sub DownloadImages()
Dim myURL As String
Dim cell, dlPath$, NomImg$, imgSrc$, splitter
Dim WinHttpReq As Object, oStream As Object, RegEx As Object, Matches As Object
Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
Set oStream = CreateObject("ADODB.Stream")
Set RegEx = CreateObject("VBScript.RegExp")
RegEx.Pattern = "[^/\\]+$" ' Motif pour extraire nom d'image dans URL...
Dans le gestionnaire de Noms (Formules/Gestionnaire de Noms) il faut que tu changes la dernière ligne à utiliser dans la plage nommée Urls :
Regarde la pièce jointe 1212269
cliquer sur le bouton v (vert) pour valider
Yes, ça fonctionne ! J'ai essayé avec toute la colonne A, ça bug. Dommage, ça m'aurait évité de changer la plage à chaque fichier.
Encore merci pour toutes tes recherches, et ta patience 🙂 Dès demain je m'y colle sur mon gros fichier !
 
Hello,
la première erreur c'est parce que tu as ?v901 à la fin de ton url. La deuxième je ne sais pas .
J'ai changé le code . L'objet qui est utilisé pour les requêtes est plus élaboré . Si le nom d'image se termine par ?xxxx je supprime cette partie. Quand il y a une erreur je ne bloque pas je passe à l'image suivante (il n'y ni OK ni NOK sur la ligne)
VB:
Sub DownloadImages()
Dim myURL As String
Dim cell, dlPath$, NomImg$, imgSrc$, splitter
Dim WinHttpReq As Object, oStream As Object, RegEx As Object, Matches As Object
Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
Set oStream = CreateObject("ADODB.Stream")
Set RegEx = CreateObject("VBScript.RegExp")
RegEx.Pattern = "[^/\\]+$" ' Motif pour extraire nom d'image dans URL
dlPath = "D:\tmp\dlImages\"
For Each cell In Sheets("Feuil1").Range("Urls")
    imgSrc = cell
    Set Matches = RegEx.Execute(imgSrc)
    If Matches.Count = 1 Then
       splitter = Split(Matches(0), "?")
       NomImg = splitter(0)
       Debug.Print NomImg
    Else
       Cells.Offset(0, 3) = "Nom d'image incorrect"
       GoTo NextIteration
    End If
    On Error GoTo NextIteration
    WinHttpReq.Open "GET", imgSrc, False
    WinHttpReq.send
   ' Debug.Print imgSrc, WinHttpReq.Status
    If WinHttpReq.Status = 200 Then
       oStream.Open
       oStream.Type = 1
       oStream.Write WinHttpReq.responseBody
    
       oStream.SaveToFile dlPath & NomImg, 2 ' 1 = no overwrite, 2 = overwrite
       oStream.Close
       cell.Offset(0, 1) = "OK"
       cell.Offset(0, 3) = NomImg
    Else
       cell.Offset(0, 1) = "NOK"
       cell.Offset(0, 2) = WinHttpReq.Status
    End If
NextIteration:
Next cell
Set WinHttpReq = Nothing: Set oStream = Nothing: Set Matches = Nothing: Set RegEx = Nothing
MsgBox "Vérification terminée !"
End Sub
Ne pas oublier de changer le dlPath dans le code 😉

Ami calmant, J.P
 
Dernière édition:
Hello,
la première erreur c'est parce que tu as ?v901 à la fin de ton url. La deuxième je ne sais pas .
J'ai changé le code . L'objet qui est utilisé pour les requêtes est plus élaboré . Si le nom d'image se termine par ?xxxx je supprime cette partie. Quand il y a une erreur je ne bloque pas je passe à l'image suivante (il n'y ni OK ni NOK sur la ligne)
VB:
Sub DownloadImages()
Dim myURL As String
Dim cell, dlPath$, NomImg$, imgSrc$, splitter
Dim WinHttpReq As Object, oStream As Object, RegEx As Object, Matches As Object
Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
Set oStream = CreateObject("ADODB.Stream")
Set RegEx = CreateObject("VBScript.RegExp")
RegEx.Pattern = "[^/\\]+$" ' Motif pour extraire nom d'image dans URL
dlPath = "D:\tmp\dlImages\"
For Each cell In Sheets("Feuil1").Range("Urls")
    imgSrc = cell
    Set Matches = RegEx.Execute(imgSrc)
    If Matches.Count = 1 Then
       splitter = Split(Matches(0), "?")
       NomImg = splitter(0)
       Debug.Print NomImg
    Else
       Cells.Offset(0, 3) = "Nom d'image incorrect"
       GoTo NextIteration
    End If
    On Error GoTo NextIteration
    WinHttpReq.Open "GET", imgSrc, False
    WinHttpReq.send
   ' Debug.Print imgSrc, WinHttpReq.Status
    If WinHttpReq.Status = 200 Then
       oStream.Open
       oStream.Type = 1
       oStream.Write WinHttpReq.responseBody
   
       oStream.SaveToFile dlPath & NomImg, 2 ' 1 = no overwrite, 2 = overwrite
       oStream.Close
       cell.Offset(0, 1) = "OK"
       cell.Offset(0, 3) = NomImg
    Else
       cell.Offset(0, 1) = "NOK"
       cell.Offset(0, 2) = WinHttpReq.Status
    End If
NextIteration:
Next cell
Set WinHttpReq = Nothing: Set oStream = Nothing: Set Matches = Nothing: Set RegEx = Nothing
MsgBox "Vérification terminée !"
End Sub
Ne pas oublier de changer le dlPath dans le code 😉

Ami calmant, J.P
Yes, merci, je vois ça demain, et promis, j'oublie pas de changer le dlpath 😉
Encore une énorme merci, bonne soirée,
Brigitte
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
16
Affichages
643
Réponses
24
Affichages
6 K
Retour