Bonjour,
En fait tu as plusieurs possibilités :
- l’exécution du code SQL que tu as fourni ou
ALTER TABLE [nomtable] ADD COLUMN compteurID Autoincrement;
- Ensuite tu peux faire un transfertext puis ajouter du code vba pour créer un champ numéro auto que tu peux indexer ensuite en clé primaire ex :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
dim DB as dao.database
dim TBF as dao.tabledef
dim idx as dao.index
dim fld as dao.field
set DB = Currentdb
set TBF = DB.tabledefs("Matable")
With TBF
'*** Création du champ à indexer ***
Set fld = .CreateField("ID", dbLong) 'doit porter le même nom que le champ de l'index
fld.Attributes = dbAutoIncrField 'NumeroAuto
.Fields.Append fld 'le champ doit être ajouté à la collection fields en 1er
'*** Création de l'index ***
Set idx = .CreateIndex("ID")
idx.Primary = True
'**création du champ de l'index**
idx.Fields.Append idx.CreateField("ID")
'**ajout de l'index
.Indexes.Append idx
End With
DB.TableDefs.Refresh |
Sinon plus simple tu peux créer une importation enregistrée manuellement (ruban "données externe sous 2007")avec la possibilité de laisser access créer ta clé primaire, puis ensuite lancer l'importation par code :
DoCmd.RunSavedImportExport ("NomDeLimportationEnregistree")
Mais j'ai remarqué qu'avec l'ensemble de ces méthodes, les données n'étaient pas toujours triées dans le même ordre. Tu peux avoir parfois plusieurs enregistrements consécutifs qui se retrouvent à un autre endroit et donc n'auront pas la même clé primaire que si tu ré importe le fichier par exemple.
Donc ajouter un champ numéroAuto dans une table qui contient déja des enregistrement peux être problématique si tu as besoin que la clé soit dans un ordre précis.
Les bonnes vieilles méthodes restent donc les plus fiables le cas échéant, une fois importée tu transfert dans une autre table créée auparavant avec une clé primaire, ou tu fait une boucle qui rajoute un champ que tu incrémente (plus long).
Partager