Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Vérification "poussée" de la validité d'un lien par macro

1 réponse
Avatar
Nicolas C.
Bonjour,

J'ai d=E9couvert ce forum il y a peu gr=E2ce au site jacxl.free.fr j'esp=E8=
re=20
pouvoir y =E9changer beaucoup d'informations avec vous tous.

Voila mon probl=E8me :

Je cherche =E0 v=E9rifier des liens via excel, j'ai repris le code pr=E9s=
ent=20
sur le site jacxl.free.fr et l'ai modifi=E9 =E0 ma sauce ;) Cela=20
fonctionne... presque !

Les liens =E0 v=E9rifier ne provoquent pas d'erreurs "graves" si la cible=
=20
n'existe pas, IE ou Firefox remplace automatiquement le nom de fichier=20
par un autre approchant sans afficher de page d'erreur !

Exemple :
"http://www.kalidil.com/images_produit/3XXV66.jpg" (cette image n'est=20
pas pr=E9sente sur le serveur)

sera remplac=E9e automatiquement par

"http://www.kalidil.com/images_produit/3XXV60.jpg" (image bien pr=E9sente=
=20
sur le serveur)

sans laisser aucun message d'erreur .

Je pense que c'est cela qui emp=EAche le code VBA de v=E9rification de=20
signaler le probl=E8me.

Voila le code de ma macro :

Private Declare Function OuvreInternet Lib "wininet" Alias "InternetOpenA=
" _
(ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName=
_
As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Lo=
ng
Private Declare Function InternetOpenUrl Lib "wininet" Alias=20
"InternetOpenUrlA" _
(ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal=20
lpszHeaders As String, _
ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal=20
dwContext As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet" (ByVal zaza=20
As Long) As Integer

Sub Test_page_Web_2()
For Counter =3D 2 To 500
Set URL_=E0_tester =3D Worksheets("listing TL").Cells(Counter, 12)
internet_ouvert =3D OuvreInternet("Test_validit=E9", 1, vbNullString,=20
vbNullString, 0) 'ouvre Internet
numURL =3D InternetOpenUrl(internet_ouvert, URL_=E0_tester, vbNullString,=
_
ByVal 0&, &H80000000, ByVal 0&) 'ouvre la page Web
If numURL > 0 Then Worksheets("donn=E9es").Cells(Counter, 9).FormulaR1C1 =
=3D=20
"OK" _
Else Worksheets("donn=E9es").Cells(Counter, 9).FormulaR1C1 =3D URL_=E0=
_tester
InternetCloseHandle numURL 'ferme la page
InternetCloseHandle internet_ouvert 'ferme Internet
Next Counter
End Sub

Je me demandais donc si il =E9tait possible de v=E9rifier quel code HTML =

renvoyai la page test=E9e et si on pouvais faire une v=E9rification =E0 p=
artir=20
de cela (voir : http://www.the-eggman.com/seminars/html_error_codes.htm)

Quelqu'un a une id=E9e ?

Merci de m'avoir lu.

Cordialement,

Nicolas

1 réponse

Avatar
Nicolas C.
http://files.codes-sources.com/fichier.aspx?id221&f=Form1.frm

Bout de code trouvé sur internet qui peut certainement aider à régl er le
problème, mais je n'ai pas les capacités pour le transformer et
l'inclure dans ma macro. Qui me montres ? :)

Cordialement,

Nicolas


Bonjour,

J'ai découvert ce forum il y a peu grâce au site jacxl.free.fr j'es père
pouvoir y échanger beaucoup d'informations avec vous tous.

Voila mon problème :

Je cherche à vérifier des liens via excel, j'ai repris le code pré sent
sur le site jacxl.free.fr et l'ai modifié à ma sauce ;) Cela
fonctionne... presque !

Les liens à vérifier ne provoquent pas d'erreurs "graves" si la cib le
n'existe pas, IE ou Firefox remplace automatiquement le nom de fichier
par un autre approchant sans afficher de page d'erreur !

Exemple :
"http://www.kalidil.com/images_produit/3XXV66.jpg" (cette image n'est
pas présente sur le serveur)

sera remplacée automatiquement par

"http://www.kalidil.com/images_produit/3XXV60.jpg" (image bien présen te
sur le serveur)

sans laisser aucun message d'erreur .

Je pense que c'est cela qui empêche le code VBA de vérification de
signaler le problème.

Voila le code de ma macro :

Private Declare Function OuvreInternet Lib "wininet" Alias
"InternetOpenA" _
(ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyNam e _
As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As L ong
Private Declare Function InternetOpenUrl Lib "wininet" Alias
"InternetOpenUrlA" _
(ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal
lpszHeaders As String, _
ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal
dwContext As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet" (ByVal zaza
As Long) As Integer

Sub Test_page_Web_2()
For Counter = 2 To 500
Set URL_à_tester = Worksheets("listing TL").Cells(Counter, 12)
internet_ouvert = OuvreInternet("Test_validité", 1, vbNullString,
vbNullString, 0) 'ouvre Internet
numURL = InternetOpenUrl(internet_ouvert, URL_à_tester, vbNullStrin g, _
ByVal 0&, &H80000000, ByVal 0&) 'ouvre la page Web
If numURL > 0 Then Worksheets("données").Cells(Counter, 9).FormulaR1C 1 =
"OK" _
Else Worksheets("données").Cells(Counter, 9).FormulaR1C1 = URL_ à_tester
InternetCloseHandle numURL 'ferme la page
InternetCloseHandle internet_ouvert 'ferme Internet
Next Counter
End Sub

Je me demandais donc si il était possible de vérifier quel code HTM L
renvoyai la page testée et si on pouvais faire une vérification à partir
de cela (voir : http://www.the-eggman.com/seminars/html_error_codes.htm )

Quelqu'un a une idée ?

Merci de m'avoir lu.

Cordialement,

Nicolas