Ouverture lien http vers fichier dans Excel , supprimer le message d'alerte Office

ED31

XLDnaute Junior
Bonjour,

A l'ouverture d'un lien http vers un fichier, apparaît un message Office "Ouverture de... Certains fichiers peuvent contenir...Voulez vous ouvrir le fichier ?".

Peut-on valider OK dans une routine Excel VBA ou régler Office pour qu'il n'affiche pas ce message de sécurité ?

Je télécharge des fichiers en boucle et souhaite effectuer cette tâche sans intervention de l'opérateur.

Merci
 

job75

XLDnaute Barbatruc
Re : Ouverture lien http vers fichier dans Excel , supprimer le message d'alerte Offi

Bonsoir ED31,

Si je me souviens bien on peut éviter ce message en modifiant la base de registre.

Mais c'est toujours dangereux d'aller tripatouiller cette base.

A+
 

ED31

XLDnaute Junior
Re : Ouverture lien http vers fichier dans Excel , supprimer le message d'alerte Offi

Merci Job75:cool:

Que penses-tu de la solution de faire valider par EXCEL VBA la réponse au message d'alerte, soit appuyer sur le bouton "OK" par Sendkeys ? Je viens d'y penser mais je n'ai jamais utilisé ce genre de chose. Pas très élégant mais bon...
Bonne soirée ;)
 

ED31

XLDnaute Junior
Re : Ouverture lien http vers fichier dans Excel , supprimer le message d'alerte Offi

Re-bonsoir

L'ouverture des fichiers par lien http que je souhaite faire depuis EXCEL, se traduit (sous CHROME) dans la page web contenant les dits liens, par l'apparition, non du message d'alerte Windows, mais par celle de la fenêtre "Enregistrer sous" qui propose le répertoire et le nom du fichier à stocker.
L'utilisateur doit valider (Enregistrer). Bon connaissez-vous une façon aisée à mettre en oeuvre de piloter Chrome (par script, macro..) depuis Excel (ou depuis la page web finalement, simplement).
J'ai essayé Actionaz et imacros en extension Chrome (mais pas évident à utiliser en mode d'enregistrement automatique et en mode code il faut mettre les mains dans le cambouis... rébarbatif).
Merci pour vos expériences d'interaction Excel - pages web / download de fichiers.
 

job75

XLDnaute Barbatruc
Re : Ouverture lien http vers fichier dans Excel , supprimer le message d'alerte Offi

Re,

Que penses-tu de la solution de faire valider par EXCEL VBA la réponse au message d'alerte, soit appuyer sur le bouton "OK" par Sendkeys ?

Oui mais sur Excel 2010 SendKeys déverrouille le pavé numérique, je ne sais pas sur 2007 ou 2013.

Pour piloter IE :

VBA : Internet Explorer

Bonne nuit.
 

david84

XLDnaute Barbatruc
Re : Ouverture lien http vers fichier dans Excel , supprimer le message d'alerte Offi

Bonjour, salut Gérard,
peut-être voir également du côté des options de sécurité du navigateur. Lequel utilise-tu ?
A l'ouverture d'un lien http vers un fichier, apparaît un message Office "Ouverture de... Certains fichiers peuvent contenir...Voulez vous ouvrir le fichier ?".
Sans lien concret permettant de reproduire le cas difficile de tester...
A+
 

ED31

XLDnaute Junior
Re : Ouverture lien http vers fichier dans Excel , supprimer le message d'alerte Offi

Merci à tous,

Pour préciser ma question, téléchargement depuis la page suivante d'un des liens vers fichiers (exemple EXCEL WHEAT LIFFE) : dans Chrome écran "Enregistrer sous":mad: à faire valider automatiquement. Par Excel VBA ? Est-ce possible ?

Market Data Centre - Futures Prices

Ou, depuis EXCEL, je lance la sauvegarde du fichier via lien HTTP à partir du lien dans une cellule:

http://data.hgca.com/archive/futures/xls/Data Archive - Futures LIFFE Wheat.xls

Mais message de sécurité Office :mad:: faire valider "Enregistrer" par la macro ou désactiver l'alerte. Possible facilement ?

Merci pour vos tuyaux :rolleyes:
 

david84

XLDnaute Barbatruc
Re : Ouverture lien http vers fichier dans Excel , supprimer le message d'alerte Offi

