formateur informatique

Lire le contenu d'un fichier sur un serveur distant

Accueil  >  Bureautique  >  Access  >  Access VBA  >  Lire le contenu d'un fichier sur un serveur distant
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Importer du contenu Web

Avec cette nouvelle astuce VBA Access, nous allons apprendre à récupérer le contenu de pages distantes hébergées sur le Web. Il peut s'agir de la source HTML de ces pages pour dénicher des informations précises ou encore de fichiers de type texte, proposés au téléchargement ou à la consultation.

Base de données Access à télécharger
Pour mener à bien cette étude, nous suggérons d'appuyer les travaux sur un formulaire offrant un bouton d'importation ainsi qu'une zone de saisie pour spécifier l'URL cible.
  • Télécharger le fichier compressé lire-sur-le-web.rar en cliquant sur ce lien,
  • Le décompresser dans le dossier de votre choix,
  • Double cliquer sur le fichier réceptionné pour l'ouvrir dans Access,
  • Cliquer sur le bouton Activer le contenu du bandeau de sécurité,
  • Dans le volet de navigation sur la gauche, double cliquer sur le formulaire fParcourir,
Formulaire Access pour importer des données Internet en VBA

Ainsi, nous l'exécutons et l'affichons. Une zone de texte est placée sur la partie supérieure. Elle attend l'URL à consulter. Juste en-dessous, figure une large et haute autre zone de texte. Elle est paramétrée au format texte enrichi pour interpréter les attributs de mise en forme. Sur la droite, un bouton doit lancer la consultation de l'URL afin d'en restituer le contenu dans cette zone enrichie.
  • A gauche du ruban Accueil, cliquer sur la flèche du bouton Affichage,
  • En bas des propositions, choisir le mode Création,
  • Sur le formulaire en conception, cliquer sur la première zone de texte, celle du haut,
En consultant sa feuille de propriétés, vous constatez qu'elle est nommée adresse. L'autre zone de texte est intitulée contenu tandis que le bouton se nomme importer.
  • Pour cette première zone de texte, activer l'onglet Evénement de sa feuille de propriétés,
  • Cliquer sur le petit bouton associé à son événement Au clic,
Ainsi, nous basculons dans l'éditeur VBA Access entre les bornes de la procédure existante qui est nommée adresse_Click. Vous notez également la présence d'une autre procédure : Form_Current. Son code intervient à chaque activation du formulaire. Toutes deux ont été créées pour des raisons d'ergonomie. La seconde charge une indication par défaut, une invite, dans la zone de texte pour l'URL. La première supprime ce message, dans la mesure où il est toujours en place (If), pour permettre à l'utilisateur de saisir directement l'adresse à consulter.

Au Clic sur le bouton
Maintenant que les présentations sont faites, nous devons commencer par attacher un code VBA Access au bouton du formulaire.
  • En haut de la feuille de code, déployer la liste déroulante de gauche,
  • Dans l'énumération des objets, choisir le bouton importer,
Attacher un code VBA à un bouton de formulaire Access

C'est ainsi, sans revenir sur le formulaire pour sélectionner le bouton, que nous créons la procédure événementielle importer_Click. Son code se déclenchera au clic sur le bouton importer.

La variable HTTP
Ensuite, nous avons besoin de déclarer une variable dont la vocation sera d'instancier la classe des requêtes http. C'est ainsi que nous pourrons émettre une demande sur le Web, à destination de l'Url que nous souhaitons analyser.
  • Dans les bornes de la procédure, ajouter la déclaration de variable suivante :
...
Dim demandeHTTP As Object

...

Nous la nommons demandeHTTP et nous la typons comme un objet au sens large. Elle prendra véritablement son type au moment de l'instanciation de la classe.

Vérifier l'URL saisie
Avant de poursuivre le traitement, nous devons nous assurer que l'utilisateur a bien inscrit une Url à analyser, dans la zone de saisie nommée adresse. ...
If adresse.Value <> "" Then
contenu.Value = ""

End If
...


Si une Url est bien inscrite (adresse.Value <> ""), nous commençons par réinitialiser la zone de texte enrichi (contenu.Value). Ainsi, nous effaçons le précédent contenu Web importé pour laisser place au nouveau.

La classe HTTP
Il est temps d'instancier la classe permettant d'émettre des requêtes distantes, sur le Web donc.
  • A la suite du code dans l'instruction conditionnelle, réaliser l'instanciation suivante :
...
Set demandeHTTP = CreateObject("MSXML2.ServerXMLHTTP")
...


Comme souvent, nous dégainons la fonction VBA CreateObject pour instancier une classe. Avec le paramètre MSXML2.ServerXMLHTTP, nous désignons celle des requêtes http. Et c'est ainsi que nous initialisons (Set) notre objet demandeHTTP. De fait, il hérite des propriétés et méthodes de cette classe.

La demande HTTP
  • Toujours à la suite dansl'instruction conditionnelle, ajouter les lignes VBA suivantes :
...
Call demandeHTTP.Open("GET", adresse.Value)
demandeHTTP.Send

contenu.Value = demandeHTTP.ResponseText

Set demandeHTTP = Nothing
...


C'est la méthode héritée Open qui permet d'ouvrir la demande http. Mais dans la syntaxe, nous devons l'appeler (Call). En premier paramètre (GET), nous lui indiquons que nous souhaitons obtenir des informations à partir d'une Url. Cette URL, nous la lui fournissons en second paramètre. Ensuite, nous envoyons la demande http grâce à la méthode héritée Send. Dès lors, nous exploitons la propriété héritée ResponseText pour restituer le contenu du fichier distant ou le corps de la page Web, dans la zone enrichie (contenu.Value). A l'issue du traitement, nous détruisons l'objet http en le réinitialisant (Set) à Nothing, pour le sortir de la mémoire de l'ordinateur.

Récupérer le contenu distant
Le code VBA est terminé. Il est donc très simple. Mais nous allons le voir, il est efficace.
  • Enregistrer les modifications (CTRL + S) et revenir sur le formulaire (ALT + Tab),
  • Exécuter ce dernier, par exemple avec la touche F5 du clavier,
  • Dans la première zone de texte, coller une URL,
Il peut s'agir de l'adresse d'un fichier distant ou encore de l'adresse d'une page Web.
  • Cliquer alors sur le bouton Importer,
Récupérer les données d-un fichier distant en VBA Access

Dans l'exemple de la capture ci-dessus, nous questionnons un fichier Csv, hébergé par le site Bonbache.fr, pour les besoins d'une formation sur la facturation clients. Et comme vous pouvez le voir, nous récupérons bien toutes les données, séparées par le délimiteur du point-virgule (;).

Récupérer le contenu d-une page Web sur un formulaire Access en VBA

Dans ce deuxième exemple, nous questionnons une page du dictionnaire Larousse, pour obtenir la définition du mot dithyrambique. Il convient d'utiliser l'ascenseur pour faire défiler le contenu vers le bas et voir apparaître cette définition. Bien sûr, ce contenu semble parfois déstructuré car toutes les balises Html ne peuvent pas être interprétées. Certaines sont en effet très spécifiques. Quoiqu'il en soit, nous accédons tout de même au contenu distant, avec les informations souhaitées qui sont prélevées.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn