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

XL 2021 Compresser le contenu d'un dossier en zip

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
Bonjour à tous,
Je cherche depuis un moment à compresser le contenu d'un dossier (ZIP) et le renommer en même temps, mais sans succès.
J'ai trouvé beaucoup de chose en donnant le chemin du fichier tout seul, mais rien sur le contenu d'un dossier.

Là du coup pas de fichier ou bout de code à proposer j'ai rien trouvé.

Si vous avez ça dans vos archives , ou des pistes je suis preneur

Merci à tous.
Nicolas
 

fanch55

XLDnaute Barbatruc
Bonsoir,
Ce bout de code devrait le faire si powershell est autorisé sur le système
VB:
Sub RunZip()
   ' Nota: le Confirm est crispant , l'enlever en fin de test
    Shell "powershell.exe """ & _
        " $Folder = 'D:\Users\.....\Downloads\Sources à Importer';" & _
        " $Target = 'D:\Users\.....\Downloads\Target.zip';" & _
        " Compress-Archive " & _
            " -Path $Folder" & _
            " -DestinationPath $Target" & _
            " -Force " & _
            " -Confirm ;" & _
        " explorer.exe /select,$Target ;" & _
        " Read-Host 'Appuyez sur ENTREE pour continuer...'" & _
        """", vbMaximizedFocus
End Sub
 

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
Bonjour,
Merci pour vos retours,
Merci à Kiki29, ça match
VB:
Sub ZipRepertoire()
    '
    'Source
    'http://www.codecomments.com/archive299-2006-2-295877.html
    '
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    
    Dim Source, Destination, MyHex, MyBinary, i
    Dim oShell, oApp, oFolder, oCTF, oFile
    Dim oFileSys
    
    'Spécifiez le répertoire
    Source = "C:\Le répertoire"
    Destination = "C:\maSauvegarde.zip"
    
    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
    
    Set oShell = CreateObject("WScript.Shell")
    Set oFileSys = CreateObject("Scripting.FileSystemObject")
    
    'Création de la base du fichier zip.
    Set oCTF = oFileSys.CreateTextFile(Destination, True)
    oCTF.Write MyBinary
    oCTF.Close
    Set oCTF = Nothing
    
    Set oApp = CreateObject("Shell.Application")
    
    Set oFolder = oApp.Namespace(Source)
    If Not oFolder Is Nothing Then _
        oApp.Namespace(Destination).CopyHere oFolder.Items
    
    Set oFile = Nothing
    On Error Resume Next
    
    Do While (oFile Is Nothing)
        'Attention: provoque une erreur 70 si un des fichiers à zipper
        'est toujours ouvert.
        Set oFile = oFileSys.OpenTextFile(Destination, ForAppending, False)
        
        If Err.Number <> 0 Then
            Err.Clear
        End If
    Loop
    
    Set oFile = Nothing
    Set oFileSys = Nothing
End Sub

Nicolas
 

Discussions similaires

Réponses
26
Affichages
695
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…