Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1629 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Dezipper fichier automatiquement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Dezipper fichier automatiquement

n°1679210
acorsa
Posté le 30-01-2008 à 17:34:23  profilanswer
 

Bonjour,
Je désire dézipper un fichier automatiquement (sans aucune intervention humaine).  
Etant donné que j'utilise déjà une macro pour déplacer ce fichier de ma boîte mail à un répertoire je pensais utiliser une macro pour le dezippage...
Ceci dit, si cela n'est pas possible, vous avez peut-être d'autres idées?  
Merci d'avance!
Andréa


Message édité par acorsa le 30-01-2008 à 17:34:53
mood
Publicité
Posté le 30-01-2008 à 17:34:23  profilanswer
 

n°1679251
kiki29
Posté le 30-01-2008 à 18:56:31  profilanswer
 

Soir Bon , à adapter au contexte
Pour Dézipper


Option Explicit
 
Sub Unzip()
Dim FSO As Object
Dim oApp As Object
Dim DossierZip As Variant
Dim DossierDezip As Variant
     
    DossierZip = "C:\Faq\FaqVba\Exemples\ZipUnZip\Tst.zip"
    DossierDezip = ThisWorkbook.Path & "\Data"
 
    Set FSO = CreateObject("Scripting.FileSystemObject" )
    If FSO.FolderExists(DossierDezip) Then
        FSO.DeleteFile DossierDezip & "\*.*", True
        FSO.DeleteFolder DossierDezip & "\*.*", True
    End If
    Set FSO = Nothing
 
    If CreationDossier(DossierDezip) Then
 
        Set oApp = CreateObject("Shell.Application" )
        oApp.Namespace(DossierDezip).CopyHere oApp.Namespace(DossierZip).items
        Set oApp = Nothing
 
        Application.StatusBar = "Les fichiers Dézippés se trouvent dans : " & DossierDezip
    End If
End Sub


Pour la création du Dossier "Data"


