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

Compresser un fichier par macro

  • Initiateur de la discussion Initiateur de la discussion jeanmomo
  • Date de début Date de début

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 !

J

jeanmomo

Guest
Bonjour à tous,

Je souhaite compresser un fichier excel par l'éditeur de compression de Windows, et ceci grâce à une macro.

Ce fichier base.xls se situe dans C:\base.xls, et je souhaiterais que la macro l'enregistre au format.zip dans D:\base.zip.


Quelqu'un aurait-il une idée de code vba pour ceci?

Merci d'avance.
 
Re : Compresser un fichier par macro

Merci pour ton aide.

J'ai essayé avec le dernier lien (zipper un fichier), mais sur la deuxième du code ci-dessous, il m'indique une erreur de type "13" et une incompatibilité de type.

For i = 0 To UBound(MyHex)
MyBinary = MyBinary & Chr(MyHex(i))
Next



En supprimant ces lignes, il arrive à la compression (je vois la fenêtre de compression apparaître), mais pour la ligne ci-dessous:

Set oShell = Nothing

il m'indique que le dossier compressé n'est pas valide ou qu'il est endommagé.

As-tu une idée de la correction a apporter?

Merci.
 
Re : Compresser un fichier par macro

Re, ce code fonctionne sans aucun probleme sur mon PC, donc à priori tu ne l'utilises pas correctement
Code:
Option Explicit

Sub ZipFichier()
'
'Source
'http://www.codecomments.com/archive299-2006-2-295877.html
'
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:\Base.xls"
    LeZip = "D:\Base.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
 
Dernière édition:
Re : Compresser un fichier par macro

Impeccable, je ne sais pas comment je me suis débrouillé au début, mal c'est sur, mais j'ai repirs le code en intégralité et ça marche!!!

Merci beaucoup pour ta contribution.
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
226
Réponses
43
Affichages
759
Réponses
4
Affichages
219
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…