Re: En VBA gérer la boite windows 'Télécharger un fichier'
#11
Aspirant XLPages

Inscription: 07/03/2008
De Amiens

Messages: 33

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003,2010
Posté le : 02-10-2009 11h19

Bonjour Guy,

A partir de tes renseignements, j'ai effectué un test sur un fichier présent sur une page perso.
Voici le code du module excel

'----------------------Début------------------------------
'API de telechargement - A mettre dans les déclarations de var
Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
    "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, _
    ByVal szFileName As String, ByVal dwReserved As Long, _
    ByVal lpfnCB As Long) As Long


Sub telecharge()
       
        Dim errcode As Long
Dim URL As String
Dim LocalFilename As String
            'On spécifie le chemin de l'image web
       URL = "http://pagesperso-orange.fr/j.bruiant/Glisy1/pages/DamesPic.jpg"
       
            'On spécifie le chemin ou l'on veut enregistrer ce fichier
            '(vb.app.path donne le chemin du dossier de l'appli vb)
        LocalFilename = "F:\TPE_EtudeOpit\DamesPic.jpg"
            'On appelle la fonction api de téléchargement
        errcode = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
        If errcode = 0 Then
            'Message de confirmation que l'image a bien été téléchargée
            MsgBox "Fichier reçu"
            'Comme on a bien reçu l'image on peut la charger
                    
        Else
            'Sinon on affiche le message d'erreur
            MsgBox "Echec"
        End If
End Sub

'--------------FIN--------------------------------

Super cela fonctionne pour la récupération d'un fichier quelconque.

Mon problème n'est pourtant pas résolu.
Le lien suivant
'http://boutique-datafactory.com.francetelecom.fr/page/catalogue?p=5&d=6&u=1&r=481&dl=10

n'est pas le fichier.
Il existe un code (script) à l'intérieur de la page qui pointe sur cet élément.

Pour plus de compréhension, je joins la fichier htlm de la page.
Si l'on clique sur l'un des éléments Commerce_Marché_PME l'on provoque l'affichage de la page
qui va provoquer l'apparition de la boite de  téléchargement.



Donc, j'ai amélioré ma connaissance sans atteindre le nirvana
Pièce jointe:
zip catalogue.zip   [ Taille: 5.41 Ko - Téléchargements: 746 ]
Hors Ligne
Rapport   Haut 

Re: En VBA gérer la boite windows 'Télécharger un fichier'
#12
Accro XLPages

Inscription: 09/01/2008
De Montréal, Québec

Messages: 463

Système d'exploitation:
PC
Version Excel utilisée:
97 à 2016
Posté le : 02-10-2009 12h14
Bonjour JackyAmiens,

Citation :
Guy a écrit :

À ce que je vois tu cherches à te compliquer la vie, c'est parfois bon signe mais pas toujours.
À la lecture de ton premier courriel le a href="?p=5&d=6&u=-1&r=481&dl=0" me semble du Server Side Scipting (ASP ou PHP ou je-ne-sais-trop) qui n'est pas utilisable tel quel.
...


Le je-ne-sais-trop est du JavaScript en Client Side Scripting plutôt!  et à la lecture du code de la page web envoyé(2009-T03)_Commerce_Marché_PME pointe vers
catalogue.html?p=5&d=6&u=-1&r=481&dl=6. Les paramètres suivant le ? sont interprété dans le code js d'un des fichiers script (peut-être boutique.js ?) comme tu le notes fort pertinemment. Alors, à moins d'avoir accès au code je ne vois pas bien le moyen de sortir de cette ornière.

L'ouverture du formulaire de téléchargement est provoqué par une URL du genre hachetétépé://trucchose.../.../Machin.[extension de fichier ou d'exécutable] (hachetétépé ne sert qu'à empêcher Xoops truc de reconnaître l'URL et de zigouiller la ligne)

Cette extension est fournie par le script, c'est cette cible que tu souhaites récupérer sans passer par le formulaire de téléchargement. Faudra que tu déroutes le code JavaScript.

C'est une page d'intranet ok.  As-tu essayé de copier la page sur ton poste. Les scripts seront (devraient être) importés dans un dossier du genre
.../.../catalogue.html_fichiers et tu auras (devrais avoir) accès au code JavaScript. À partir de là papier, crayon, café et mirettes grandes ouvertes seront de mise.

(Détail et remarque d'un farouche partisan des standards web : la page roule en charset=windows-1252 d'où les caractères é affichés dans Firefox. J'ai modifié en charset=utf-8 un standard du w3c et (2009-T03)_Commerce_Marché_PME s'affiche correctement dans Firefox, IE, et al.Ce truc est Microsoft-centric, il s'affiche à merveille dans IE mais pas ailleurs...)

Cordialement et désolé du peu,

Guy








Edité par Guy le 02/10/2009 14:09:54

Hors Ligne
Rapport   Haut 

Re: En VBA gérer la boite windows 'Télécharger un fichier'
#13
Aspirant XLPages

Inscription: 07/03/2008
De Amiens

Messages: 33

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003,2010
Posté le : 02-10-2009 16h00

Re Guy,

En programmation, je suis plutôt un bidouilleur qui pioche à droite à gauche des bouts de code et monte des usines à gaz.

Mon but, me faciliter la vie dans le travail des tâches courantes et répétitives.

Là c'est plutôt loupé

Reste la solution du chargement manuel ou à obtenir la livraison via l'emetteur du site avec tous les obstacles d'habilitations.

Merci d'avoir consacrer du temps et délivrer ce bout de code bien pratique pour le téléchargement de fichier sur le web.

Cdlt Jacky


Hors Ligne
Rapport   Haut 

Re: En VBA gérer la boite windows 'Télécharger un fichier'
#14
Aspirant XLPages

Inscription: 07/03/2008
De Amiens

Messages: 33

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003,2010
Posté le : 25-07-2011 16h09
Bonjour,

Après un temps de réflexion, je viens de refaire une tentative avec l'API de Guy, grand merci à lui.

Et le téléchargement du fichier via le lien fonctionne correctement

Déclaration de l'API
Fonction de téléchargement (à améliorer)

Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
    "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, _
    ByVal szFileName As String, ByVal dwReserved As Long, _
    ByVal lpfnCB As Long) As Long

Public Function Telecharger(url, FicLocal)
 Dim chag As Long
 'On appelle la fonction api de téléchargement
     chag = URLDownloadToFile(0, url, FicLocal, 0, 0)
     PauseWait (10) 'ajuster en fonction du temps de téléchargement. Il serait bon de faire un contrôle de présence du fichier
End Function

Vive la patience...

Hors Ligne
Rapport   Haut 

Re: En VBA gérer la boite windows 'Télécharger un fichier'
#15
Débutant XLPages

Inscription: 20/09/2012

Messages: 1

Système d'exploitation:
PC
Version Excel utilisée:
2003
Posté le : 20-09-2012 20h51
Bonjour Jacky,

je suis actuellement confronté au même problème que toi. Au cours de mes recherches je suis tombé sur cette fonction API URLDownloadToFile, mais mon souci c'est que je n'ai jamais pu/su repérer l'adresse URL à partir de laquelle faire le téléchargement (je pense de plus qu'elle est générée dynamiquement par le serveur...).
Vu ton dernier message, tu y es parvenu ; comment as-tu fait ?

Merci d'avance
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes