ZIPPER UN FICHIER EN UTILISANT LA FONCTION DE COMPRESSION INTÉGRÉE À WINDOWS XP

bremondpierrejean
Messages postés
39
Date d'inscription
samedi 24 juillet 2004
Statut
Membre
Dernière intervention
6 janvier 2007
- 6 janv. 2007 à 09:59
AramisII
Messages postés
3
Date d'inscription
mardi 2 mars 2010
Statut
Membre
Dernière intervention
2 mars 2010
- 2 mars 2010 à 15:04
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/40998-zipper-un-fichier-en-utilisant-la-fonction-de-compression-integree-a-windows-xp

AramisII
Messages postés
3
Date d'inscription
mardi 2 mars 2010
Statut
Membre
Dernière intervention
2 mars 2010

2 mars 2010 à 15:04
C'est vrai, tres ancien mais comme j'en avais besoin et que c'etait incomplet, je me suis permis d'ajouter un commentaire qui pourait aider d'autres personnes comme moi, programmant un outil et faisant tres peu de phylosophie de programmation... ;-)))
Merci pour cette source d'aides....
cavo789
Messages postés
168
Date d'inscription
vendredi 9 janvier 2004
Statut
Membre
Dernière intervention
28 juillet 2009
1
2 mars 2010 à 13:05
5 Janvier 2007; tout cela ne nous rajeunit pas. Vous avez été déterré une vielle source ;-)
Baddante
Messages postés
33
Date d'inscription
mercredi 1 mars 2006
Statut
Membre
Dernière intervention
24 février 2008

2 mars 2010 à 13:01
Bonjour,

pour répondre à Patate: "Arretez avec vos appels de WSH !

Ca fait débutant, ca fait dépendre le programme de certains fichiers (sans eux le prgramme ne fonctionnera pas) et ensuite, non négligeable, pas mal de commandes WHS titillent les antivus.

A proscrire donc !"

En quoi ça fait débutant, c'est une DLL ocx (c:\Windows\System32\wshom.ocx) toujours livré dans la dernière version de windows (Win 7 pro v.5.8), les versions serveurs win2000 et suivant. Aucun déploiement d'ocx puisque de base dans l'OS, choix du langage de scripting /.vbs (vbscript), .js (javascript).

Et pour les "Pros" intégration dans MS Office via VBA, et tous langage gérant les ActiveX.
Bien sûre pour les "Pros" comme Violent_Ken vous pouvez toujours utiliser les APIS, (mais il faut évidement trouver la doc, vérifier si c'est libre de tous droits (Copyright), puis faire un programme d'install en général et là, il faut gérer les versions de DLLs (DLL HELL terme Microsoftien pour descendre une techno qu'il a lui même inventé !

Attention à l'usage dans un VBA (appel du Shell "CreateObject("Shell.Application")" dans un programme VBA, je pense qu'il y a de gros risque qu'un antivirus trouve cela suspect.

L'avis d'un non "Pro".
A+
AramisII
Messages postés
3
Date d'inscription
mardi 2 mars 2010
Statut
Membre
Dernière intervention
2 mars 2010

2 mars 2010 à 11:36
Bonjour,

Pour VBA Excel 2007, ce code fonctionne très bien pour autant que l'on rajoute (sinon boucle à l'infini) :
- la reference "Microsoft Shell Controls and automation"
- et modifier 3 lignes :
Dim oShell As Shell 'important car Object ne fonctionne pas...
# Set oShell = CreateObject("Shell.Application")
# oShell.Namespace(sZIPFileName).copyHere sFileName
Donc plus besoin de "oZip"

Source : http://social.msdn.microsoft.com/Forums/en-US/isvvba/thread/0263175a-351d-443e-813a-3205d6a9a42d

Bon courage à tous
Baddante
Messages postés
33
Date d'inscription
mercredi 1 mars 2006
Statut
Membre
Dernière intervention
24 février 2008

20 avril 2007 à 15:48
Salut,

moi aussi j'ai chercher à l'utiliser voici le code qui marche en VBscript / shell / wbs pour faire plaisir à PATATE ;+))
Enfin si vous voulez savoir d'ou viens cette version zip :
(Inner Media, Inc) http://www.innermedia.com/nxpr-micro.html

Code VBS : (le premier qui le transforme en VBA ou VB gagne une tringle à rideau !!!)

Const ForReading 1, ForWriting 2, ForAppending = 8
Dim Source, Destination, MyHex, MyBinary, i
Dim oShell, oApp, oFolder, oCTF, oFile
Dim oFileSys
Source = "D:\SRVDOS"
Destination = "C:\SRVDOS.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")
'Creation du 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
wScript.Sleep 5000
Set oFile = Nothing
On Error Resume Next ' pas très beau hein !
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
wScript.Sleep 3000
End If
Loop
Set oFile = Nothing
Set oFileSys = Nothing
Afficher les 11 commentaires