Télécharger fichier zip sur disque dur et décompression

Bonsoir à toutes et tous

je suis tombé sans me faire mal sur ce vieux code (2017) qui semblait correspondre à mon besoin, (récupérer le prix des carburants pour avoir un historique des pleins et des prix sur les stations

mais j'ai un gros warning de mes logiciels antivirus et autre me criant à l'exploit excel

le fichier zip en question fait quand meme 26Mo à télécharger

Option Explicit

#If VBA7 Then
    Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
    (ByVal pCaller As LongPtr, ByVal szURL As String, ByVal szFileName As String, _
    ByVal dwReserved As LongPtr, ByVal lpfnCB As LongPtr) As Long
#Else
    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
#End If

Sub Unzip()

    Dim WS As Object, ShApp As Object
    Dim répertoire_zip As String, répertoire_unzip As Variant, URL As String, nom_fichier As Variant
    Dim code_retour As Integer

    '// Assignation répertoires
     Set WS = CreateObject("WScript.Shell")
    répertoire_zip = WS.SpecialFolders("E:\VBA")
    répertoire_unzip = WS.SpecialFolders("E:\VBA")

    '// Téléchargement fichier
     URL = "https://donnees.roulez-eco.fr/opendata/annee/2022"
    nom_fichier = répertoire_zip & "\" & "PrixCarburants_annuel_2022.zip"
    code_retour = URLDownloadToFile(0, URL, nom_fichier, 0, 0)
    If code_retour = 0 Then MsgBox "Téléchargement effectué" Else Exit Sub

    '// Dézippage fichier
     Set ShApp = CreateObject("Shell.Application")
    ShApp.Namespace(répertoire_unzip).CopyHere ShApp.Namespace(nom_fichier).items

End Sub

sinon pour la partie décompression cela fonctionne grâce à un autre code ancien

Sub ArchiveCarburantE85()
'---------------------------------------------------------
'gestion des erreurs
    On Error GoTo ErreurDecompression

'définition des variables
    Dim ApplicationArchivage As Object
    Dim FichierArchive As Variant
    Dim DossierDestination As Variant

'informations sur l'archive et le dossier pour les fichiers décompressés
    FichierArchive = "E:\VBA\PrixCarburants_annuel_2022.zip" 'l'archive à décompresser
    DossierDestination = "E:\VBA\" 'le dossier dans lequel les fichiers seront décompressés

'vérification du format du chemin du dossier de destination
    If Right(DossierDestination, 1) <> "\" Then DossierDestination = DossierDestination & "\"

'Décompression
    Set ApplicationArchivage = CreateObject("Shell.Application")
    ApplicationArchivage.Namespace(DossierDestination).CopyHere ApplicationArchivage.Namespace(FichierArchive).items
    Set ApplicationArchivage = Nothing

'Message final
    MsgBox "La décompression a été lancée.."
Exit Sub

ErreurDecompression:
MsgBox "Une erreur s'est produite..."
End Sub

auriez vous une piste pour le téléchargement de mon fichier via excel ?

Merci beaucoup

Bonjour Cfrancky77

Une piste pour le téléchargement, oui, changer d'antivirus
Il te fait un faux positif...

Sinon pour le code, je ferais ceci (fonctionne parfaitement chez moi)

Sub Unzip()
  Dim ShApp As Object
  Dim répertoire_zip As String, répertoire_unzip As Variant, URL As String, nom_fichier As Variant
  Dim code_retour As Integer

  '// Assignation répertoires
  répertoire_zip = "E:\VBA\"
  répertoire_unzip = "E:\VBA\"

  '// Téléchargement fichier
   URL = "https://donnees.roulez-eco.fr/opendata/annee/2022"
  nom_fichier = répertoire_zip & "PrixCarburants_annuel_2022.zip"
  code_retour = URLDownloadToFile(0, URL, nom_fichier, 0, 0)
  If code_retour = 0 Then MsgBox "Téléchargement effectué" Else Exit Sub

  '// Dézippage fichier
   Set ShApp = CreateObject("Shell.Application")
  ShApp.Namespace(répertoire_unzip).CopyHere ShApp.Namespace(nom_fichier).items
End Sub

A+

oui en effet c'est mon antimalware qui est fautif , cela marche en effet super

par contre j'ai une question concernant le code précédent que je ne comprends pas

Option Explicit

#If VBA7 Then
    Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
    (ByVal pCaller As LongPtr, ByVal szURL As String, ByVal szFileName As String, _
    ByVal dwReserved As LongPtr, ByVal lpfnCB As LongPtr) As Long
#Else
    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
#End If

Pourriez vous m'éclairer ?

Re,

C'est pour pouvoir utiliser l'API Windows de téléchargement, avec Excel en version 64 ou 32 bits

A+

Rechercher des sujets similaires à "telecharger fichier zip disque dur decompression"