Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Compresser un fichier en VBA

4 réponses
Avatar
fmvac
Bonjour,

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

Merci pour vos suggestions

4 réponses

Avatar
MINOT gilles
On 31 août, 09:15, fmvac wrote:
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
Avatar
3stone
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 wrote:
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


Avatar
fmvac
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 wrote:
>> 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




Avatar
3stone
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)