Bonjour.
Désolé, j'ai cherché en vain comment déplacer un champ (dans mon cas en première colonne) après l'avoir inséré.
J'essaye d'utiliser la propriété OrdinalPosition mais le champ reste dans la même position (dernière colonne) qlqsoit la valeur attribuée à la propriété (celle-ci est bien en lecture écriture dans l'explorateur d'objet).
J'ajoute que je ne veux pas utiliser de requête puisque celle-ci dépend du format de la table d'entrée qui lui même est mis à jour par le code (insertion d'un champ) en bref tout doit se faire en vba (si possible)
Voici le code (c'est l'étape 4 qui ne fonctionne pas):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30
31
32
33
34
35
36 Sub AjoutChampDansTable() Dim oDb As DAO.Database Dim oTbl As DAO.TableDef Dim oFld As DAO.Field Dim tTable As DAO.TableDef Set oDb = CurrentDb 'Suppression de la Table A Traiter Originale For Each tTable In oDb.TableDefs If tTable.Name = "Table_A_Traiter_Ori" Then DoCmd.DeleteObject acTable, tTable.Name End If Next 'Copie de la table à traiter DoCmd.CopyObject , "Table_A_Traiter_Ori", acTable, "Table_A_Traiter" Set oTbl = oDb.TableDefs("Table_A_Traiter") 'Etape 1 : Créer le champ Set oFld = oTbl.CreateField("Id", dbText, 120) 'Etape 2 : Définit les propriétés oFld.AllowZeroLength = False 'Chaine vide autorisée : Non oFld.Required = True 'Null interdit : Oui 'Etape 3 : Ajout du champ à la table oTbl.Fields.Append oFld 'Etape 4 : Placement du champ inséré en première colonne oFld.OrdinalPosition = 1 'Rafraichit la collection oTbl.Fields.Refresh End Sub
Partager