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

VBA Access Discussion :

Ouvrir une URL Wikipedia valide depuis Access [AC-365]


Sujet :

VBA Access

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut Ouvrir une URL Wikipedia valide depuis Access
    Bonjour à tous,

    Je suis actuellement en train de mettre en place une fonction permettant d'ouvrir directement une page Wikipedia concernant une Commune spécifique de ma bdd.

    Curieusement, certaines pages s'ouvrent parfaitement, d'autres provoquent une erreur "6" ou 404, je suppose que parce qu’il y aurait des différences d'orthographe minimes entre ce qui existe sur le Wiki pointé et le contrôle contenant le nom de la commune et aussi le manque de timer... (Ou bien lorsque cette commune ne figure pas encore dans le Wiki...)

    J'avais mis en place une concaténation avec le département de la commune tel que je l'observais dans l'URL de Wikipedia (nomcommune + "_(nom département)", car les wikis précisent souvent le département quand plusieurs communes ont le même nom...
    Cela marchait aussi, sauf dans le cas où le wiki ne renseignait pas celui-ci, provoquant là aussi une erreur...

    Doit on nécessairement utiliser l' API de Wikipedia pour créer depuis vba une URL valide à tous les coups ?. (j'ai l'impression que ce n'est pas approprié / nécessaire)
    Existe-t'il des URL spécifiques à utiliser qui seraient mieux ou directement interprétées par Wikipedia ?

    Je voudrais aussi :

    1/ Rendre possible l'attente d'une redirection quand une erreur 404 est renvoyée
    2/ Savoir si l'on peut envoyer des strings transformées en UTF-8 ou du genre pour éviter les erreurs (et que Wikipedia saura les interpréter / corriger)
    3/ Pouvoir retomber sur une page de résultats ou page principale Wiki dont le champ de recherche serait automatiquement rempli avec ce qu'il y a dans le controle de formulaire au cas ou aucun résultat soit retourné avec l'URL provenant de VBA.

    Quelle serait votre approche ?

    Merci d'avance pour vos réponses

    Voici une ébauche de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Public Function OuvrirWikipediaCommune(ctl As Control)
     
        Dim strLink As String
        Dim ctlTxt As String
        Dim departement As String
     
         On Error GoTo gestionerreur
     
        ctl.SetFocus
     
        ctlTxt = ctl.Text
        strLink = "https://fr.wikipedia.org/wiki/" + ctlTxt
     
        Debug.Print strLink
        Application.FollowHyperlink strLink
     
    gestionerreur:
     
        If err.Number <> 0 Then
            If err.Number = 6 Then
            MsgBox "page introuvable"
            End If
        End If
     
    End Function

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    Une façon de faire est de d'abord tester le lien en mentionnant le nom de la commune et du département, et si la page n'est pas trouvée réessayer en ne mentionnant que le nom de la commune. L'adresse URL est à adapter pour convertir les lettres accentuées en code UTF8, fait avec la fonction EnUTF(). Exemple sur double-clic sur nom de la commune:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Private Sub CmnNom_DblClick(Cancel As Integer)
        Dim sCmn As String
        On Error Resume Next
        '--- essai avec nom commune + département
        sCmn = EnUTF(Me.CmnNom & "_(" & Me.CmnDpt & ")")
        Debug.Print sCmn
        Application.FollowHyperlink "https://fr.wikipedia.org/wiki/" & sCmn
        If Err.Number <> 0 Then
            If Err.Number = 6 Then  '--- pas trouvé
                Err.Clear
                '--- essai avec nom commune seul
                sCmn = EnUTF(Me.CmnNom)
                Debug.Print sCmn
                Application.FollowHyperlink "https://fr.wikipedia.org/wiki/" & sCmn
                If Err.Number <> 0 Then '--- pas trouvé
                    If Err.Number = 6 Then
                        Err.Clear
                        MsgBox "Cette commune n'existe pas dans Wikipedia." & vbLf & _
                               "Mauvaise orthographe ?"
                    Else
                        MsgBox "Erreur n°" & Err.Number & vbLf & _
                            Err.Description
                    End If
                End If
            Else
                MsgBox "Erreur n°" & Err.Number & vbLf & _
                        Err.Description
            End If
        End If
        On Error GoTo 0
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Public Function EnUTF(s As String) As String
        s = Replace(s, " ", "_")        '--- pour Wiki, espaces à remplacer par un souligné
        s = Replace(s, "à", "%C3%A0")
        s = Replace(s, "â", "%C3%A2")
        s = Replace(s, "é", "%C3%A9")
        s = Replace(s, "ê", "%C3%AA")
        s = Replace(s, "è", "%C3%A8")
        s = Replace(s, "ë", "%C3%AB")
        s = Replace(s, "î", "%C3%AE")
        s = Replace(s, "ï", "%C3%AF")
        s = Replace(s, "ô", "%C3%B4")
        s = Replace(s, "û", "%C3%BB")
        s = Replace(s, "ù", "%C3%B9")
        s = Replace(s, "ç", "%C3%A7")
        EnUTF = s
    End Function
    Cordialement.
    Fichiers attachés Fichiers attachés

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    Mille mercis pour votre réponse et générosité ...

    Tout marche nickel !

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

Discussions similaires

  1. Ouvrir une URL depuis un WinForm
    Par Djekill dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/04/2009, 15h13
  2. [ASP] Ouvrir une url
    Par castaka dans le forum ASP
    Réponses: 2
    Dernier message: 04/08/2005, 11h02
  3. Ouvrir un fichier excel depuis access
    Par ptitegrenouille dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 03/05/2005, 11h47
  4. Ouvrir une URL en C/C++ sous Win32
    Par pykoon dans le forum MFC
    Réponses: 7
    Dernier message: 26/04/2005, 09h08
  5. [Forms9i]Ouvrir une page HTML depuis forms
    Par benjamin50 dans le forum Forms
    Réponses: 13
    Dernier message: 17/03/2005, 16h54

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