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

Le
Nicolas C.
Bonjour,

J'ai découvert ce forum il y a peu grâce au site jacxl.free.fr j'espè=
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és=
ent
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 cible=

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ésente=

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 sProxyName=
_
As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Lo=
ng
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, vbNullString,=
_
ByVal 0&, &H80000000, ByVal 0&) 'ouvre la page Web
If numURL > 0 Then Worksheets("données").Cells(Counter, 9).FormulaR1C1 =
=
"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 HTML =

renvoyai la page testée et si on pouvais faire une vérification à p=
artir
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas C.
Le #5388701
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


Publicité
Poster une réponse
Anonyme