Compresser un fichier en VBA

Le
fmvac
Bonjour,

Je suis à la recherche d'une solution VBA pour compresser un fichier.

Merci pour vos suggestions
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MINOT gilles
Le #20022991
On 31 août, 09:15, fmvac
Bonjour,

Je suis à la recherche d'une solution VBA pour compresser un fichier.

Merci pour vos suggestions



tu colles ce code dans un module

Public Sub CompactCurrentDB()
On Error GoTo CompactCurrentDB_Err

Dim LenCurDB As Long '// Grosseur actuelle de la base de donnée
Dim LenUpdDB As Long '// Grosseur de la base de donnée lors du dernier
Update
Dim MaxDiff As Long '// Différence permise avant le compact
automatique
Dim db As Database

LenUpdDB = 10000 '// Inscrire ici la grosseur de votre MDB lors
du Update
LenCurDB = FileLen(Application.CurrentDb.Name) / 1024
MaxDiff = 2000 '// Autorise un maximum de 2 meg de différence

'// Si la différence entre "LenUpdDB" et "LenCurDB" est plus grande
de 2 meg alors
' ont coche l'option "Compacter lors de la fermeture" à True sinon
on remet à False

If LenCurDB - LenUpdDB > MaxDiff Then
If MsgBox("Afin d'améliorer la performance de votre application il
serait préférable d 'éffectuer une compression de la base avant la
fermeture." & vbCrLf & vbCrLf & "Nous allons procéder à la compression
immédiatement . Merci de patienter jusqu'à la fermeture complète pour
eviter toute perturbation", vbOKOnly + vbQuestion, "Compacter les
dossiers") Then
Application.SetOption "Auto Compact", True
End If
Else
Application.SetOption "Auto Compact", False
End If

CompactCurrentDB_Exit:
Exit Sub

CompactCurrentDB_Err:
MsgBox Error$
Resume CompactCurrentDB_Exit

End Sub

puis tu rappelle la fonction sur ton boton de sortie par exemple aavec
call CompactCurrentDB

a plus
3stone
Le #20026021
Salut,


Le plus simple et performant est de cocher d'office cette propriété.
Inutile d'attendre qu'une différence de taille (différence qui peut
d'ailleurs être atteinte en qulques requêtes...)

Mais, je ne pense pas que le demandeur parle de "compactage"
mais bien de "compression" - style ZIP.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)






MINOT gilles wrote:
On 31 août, 09:15, fmvac
Bonjour,

Je suis à la recherche d'une solution VBA pour compresser un fichier.

Merci pour vos suggestions



tu colles ce code dans un module

Public Sub CompactCurrentDB()
On Error GoTo CompactCurrentDB_Err

Dim LenCurDB As Long '// Grosseur actuelle de la base de donnée
Dim LenUpdDB As Long '// Grosseur de la base de donnée lors du dernier
Update
Dim MaxDiff As Long '// Différence permise avant le compact
automatique
Dim db As Database

LenUpdDB = 10000 '// Inscrire ici la grosseur de votre MDB lors
du Update
LenCurDB = FileLen(Application.CurrentDb.Name) / 1024
MaxDiff = 2000 '// Autorise un maximum de 2 meg de différence

'// Si la différence entre "LenUpdDB" et "LenCurDB" est plus grande
de 2 meg alors
' ont coche l'option "Compacter lors de la fermeture" à True sinon
on remet à False

If LenCurDB - LenUpdDB > MaxDiff Then
If MsgBox("Afin d'améliorer la performance de votre application il
serait préférable d 'éffectuer une compression de la base avant la
fermeture." & vbCrLf & vbCrLf & "Nous allons procéder à la compression
immédiatement . Merci de patienter jusqu'à la fermeture complète pour
eviter toute perturbation", vbOKOnly + vbQuestion, "Compacter les
dossiers") Then
Application.SetOption "Auto Compact", True
End If
Else
Application.SetOption "Auto Compact", False
End If

CompactCurrentDB_Exit:
Exit Sub

CompactCurrentDB_Err:
MsgBox Error$
Resume CompactCurrentDB_Exit

End Sub

puis tu rappelle la fonction sur ton boton de sortie par exemple aavec
call CompactCurrentDB

a plus


fmvac
Le #20038211
Bonjour,

Je crois que j'ai mal posé ma question.

Ce que je recherche, c'est le code vba pour compressé un fichier windows
(ZIP) et non un compactage d'une base de donnée.

"3stone" a écrit :

Salut,


Le plus simple et performant est de cocher d'office cette propriété.
Inutile d'attendre qu'une différence de taille (différence qui peut
d'ailleurs être atteinte en qulques requêtes...)

Mais, je ne pense pas que le demandeur parle de "compactage"
mais bien de "compression" - style ZIP.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)






MINOT gilles wrote:
> On 31 août, 09:15, fmvac >> Bonjour,
>>
>> Je suis à la recherche d'une solution VBA pour compresser un fichier.
>>
>> Merci pour vos suggestions
>
> tu colles ce code dans un module
>
> Public Sub CompactCurrentDB()
> On Error GoTo CompactCurrentDB_Err
>
> Dim LenCurDB As Long '// Grosseur actuelle de la base de donnée
> Dim LenUpdDB As Long '// Grosseur de la base de donnée lors du dernier
> Update
> Dim MaxDiff As Long '// Différence permise avant le compact
> automatique
> Dim db As Database
>
> LenUpdDB = 10000 '// Inscrire ici la grosseur de votre MDB lors
> du Update
> LenCurDB = FileLen(Application.CurrentDb.Name) / 1024
> MaxDiff = 2000 '// Autorise un maximum de 2 meg de différence
>
> '// Si la différence entre "LenUpdDB" et "LenCurDB" est plus grande
> de 2 meg alors
> ' ont coche l'option "Compacter lors de la fermeture" à True sinon
> on remet à False
>
> If LenCurDB - LenUpdDB > MaxDiff Then
> If MsgBox("Afin d'améliorer la performance de votre application il
> serait préférable d 'éffectuer une compression de la base avant la
> fermeture." & vbCrLf & vbCrLf & "Nous allons procéder à la compression
> immédiatement . Merci de patienter jusqu'à la fermeture complète pour
> eviter toute perturbation", vbOKOnly + vbQuestion, "Compacter les
> dossiers") Then
> Application.SetOption "Auto Compact", True
> End If
> Else
> Application.SetOption "Auto Compact", False
> End If
>
> CompactCurrentDB_Exit:
> Exit Sub
>
> CompactCurrentDB_Err:
> MsgBox Error$
> Resume CompactCurrentDB_Exit
>
> End Sub
>
> puis tu rappelle la fonction sur ton boton de sortie par exemple aavec
> call CompactCurrentDB
>
> a plus




3stone
Le #20038811
Salut,

fmvac wrote:

Ce que je recherche, c'est le code vba pour compressé un fichier
windows (ZIP) et non un compactage d'une base de donnée.



Il y a déjà un moment... mais cela doit encore fonctionner ;-)
http://www.vbfrance.com/codes/CLMZIP-IDEM-WINZIP_4054.aspx

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Publicité
Poster une réponse
Anonyme