Compactage base acces avec Excel 2007

alainca31

XLDnaute Nouveau
Bonjour
J'avais un code pour compacter ma base de donnée en quittant le programme sur Excel 2003 et Windows 2000 qui fonctionnée bien.
Depuis que nous sommes passés sur Vista et Excel 2007 le compactage marche apparemment bien sauf qu'il me renomme une fois sur deux la base en planingTMP.mdb a la place de planing.mdb, donc impossible de rouvrir la base quand je l'appelle du programme Excel
Code ci-dessous

'compactage de la base de données avant de quitter le programme
Public Sub compactage()
Dim sNomBase, sNomBaseTemp As String
sNomBase = lettredisk & chemin
If sNomBase <> "" Then
sNomBaseTemp = lettredisk & Left(chemin, Len(chemin) - 4) & "TMP" & Right(chemin, 4)
DBEngine.CompactDatabase sNomBase, sNomBaseTemp
'effacer l'ancienne base
Kill sNomBase
'renommer la base
Name sNomBaseTemp As sNomBase
End If

End Sub

Public Sub gestion_base()
sNomBase = lettredisk & chemin
Sheets("menu").Range("A1:A1").Select
Selection.Value = Selection.Value - 1
test = Selection.Value
if sNomBase <> "" Then
db.Close
On Error GoTo pbCompact
Call compactage
Exit Sub
End If
pbCompact:
Exit Sub
End Sub
Merci d'avance de votre aide
Cordialement
 

tototiti2008

XLDnaute Barbatruc
Re : Compactage base acces avec Excel 2007

Bonjour Alainca31,

J'ai déjà compacté une base access en VBA mais en utilisant la méthode CompactRepair d'access, pas en utilisant CompactDatabase (ADO ?)

CompactRepair renvoie une valeur pour savoir si le compactage a été mené à bien

Code:
CompactOK = Application.CompactRepair(Sourcefile:=AdresseBase, destinationfile:=AdresseTemporaire)

Bon, le problème est que ça nécessite de manipuler un objet Access...

sinon, peut-être en attendant un peu entre le Kill et le Name avec une boucle et des DoEvents ?
 

Discussions similaires

Réponses
10
Affichages
510

Statistiques des forums

Discussions
312 230
Messages
2 086 428
Membres
103 207
dernier inscrit
Michel67