Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Création d'un zip via la commande Windows

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Sly le globe trotter

XLDnaute Occasionnel
Bonjour,

Xp est maintenant équipé d'une application permettant de compresser et décompresser des fichiers au format zip.

Je souhaiterai utiliser cette application pour créer une archive avec plusieurs fichiers depuis une ligne de commande vba... Le hic, c'est que je ne connais pas la ligne de commande à utiliser sous vba !

Dans différentes cellules Excel, je dispose du chemin complet des fichiers à zipper, il me manque juste la commande pour zipper.

Mille mercis
 
Re : Création d'un zip via la commande Windows

Bonjour sly,

Il y a eu d'autres fils sur le sujet.

Je te poste le code que j'ai récupéré la dernière fois, je ne sais plus malheureusement à quel Barbatruc l'attribuer...

Code:
Sub ZipFichier()
    Dim oShell As Object, Fso As Object
    Dim i As Long
    Dim Fichier As String, MyBinary As String
    Dim LeZip As Variant
    Dim MyHex As Variant
    
    Fichier = "C:\le classeur.xls"
    LeZip = "C:\Ma sauvegarde.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
    
    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
 
Re : Création d'un zip via la commande Windows

J'ai remarqué que le code précédent ne zippe qu'un fichier...

Pour zipper plusieurs fichiers :


Code:
Sub Zip_File_Or_Files()
    Dim strDate As String, DefPath As String, sFName As String
    Dim oApp As Object, iCtr As Long, I As Integer
    Dim FName, vArr, FileNameZip
 
    DefPath = "Y:\TestZip\Nouveau dossier"
    If Right(DefPath, 1) <> "\" Then
        DefPath = DefPath & "\"
    End If
 
    strDate = Format(Now, " dd-mmm-yy h-mm-ss")
    FileNameZip = DefPath & "MyFilesZip " & strDate & ".zip"
 
    'Browse to the file(s), use the Ctrl key to select more files
    FName = Application.GetOpenFilename(filefilter:="Excel Files (*.xls), *.xls", _
                                        MultiSelect:=True, Title:="Select the files you want to zip")
    If IsArray(FName) Then
        'Create empty Zip File
        NewZip (FileNameZip)
        Set oApp = CreateObject("Shell.Application")
        I = 0
        For iCtr = LBound(FName) To UBound(FName)
            vArr = Split(FName(iCtr), "\")
            sFName = vArr(UBound(vArr))
            I = I + 1
            oApp.Namespace(FileNameZip).CopyHere (FName(iCtr))
        Next iCtr
 
        'Keep script waiting until Compressing is done
        On Error Resume Next
        Do Until oApp.Namespace(FileNameZip).items.Count = I
            DoEvents
        Loop
 
        MsgBox "You find the zipfile here: " & FileNameZip
        On Error GoTo 0
        Set oApp = Nothing
    End If
End Sub
Sub NewZip(sPath)
'Create empty Zip File
'Changed by keepITcool Dec-12-2005
    If Len(Dir(sPath)) > 0 Then Kill sPath
    Open sPath For Output As #1
    Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
    Close #1
End Sub
 
Dernière édition:
Re : Création d'un zip via la commande Windows

Bonjour MJ13,

Non le premier code, je l'ai récupéré sur ce forum... mais peut-être as-t-il été copié de cette source.
Le second je l'ai trouvé au cours de mes tribulations sur Google.
Je ne prétendais pas qu'ils étaient de moi (je n'ai pas l'habitude de commenter en anglais...)
 
Re : Création d'un zip via la commande Windows

Re bonjour

TotoTiti: Ce n'était pas pour t'embêter, mais c'est pour dire en général, qu'il est bien lorsqu'on a un code un peu alambiqué de mettre la source de façon à ce que si on veut savoir d'où provient le code, on peut le retrouver facilement et en général, on tombe sur une mine.

Pour le savoir, j'ai fait une recherche sur G....E avec une ligne du code sur ton premier code.
Celle ci
Code:
Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

Sinon j'apprécie toujours tes interventions.

Bonne soirée
 
Re : Création d'un zip via la commande Windows

Bonjour à tous,

Je vous conseille de tester ZipTi2, il s'intègre dans la barre d'Outils et vous permet de zipper un fichier sans sortir d'XL.

Un coucou en passant à nos amis de VeriTi 🙂

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
6 K
Compte Supprimé 979
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…