IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Contrôler si un url existe [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 109
    Points : 108
    Points
    108
    Par défaut Contrôler si un url existe
    Bonjour,

    J'aimerais contrôle si une url est valide depuis excel et que le statut du call http soit retourné, y compris les erreurs 404.

    Merci

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 942
    Points
    55 942
    Billets dans le blog
    131
    Par défaut
    Salut.

    Voici une fonction qui teste non pas l'existence d'une url mais qu'il y a bien eu une réponse à la requête html. Elle ne permet pas de tester qu'une réponse 404 a été générée. En fait, le Send essaie de récupérer le code html de la page appelée et:
    • génère une erreur si rien n'a pu être récupéré alors que la méthode est synchrone (false comme troisième paramètre de Open);
    • ne génère pas d'erreur mais le StatusText ne renvoie rien.




    L'erreur récupérée en mode synchrone ne spécifie pas clairement que c'est une 404 mais que "L'URL ou le nom de serveur n'a pas pu être résolu". Le code ci-dessous utilise la méthode synchrone.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function UrlExists(Link As String) As Boolean
      Dim urlRequest As Object
     
      On Error GoTo EndHandler
      Set urlRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
      With urlRequest
        .Open "GET", Link, False
        .Send
        UrlExists = .StatusText = "OK"
      End With
     
    EndHandler:
    End Function
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 109
    Points : 108
    Points
    108
    Par défaut
    Merci beaucoup,

    Cette fonction me retourne toujours VRAI, même en cas d'erreur 404. Y-a-t-il un moyen de catcher cette erreur ?

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 942
    Points
    55 942
    Billets dans le blog
    131
    Par défaut
    Tu es sûr de l'avoir bien retranscrite?

    Nom : 2019-05-29_082704.png
Affichages : 763
Taille : 10,4 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 109
    Points : 108
    Points
    108
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Tu es sûr de l'avoir bien retranscrite?
    Oui: comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function UrlExists(Link As String) As Boolean  Dim urlRequest As Object
     
      On Error GoTo EndHandler
      Set urlRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
      With urlRequest
        .Open "GET", Link, False
        .send
        UrlExists = .statusText = "OK"
      End With
     
    EndHandler:
    End Function
    Les URLS que je teste sont les suivantes:
    WorkspaceUrl Statut URL
    https://groupee.sharepoint.com/sites/c17/c-128717958 DD VRAI
    https://groupee.sharepoint.com/sites/c15/c-128884048 VRAI
    https://groupee.sharepoint.com/sites/c22/c-128730546 VRAI

    La première devrait retourner un 404

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 942
    Points
    55 942
    Billets dans le blog
    131
    Par défaut
    Cette url ne renvoie pas un 404 chez moi, mais une "page d'erreur" renvoyée par ton serveur Sharepoint... Ce n'est pas une erreur au sens technique du terme mais une réponse qui, sur le plan http, est valide. Ca ne saurait pas être interprété comme une erreur...

    Le winHttpRequest ne peut interpréter comme erreur que les erreurs génériques qu'un explorateur rencontrerait, mais pas une "page d'erreur" qui est en fait une page parfaitement valide de ton site, au plan http .
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 109
    Points : 108
    Points
    108
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Cette url ne renvoie pas un 404 chez moi, mais une "page d'erreur" renvoyée par ton serveur Sharepoint...
    Merci pour la réponse. Y-a-t-il un moyen de détecter cette erreur ?

  8. #8
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 942
    Points
    55 942
    Billets dans le blog
    131
    Par défaut
    Le problème est que le texte de la page est récupéré par WinHttpRequest avant d'être interprété par l'explorateur. Ce n'est donc pas le code source de la page, mais ce qui permet à l'explorateur de le créer. Or, la page incriminée est apparemment recomposée par du javascript/Ajax (probablement sur le OnLoad). Le code source de la page affichée (et donc retravaillée par le javascript via l'explorateur web) ne correspond donc pas au texte récupéré par le WinHttpRequest... Dès lors, je ne vois pas trop comment on pourrait récupérer quelque chose d'exploitable, car c'est le code source de la page (après traitement et affichage par le navigateur) qui contient du texte qui pourrait éventuellement être analysé pour déduire le résultat métier non conforme (<> résultat technique conforme) de la requête.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tester si un URL existe via VBA
    Par Rdesfx dans le forum Access
    Réponses: 3
    Dernier message: 01/08/2006, 19h23
  2. Teste si url existe
    Par matique dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/04/2006, 11h03
  3. Comment savoir si une URL existe
    Par funzynator dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 07/11/2005, 20h56
  4. Tester si une variable passé en url existe
    Par ran_hery dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 02/08/2005, 14h06
  5. [URL] Comment savoir si une URL existe?
    Par jse dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 07/10/2004, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo