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