Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

download d'un fichier sans passer par IE en vba

3 réponses
Avatar
Michel Angelosanto
Bonjour,

j'enregistre automatiquement des fichier avec le code suivant, or au bureau,
le fait que ça demande un login et pass pour sortir de l'intranet, ça ne
marche pas.
Y a t-il une possibilité de contrer ce problème?

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

Function DownloadPage(ByVal url As String, ByVal FileName As String) As
Boolean
Dim done As Boolean
Dim value As Long
On Error Resume Next
done = True
If Dir$(FileName) <> "" Then
Kill FileName
End If
value = URLDownloadToFile(0, url, FileName, 0, 0)
If Dir$(FileName) = "" Then
done = False
End If
DownloadPage = done
End Function

Private Sub enregistre_fichier()
Dim bRet As Boolean
Dim sURL As String
Dim sFileName As String, adresse As String
Dim buf As String
buf = String(1, " ")
'ici c'est l'adresse de la page internet que l'on veux recuperer
sURL = "le lien ici"

sFileName = "c:\temp\le_fichier.txt" ' ici c'est l'endroit ou l'on
recupere les donnees

bRet = DownloadPage(sURL, sFileName)
If bRet Then
MsgBox "Téléchargement réussi."
Else
MsgBox "Erreur lors du téléchargement"
End If
End Sub



Michel Angelosanto, Bordeaux, France

3 réponses

Avatar
FS
Bonjour,

Peut-être une autre approche en utilisant un objet InternetExplorer ?
Je ne peux tester en réseau mais peut-être cette fonction de Dave Miller
pourrait te donner un point de départ :

'================ Function Get_Online_Report()
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = True
.navigate "https://Your Site Name Here"
Do Until .readystate = 4
DoEvents
Loop
With .document.forms(0)
.Item("UserName").Value = "Your UserName Here"
.Item("Password").Value = "Your Password Here"
.Item("The Submit Button").Click
End With
End With
Set ie = Nothing
End Function
'================
Ou un objet QueryTables ? Un exemple ici :

http://frederic.sigonneau.free.fr/code/Excel/RequeteWeb.txt" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://frederic.sigonneau.free.fr/code/Excel/RequeteWeb.txt

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

Michel Angelosanto a écrit :
Bonjour,

j'enregistre automatiquement des fichier avec le code suivant, or au
bureau, le fait que ça demande un login et pass pour sortir de
l'intranet, ça ne marche pas.
Y a t-il une possibilité de contrer ce problème?

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

Function DownloadPage(ByVal url As String, ByVal FileName As String) As
Boolean
Dim done As Boolean
Dim value As Long
On Error Resume Next
done = True
If Dir$(FileName) <> "" Then
Kill FileName
End If
value = URLDownloadToFile(0, url, FileName, 0, 0)
If Dir$(FileName) = "" Then
done = False
End If
DownloadPage = done
End Function

Private Sub enregistre_fichier()
Dim bRet As Boolean
Dim sURL As String
Dim sFileName As String, adresse As String
Dim buf As String
buf = String(1, " ")
'ici c'est l'adresse de la page internet que l'on veux recuperer
sURL = "le lien ici"

sFileName = "c:temple_fichier.txt" ' ici c'est l'endroit ou
l'on recupere les donnees

bRet = DownloadPage(sURL, sFileName)
If bRet Then
MsgBox "Téléchargement réussi."
Else
MsgBox "Erreur lors du téléchargement"
End If
End Sub



Michel Angelosanto, Bordeaux, France


Avatar
FS
> Peut-être une autre approche en utilisant un objet InternetExplorer ?



Bien que ta demande précise expressément "sans" :)

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

FS a écrit :
Bonjour,

Peut-être une autre approche en utilisant un objet InternetExplorer ?
Je ne peux tester en réseau mais peut-être cette fonction de Dave Miller
pourrait te donner un point de départ :

'================ > Function Get_Online_Report()
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = True
.navigate "https://Your Site Name Here"
Do Until .readystate = 4
DoEvents
Loop
With .document.forms(0)
.Item("UserName").Value = "Your UserName Here"
.Item("Password").Value = "Your Password Here"
.Item("The Submit Button").Click
End With
End With
Set ie = Nothing
End Function
'================ >
Ou un objet QueryTables ? Un exemple ici :

http://frederic.sigonneau.free.fr/code/Excel/RequeteWeb.txt

FS


Avatar
Michel Angelosanto
Si je ne trouve pas d'autre solution je vais faire comme cela mais
l'inconvénient, c'est qu'étant obligé de passer par plusieurs fenêtres
différentes, c'est plus long et compliqué

1) lancement de IE environ 30 secondes car chargement des infos du proxy
2) première connexion à internet
3) saisie des codes d'accès internet
4) enregistrement du fichier
5) sélection du répertoire et du nom du fichier
6) lien suivant
7) retour au 4)

Actuellement, je vais sur un site qui affiche ce que je cherche, puis je
copie/colle les données dans mon fichier.
Voila pourquoi je cherchais cette solution car c'est 100 fois plus rapide
puisqu'on n'affiche rien et on ne lance pas IE donc ça démarre
instantanément.


"FS" a écrit dans le message de
news:
> Peut-être une autre approche en utilisant un objet InternetExplorer ?

Bien que ta demande précise expressément "sans" :)

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

FS a écrit :
Bonjour,

Peut-être une autre approche en utilisant un objet InternetExplorer ?
Je ne peux tester en réseau mais peut-être cette fonction de Dave Miller
pourrait te donner un point de départ :

'================ >> Function Get_Online_Report()
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = True
.navigate "https://Your Site Name Here"
Do Until .readystate = 4
DoEvents
Loop
With .document.forms(0)
.Item("UserName").Value = "Your UserName Here"
.Item("Password").Value = "Your Password Here"
.Item("The Submit Button").Click
End With
End With
Set ie = Nothing
End Function
'================ >>
Ou un objet QueryTables ? Un exemple ici :

http://frederic.sigonneau.free.fr/code/Excel/RequeteWeb.txt

FS




Michel Angelosanto, Bordeaux, France