Je n'ai aucun message du type de celui décrit lorsque j'ouvre les liens indiqués (testé avec Chrome mais pas avec d'autres navigateurs).
Place un exemple concret de lien qui pose problème dans un fichier Excel et prends le temps de décrire pas à pas ce que tu fais et quel est le résultat obtenu (au besoin avec copie d'écran collée dans le fichier).
A+
 

ED31

XLDnaute Junior
Re : Ouverture lien http vers fichier dans Excel , supprimer le message d'alerte Offi

Bonjour,

Je n'arrive même plus à lancer la sauvegarde depuis Excel en validant le message d'alerte !

Bon, voici un fichier Excel qui contient les liens et les messages dont je souhaiterais automatiser
la validation (ou éliminer) dans Excel et depuis Chrome d'autre part.


Cordialement
 

Pièces jointes

  • EXCEL_liens_fichiers_web (1).xlsx
    45.9 KB · Affichages: 128

david84

XLDnaute Barbatruc
Re : Ouverture lien http vers fichier dans Excel , supprimer le message d'alerte Offi

Je t'ai simplement demandé un fichier avec 2 ou 3 liens juste pour comprendre le problème et ce que tu attends.
Ton fichier comporte trop d'infos pour moi et je n'ai pas le temps de m'y plonger pour faire la part des choses entre ce qui touche directement à ta question initiale (à savoir comment gérer l'alerte qui apparaît lorsque je télécharge un fichier sur tel site) et le reste.
Donc juste 2 ou 3 liens qui chez toi provoquent l'apparition du message et c'est tout.
A+
 

david84

XLDnaute Barbatruc
Re : Ouverture lien http vers fichier dans Excel , supprimer le message d'alerte Offi

Bonjour,
En pilotant Internet Explorer via VBA on récupère l'ensemble des liens. Il suffit ensuite de faire une requête HTTP pour télécharger les fichiers excel dans un dossier. Ce type de manœuvre ne provoque pas l'apparition du message Office.
Je télécharge les 97 fichiers Excel en quelques secondes.
Après je ne sais pas trop ce que tu veux faire mais une fois qu'il sont téléchargés tu peux en tirer ce que tu veux, le problème que tu exposais étant le fait de contrecarrer l'apparition de ce message.
Ceci dit avant de poster ma proposition j'aimerais que tu vérifies bien que ta demande ne soit pas en contradiction avec les points 5 et 6 de la Lien suppriméen vigueur sur ce forum.
A+
 

Staple1600

XLDnaute Barbatruc
Re : Ouverture lien http vers fichier dans Excel , supprimer le message d'alerte Offi

Bonjour à tous

david84
Sans oublier le point 8 de la charte.
(Mais apparemment dans le cas présent cela ne semble pas le cas, et dans le mesure ou le site propose les fichiers XLS ou CSV en téléchargement libre)
Pour les points 5 et 6, attendons effectivement le retour de ED31.
 
Dernière édition:

ED31

XLDnaute Junior
Re : Ouverture lien http vers fichier dans Excel , supprimer le message d'alerte Offi

Bonjour à tous, notamment David

Je ne vois pas de problème avec les points 5 et 6, s'agissant d'une activité de recherche non commerciale et de données non signalées comme copywritées. Leur téléchargement est libre et leur utilisation non sujette à conditions particulières.
Bonne fin d'année. :D
 

david84

XLDnaute Barbatruc
Re : Ouverture lien http vers fichier dans Excel , supprimer le message d'alerte Offi

Bonjour à tous, notamment David

Je ne vois pas de problème avec les points 5 et 6, s'agissant d'une activité de recherche non commerciale et de données non signalées comme copywritées. Leur téléchargement est libre et leur utilisation non sujette à conditions particulières.
Bonne fin d'année. :D

Bonjour,

donc si c'est bon je livre.

Le but de ta demande était de pouvoir télécharger en masse des fichiers Excel sans que la boîte de dialogue Office n'apparaisse.

La façon dont l'apparition de cette boîte de dialogue peut être gérée dépend de ton navigateur. Sur Chrome elle peut être désactivée mais sur Internet Explorer je n'ai pas trouvé comment.
Or via VBA on ne peut piloter qu'Internet Explorer d'où le problème.

L'utilisation d'une requête XmlHttp combinée à celle de l'objet Stream d'ADO permet de télécharger en masse les fichiers voulus :
Code:
Option Explicit
'============== Points à vérifier ====================================
'Cocher les références suivantes :
'  Microsoft Internet Controls
'  Microsoft HTML Object Library
'  Microsoft ActiveX Data Objects 2.8 Library (v 2.8 au minimum)
'  Microsoft XML, vx.x
'  Windows Script Host Object Model
'ou déclarer tous les objets
'  Dim oNomObjet as Object
'  Set oNomObjet = CreateObject("Nom_de_l'objet")
'et remplacer le nom des types d'énumération par leur valeur numérique
'======================================================================

Const strURL As String = "http://data.hgca.com/archive/future.asp" 'URL du site
Const strFolderName As String = "téléchargement" 'nom du dossier

'Procédures adaptées de http://arkham46.developpez.com/articles/office/officeweb/
'et de http://qwazerty.developpez.com/tutoriels/vba/ie-et-vba-excel/
Sub XmlHttpRequest_IE()
Dim oXmlHttp As XmlHttp
Dim oStream As ADODB.Stream
Dim oNav As SHDocVw.InternetExplorer
Dim oDoc As DispHTMLElementCollection
Dim oColLinks As IHTMLElementCollection
Dim oLink As HTMLAnchorElement
Dim strPathName As String
Dim strFileName As String

strPathName = GetDesktopFolder & "\" & strFolderName & "\"

Set oNav = New SHDocVw.InternetExplorer 'on accède à Internet Explorer
'oNav.Visible = True 'uniquement si l'on veut afficher la page
oNav.navigate strURL
' Attente avec timeout de 10 s
If WaitIE(oNav, 10) Then
  ' 10 s écoulées et page non chargée
  MsgBox "Temps écoulé !"
Else
  ' Page chargée, on continue
  
  On Error Resume Next
  MkDir strPathName 'si le dossier n'existe pas on le crée
  On Error GoTo 0 'On réactive la gestion d'erreur au cas une une erreur a été levée
  
  'on lance une requête
  Set oXmlHttp = New XmlHttp
  Set oStream = New ADODB.Stream
  oXmlHttp.Open "GET", strURL, False
  oXmlHttp.send
  
  oStream.Open  'on ouvre l'objet stream
  
  Set oDoc = oNav.document 'on accède à la structure HTML du document
  Set oColLinks = oDoc.Links 'on accède à la collection des liens
  
  For Each oLink In oColLinks 'on accède à chaque lien
    If oLink.innerHTML = "Excel" Then
      strFileName = Replace(oLink.nameProp, "%20", " ") 'remplacement du %20 retrouvé dans l'URL par l'espace
      oStream.Type = adTypeBinary ' 1 = no adTypeBinary, 2 = adTypeText
      oStream.write oXmlHttp.responseBody
      oStream.SaveToFile strPathName & strFileName, adSaveCreateOverWrite ' 1 = no overwrite, 2 = overwrite
    End If
  Next oLink
  
  oStream.Close  'on ferme l'objet stream
End If

oNav.Quit 'ferme IE

Set oXmlHttp = Nothing
Set oStream = Nothing
Set oNav = Nothing
Set oDoc = Nothing
Set oColLinks = Nothing
Set oLink = Nothing

MsgBox "Traitement terminé !"
End Sub

' Attend que la page internet soit chargée
' pTimeOut est un time out en secondes (WaitIE vaut True si Timeout)
Function WaitIE(oIE As InternetExplorer, Optional pTimeOut As Long = 0) As Boolean
Dim lTimer As Double
lTimer = Timer
Do
  DoEvents
  If oIE.ReadyState = READYSTATE_COMPLETE And Not oIE.Busy Then Exit Do 'READYSTATE_COMPLETE = 4
  If pTimeOut > 0 And Timer - lTimer > pTimeOut Then
    WaitIE = True
    Exit Do
  End If
Loop
End Function

'Récupère le chemin du bureau
Function GetDesktopFolder()
Dim oShell As WshShell
  Set oShell = New WshShell
  GetDesktopFolder = oShell.SpecialFolders("Desktop")
End Function

Tu peux même te passer d'Internet Explorer en utilisant uniquement une requête XmlHttp combinée à celle de l'objet Stream (ce qui est plus rapide) :
Code:
Option Explicit
'============== Points à vérifier ====================================
'Cocher les références suivantes :
'  Microsoft HTML Object Library
'  Microsoft ActiveX Data Objects 2.8 Library (v 2.8 au minimum)
'  Microsoft XML, vx.x
'  Windows Script Host Object Model
'ou déclarer tous les objets
'  Dim oNomObjet as Object
'  Set oNomObjet = CreateObject("Nom_de_l'objet")
'et remplacer le nom des types d'énumération par leur valeur numérique
'======================================================================
Const strURL As String = "http://data.hgca.com/archive/future.asp" 'URL du site
Const strFolderName As String = "téléchargement" 'nom du dossier

'adapté de http://www.developpez.net/forums/d1442277/logiciels/microsoft-office/excel/macros-vba-excel/extraire-l-ensemble-liens-urls-d-page-web/#post7831772
Sub XmlHttpRequest()
Dim oXmlHttp As XmlHttp
Dim HtmlFile As HTMLElementCollection
Dim oColLinks As IHTMLElementCollection
Dim oLink As HTMLAnchorElement
Dim oStream As ADODB.Stream
Dim HtmlDoc As String
Dim strFileName As String
Dim strPathName As String

Set oXmlHttp = New XmlHttp

oXmlHttp.Open "GET", strURL, False
oXmlHttp.send

If oXmlHttp.Status = 200 Then HtmlDoc = oXmlHttp.responseText

If HtmlDoc <> vbNullString Then
  strPathName = GetDesktopFolder & "\" & strFolderName & "\" 'chemin du dossier contenant les fichiers
  On Error Resume Next
  MkDir strPathName 'si le dossier n'existe pas on le crée
  On Error GoTo 0 'On réactive la gestion d'erreur au cas une une erreur a été levée
  
  'on crée un document HTML dans lequel on va recopier la structure HTML de la page correspondant à l'URL
  '(contenue sous forme de texte dans la variable HtmlDoc) afin de pointer vers les liens contenus dans la page
  Set HtmlFile = New HTMLDocument 'CreateObject("HTMLFile")
  HtmlFile.write HtmlDoc
  Set oColLinks = HtmlFile.Links 'on accède à la collection des liens
  
  Set oStream = New ADODB.Stream
  oStream.Open

  For Each oLink In oColLinks 'on accède à chaque lien
    If oLink.innerHTML = "Excel" Then
      strFileName = Replace(oLink.nameProp, "%20", " ") 'remplacement du %20 retrouvé dans l'URL par l'espace
      oStream.Type = adTypeBinary ' 1 = no adTypeBinary, 2 = adTypeText
      oStream.write oXmlHttp.responseBody
      oStream.SaveToFile strPathName & strFileName, adSaveCreateOverWrite ' 1 = no overwrite, 2 = overwrite
    End If
  Next oLink
  
oStream.Close

Set oXmlHttp = Nothing
Set oStream = Nothing
Set oColLinks = Nothing
Set oLink = Nothing
Set HtmlFile = Nothing

MsgBox "Traitement terminé !"
End If
End Sub

Function GetDesktopFolder()
Dim oShell As WshShell
  Set oShell = New WshShell
  GetDesktopFolder = oShell.SpecialFolders("Desktop")
End Function

Ces 2 procédures te téléchargent dans un dossier nommé "téléchargement" (la création de ce dossier placé sur le bureau est gérée automatiquement) les 48 fichiers Excel placés sur ce site (ceux correspondant à la 2ème colonne).
Je n'ai ciblé que ceux-là mais tu peux adapter à ton besoin.

Voilà, à toi de tester.
A+
 

Pièces jointes

  • TelechargerFichier_XmlHttp_XLD.xlsm
    97.9 KB · Affichages: 79

ED31

XLDnaute Junior
Re : Ouverture lien http vers fichier dans Excel , supprimer le message d'alerte Offi

Merci beaucoup David,

J'ai lancé les deux versions du programme. Bravo, vitesse de l'éclair.

Mais récupéré des fichiers qui ne veulent pas s'ouvrir sous Excel: "message de compatibilité entre le fichier et son extension...". Il me propose d'ouvrir en XML mais cela ne donne rien sinon des messages d'erreur.
En fait, les fichiers sont tout petits de l'ordre de 40 k alors qu'ils devraient faire 400k au moins. J'utilise Excel 2007 et il s'ouvrent sans problème ici (format xls 2003-2007).

De plus, si je relance la macro "Explorer", le programme bloque à l'accès à Explorer. Peut-être pas fermé après l'utilisation précédente ? Set oNav = New SHDocVw.InternetExplorer 'on accède à Internet Explorer

Voilà, merci encore pour ton aide.
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin