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

Compression d'une base access via code VBA ?

3 réponses
Avatar
Pierre
Bonsoir,

J'ai concu une série d'instructions dans une macro.

Cette macro doit importer un fichier dans une table de ma base qui comporte
un champ "numauto".

A chaque fois que je lance un nouveau traitement, je vide d'abord ma table
d'import, puis j'importe mon fichier.

Le problème comme d'habitude est que la fonction "numauto" ne se
réinitialise pas à "0", sauf à compresser ma base manuellement entre chaque
traitement.

Y'a t il une façon d'inclure la compression de ma base à l'intérieur de ma
macro (ie après le "Delete" des enregistrements de ma table), via une
instruction en VBA ?

Merci de vos suggestions.

Cordialement

3 réponses

Avatar
3stone
Salut,

"Pierre"
J'ai concu une série d'instructions dans une macro.



Module VBA ou "macro macro" ;-(


Cette macro doit importer un fichier dans une table de ma base qui comporte
un champ "numauto".

A chaque fois que je lance un nouveau traitement, je vide d'abord ma table
d'import, puis j'importe mon fichier.

Le problème comme d'habitude est que la fonction "numauto" ne se
réinitialise pas à "0", sauf à compresser ma base manuellement entre chaque
traitement.



Normalement, le numauto-clé primaire est là pour avoir un identifiant unique
pour un enregistrement et ne devrais influencer par sa valeur.


Y'a t il une façon d'inclure la compression de ma base à l'intérieur de ma
macro (ie après le "Delete" des enregistrements de ma table), via une
instruction en VBA ?



On peut compacter la base en cours...
Mais de la à le faire "tout en restant DANS le code"....

Regarde ceci: http://access.jessy.free.fr/htm/DownLoad/CompactDb.htm


--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome

Avatar
Evaro
Bonjour,

"Pierre" a écrit dans le message de news:
4187f123$0$15752$
Bonsoir,

J'ai concu une série d'instructions dans une macro.

Cette macro doit importer un fichier dans une table de ma base qui
comporte
un champ "numauto".

A chaque fois que je lance un nouveau traitement, je vide d'abord ma table
d'import, puis j'importe mon fichier.

Le problème comme d'habitude est que la fonction "numauto" ne se
réinitialise pas à "0", sauf à compresser ma base manuellement entre
chaque
traitement.

Y'a t il une façon d'inclure la compression de ma base à l'intérieur de ma
macro (ie après le "Delete" des enregistrements de ma table), via une
instruction en VBA ?

Merci de vos suggestions.

Cordialement



Il n'est pas possible de compacter une base ouverte
L'astuce consiste à ouvrir une autre base et à compacter la Base en cours.

Public Function CallCompacte()
Dim Bidon As Variant
Dim intChoix As Integer
On Error GoTo Err_Compacte
CallCompacte = Shell(SysCmd(acSysCmdAccessDir) & "Msaccess.exe " &
MonChemin & "Compacte.mdb", vbMaximizedFocus)
DoCmd.Quit
End Function

Au démarrage de la base "Compacte.mdb", tu lances le compactage :


Public Function Compacte
Dim fso As Scripting.FileSystemObject

Set fso = CreateObject("Scripting.FileSystemObject")

' On doit Compacter la base sous un nom différent
DBEngine.CompactDatabase MonChemin & "MaBase.mdb", MonChemin &
"Toto.mdb"
Kill (MonChemin & "MaBase.mdb")

' Renommer la base compactée
fso.Movefile MonChemin & "Toto.mdb", MonChemin & "MaBase.mdb"

MsgBox ("Compactage effectué avec succès")
' Relancer la Base Compactée
Compacte = Shell(SysCmd(acSysCmdAccessDir) & "Msaccess.exe " & MonChemin
& "MaBase.mdb", vbMaximizedFocus)
Currentdb.Close
DoCmd.Quit
Exit Function

Penser à cocher la référence Microsoft Scripting Runtime.

@ +

Etienne

Avatar
Daniel Carollo
Bonjour Pierre!

Le plus simple serait d'importer les donnees dans la table apres avoir
supprime le champ numeroauto, et de creer ce champ ensuite.

Bonne contiuation,

--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...


"Pierre" wrote in message
news:4187f123$0$15752$
Bonsoir,

J'ai concu une série d'instructions dans une macro.

Cette macro doit importer un fichier dans une table de ma base qui
comporte

un champ "numauto".

A chaque fois que je lance un nouveau traitement, je vide d'abord ma table
d'import, puis j'importe mon fichier.

Le problème comme d'habitude est que la fonction "numauto" ne se
réinitialise pas à "0", sauf à compresser ma base manuellement entre
chaque

traitement.

Y'a t il une façon d'inclure la compression de ma base à l'intérieur de ma
macro (ie après le "Delete" des enregistrements de ma table), via une
instruction en VBA ?

Merci de vos suggestions.

Cordialement