Private Function CreationDossier(ByVal sChemin As String) As Boolean
Dim i As Integer, sTmp As String, Ar() As String
    If InStr(sChemin, ":" ) = 0 Then
        Ar = Split(CurDir & "\" & sChemin, "\" )
    Else
        Ar = Split(sChemin, "\" )
    End If
 
    sTmp = Ar(0)
    ChDrive sTmp
 
    For i = LBound(Ar) + 1 To UBound(Ar)
        If Ar(i) <> "" Then
            sTmp = sTmp & "\" & Ar(i)
            On Error Resume Next
            MkDir sTmp
            On Error GoTo 0
        End If
    Next i
 
    If Dir(sChemin, vbDirectory) = vbNullString Then
        CreationDossier = False
    Else
        CreationDossier = True
    End If
End Function


Sinon pour Zipper il y a  


Sub ZipFichier()
Dim oShell As Object, Fso As Object
Dim i As Long
Dim Fichier As String, MyBinary As String
Dim LeZip As Variant, MyHex As Variant
 
    Fichier = ThisWorkbook.Path & "\Essai.xls"
    LeZip = ThisWorkbook.Path & "\Essai.zip"
 
    Set Fso = CreateObject("Scripting.FileSystemObject" )
    MyHex = Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
 
    For i = 0 To UBound(MyHex)
        MyBinary = MyBinary & Chr(MyHex(i))
    Next i
 
    With Fso.CreateTextFile(LeZip, True)
        .Write MyBinary
        .Close
    End With
 
    Set oShell = CreateObject("Shell.Application" )
    oShell.Namespace(LeZip).CopyHere (Fichier)
 
    Set oShell = Nothing
End Sub

Message cité 1 fois
Message édité par kiki29 le 31-01-2008 à 04:58:25
n°1679429
acorsa
Posté le 31-01-2008 à 09:58:45  profilanswer
 

Toujours efficace à ce que je vois...C'était pile ce dont j'avais besoin!
Merci beaucoup!

n°1680099
kiki29
Posté le 31-01-2008 à 21:03:48  profilanswer
 

De rien gente dame

n°2234999
yann59116
Posté le 05-08-2014 à 19:52:16  profilanswer
 

kiki29 a écrit :

Soir Bon , à adapter au contexte
Pour Dézipper


Option Explicit
 
Sub Unzip()
Dim FSO As Object
Dim oApp As Object
Dim DossierZip As Variant
Dim DossierDezip As Variant
     
    DossierZip = "C:\Faq\FaqVba\Exemples\ZipUnZip\Tst.zip"
    DossierDezip = ThisWorkbook.Path & "\Data"
 
    Set FSO = CreateObject("Scripting.FileSystemObject" )
    If FSO.FolderExists(DossierDezip) Then
        FSO.DeleteFile DossierDezip & "\*.*", True
        FSO.DeleteFolder DossierDezip & "\*.*", True
    End If
    Set FSO = Nothing
 
    If CreationDossier(DossierDezip) Then
 
        Set oApp = CreateObject("Shell.Application" )
        oApp.Namespace(DossierDezip).CopyHere oApp.Namespace(DossierZip).items
        Set oApp = Nothing
 
        Application.StatusBar = "Les fichiers Dézippés se trouvent dans : " & DossierDezip
    End If
End Sub


Pour la création du Dossier "Data"


Private Function CreationDossier(ByVal sChemin As String) As Boolean
Dim i As Integer, sTmp As String, Ar() As String
    If InStr(sChemin, ":" ) = 0 Then
        Ar = Split(CurDir & "\" & sChemin, "\" )
    Else
        Ar = Split(sChemin, "\" )
    End If
 
    sTmp = Ar(0)
    ChDrive sTmp
 
    For i = LBound(Ar) + 1 To UBound(Ar)
        If Ar(i) <> "" Then
            sTmp = sTmp & "\" & Ar(i)
            On Error Resume Next
            MkDir sTmp
            On Error GoTo 0
        End If
    Next i
 
    If Dir(sChemin, vbDirectory) = vbNullString Then
        CreationDossier = False
    Else
        CreationDossier = True
    End If
End Function


Sinon pour Zipper il y a  


Sub ZipFichier()
Dim oShell As Object, Fso As Object
Dim i As Long
Dim Fichier As String, MyBinary As String
Dim LeZip As Variant, MyHex As Variant
 
    Fichier = ThisWorkbook.Path & "\Essai.xls"
    LeZip = ThisWorkbook.Path & "\Essai.zip"
 
    Set Fso = CreateObject("Scripting.FileSystemObject" )
    MyHex = Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
 
    For i = 0 To UBound(MyHex)
        MyBinary = MyBinary & Chr(MyHex(i))
    Next i
 
    With Fso.CreateTextFile(LeZip, True)
        .Write MyBinary
        .Close
    End With
 
    Set oShell = CreateObject("Shell.Application" )
    oShell.Namespace(LeZip).CopyHere (Fichier)
 
    Set oShell = Nothing
End Sub



 
 
Bonjour,
 
Super la macro. Ca marche nickel.
Par contre, je cherche à dezziper tous les fichiers d'un dossier.  
Avez vous une méthode?
 
Merci d'avance

n°2235038
pierrem75
Posté le 06-08-2014 à 11:16:40  profilanswer
 

Tu as essayé de lancer via VBA des batchs 7zip?
Tu mets ton script dans line et:
CreateObject("WScript.Shell" ).Run("cmd.exe /c " & line, WindowStyle:=7, WaitOnReturn:=WaitUntilReturn)
 
http://www.dotnetperls.com/7-zip-examples

n°2311480
lilydev
LilyDev
Posté le 22-02-2018 à 13:18:39  profilanswer
 

Bonjour,  
 
Avez-vous réussi à résoudre ce problem.
Je l'ai testé sur un seul fichier .zip , il marche très bien.
Mais je me retrouve avec deux  problèmes :
 
1. mes archives  sont de types : .tar.gz et .tar ( quand je lance le programme, j'ai un message d'erreur le Namespace de l'object Shell a échoué"
 
2. J'ai plusieurs fichiers à dezziper, j'aimerais un moyen de les zipper simultanement.
 
Merci d'avance.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Dezipper fichier automatiquement

 

Sujets relatifs
sauvegarder feuille dans fichier differentsbouton sur access qui permet d'accéder à un fichier word
MVS : export compte-rendus SAR dans fichier sequentielOuvrir un fichier .eml
[PHP] ftp_get taille limite de fichier à téléchargercryptage/décryptage fichier
Validation fichier XML sous PHP5Formulaire d'envoie de email dans un swf grace a un fichier php
[C Unix] Ecrire dans un fichier...[Access] Importation de fichier texte et perte des espaces
Plus de sujets relatifs à : Dezipper fichier automatiquement


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR