Changer l'extension de fichier par VBA

DoCmd.RunCommand acCmdDeleteRecord c’est une commande enregistrement par enregistrement
Comme c’est une table indexée, il ne fait pas dans l’ordre, et donc il doit recompacter à chaque fois
Or recompacter en Access, c’est copier toute la table, effacer l’original, puis renommer.
Donc si les volumes dépassent ce qui est traitable en memoire vive …
Edité le 22/06/2007 à 16:40

Oui ça je sais (quoique je suis pas sûr pour le recompactage), mais normalement le DELETE * FROM devrait être plus rapide

On est bien d’accord. Il est certainement plus rapide.
Parce qu’en fait, ça équivaut à une requête de suppression, et une requête de suppression c’est très rapide en Access.
Surtout quand il ne reste pas d’enregistrement à mettre dans la nouvelle table
Edité le 22/06/2007 à 17:22

dsl de pas avoir reparler plustot mais vendredi j’ai quitté trés tôt 15h50 environ!!dsl.
Donc jvien d’essayer le DELETE * FROM… et j’avou c’est bien plus rapide!!LOL.

Il me semblait aussi :miam:
Edité le 25/06/2007 à 08:40

lol!! :wink:

j’ai un nouveau problème c’est à dire que lorsque j’ai supprimé le contenue des tables, j’ai créer manuellement la clé primaire de type NuméroAuto mais le problème c’est que si je décide de recommencer à re-supprimer le contenue des tables et onc à r’insserrer le contenue ben le NumeroAuto ne commence pas à 1(1,2,3,4,5… n’exste pas) ca commence à 218613 jusqu’à 225424, donc pas logique.
Donc voila moi j’aimerai mettre le numéro dans l’ordres c’est à dire qu’il parte à 1. comment puis-je faire??

C’est normal, par définition une clé primaire n’est jamais utilisée deux fois pour des question d’intégrité y compris dans le temps.

La seule manière de recommencer à zéro la numérotation est de compacter ta BD (outils -> utilitaires de BD -> Compatcer) lorsque la table en quetsion est vide. Ensuite la numérotation reprendra à 1.

Malheureusement à mon avis tu ne va pas pouvoir le faire par code VBA. Il y a cette focntion mais en principe elle refuse de s’exécuter sur la BD ouverte: DoCmd.RunCommand acCmdCompactDatabase
Si tu utilises VB par ADO ou DAO ça fonctionne, mais VBA c’ets pas sûr. A chercher sur le web !


Tu peux éventuellement essayer avec un truc du style (j'ai pas testé), en copiant la BD en la compactant puis en effaçant ensuite la copie:
sNomBase= "C:\Mes documents\Base.MDB"
sNomBaseTmp= "C:\Mes documents\BaseTmp.MDB"
  
'1. Compactage dans une nouvelle base
DBEngine.CompactDatabase sNomBase, sNomBaseTmp

'2. Suppression de la base originale
Kill sNomBase

'3. Renommer la base compactée avec le nom de la base originale 
Name sNomBaseTmp As sNomBase 

Source

ok, jray, merci beaucoup, je vais m’en ocuper!!

donc jray, en fet jvien de parler avec mon maitre de stage, jlui es expliqué le probléme et il ma di de laisser tomber pour l’instant l’importation car pas trop grave si il a le faire manuellement!! enfin si j’ai le temps dans la semaine je reverrai ce que je peux faire.