Autoincrementation a chaque changement de valeur d'un champ

Résolu
rman13 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -  
rman13 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
bonne année a tous les forumers,

quelqu'un aurait-il une idée comment rajouter un champ autoincrémenté en VBA à chaque changement de code placement?

ci après un petit bout de ma table:


Placement champ_auto
A3
A3
A3
A3
A3
B2
A3
A9
A3
H1
H1
H1
A1
A3
A3
A7
V2
H1
A2
A9
B3
B1
V2
H1
V1
A3
H1
D1
D1
D1
D1
D1
A3
A3
B2
A2
M2
A3
V1
A1
M1
I2

ce que j'aimerais avoir c'est qu'à chaque changement de code placement le nombre incrémenté va revenir à 1 et s'il trouve un code qui existait déjà dans les lignes précédentes il va rajouter la valeur de champ_auto correspondant à la dernière code par 1 et ainsi de suite.
Bien sûr ma table contient 9000 lignes d'où la nécessité d'adopter de VBA

Merci a vous
en attendant votre réponse impatiemment



A voir également:

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
je te suggère de remplir champ_auto dans ton exemple, ce sera plus clair.
tu veux peut-être simplement dans ton champ_auto avoir un compteur des occurrences de la valeur en Placement?
ta table contient-t-elle une autre colonne qui peut servir de critère de tri?
ou bien faut-il obligatoirement se baser uniquement sur l'ordre d’apparition dans la table.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
une technique possible est de parcourir les enregistrements de ta table, et, pour chaque enregistrement,
si champ_auto est vide 
   select max(champ_auto) where placement=...
   mettre en champ_auto max+1
0
rman13 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Merci pour ta réponse. Ce que je veux avoir c'est comme ce qui est écrit en bas.En effet, il faut uniquement se baser sur l'ordre d'apparition dans la table.





Placement champ_auto
A3 1
A3 2
A3 3
A3 4
A3 5
B2 1
A3 6
A9 1
A3 7
H1
H1
H1
A1
A3
A3
A7
V2
H1
A2
A9
B3
B1
V2
H1
V1
A3
H1
D1
D1
D1
D1
D1
A3
A3
B2
A2
M2
A3
V1
A1
M1
I2


Bien à toi
0
rman13 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
 
en fouinant dans les forums j'ai réussi à le faire, merci pour ton aide et je met en dessous mon code:





Sub BImp()
maTable = "pays"
monChampEnum = "placement"
nom = "NAME"

Dim i As Long
Dim v As Variant
Dim rs As Recordset

On Error Resume Next
DoCmd.RunSQL "ALTER TABLE [" & maTable & "] DROP COLUMN increm"
DoCmd.RunSQL "ALTER TABLE [" & maTable & "] ADD COLUMN increm INTEGER"
On Error GoTo 0

Set rs = CurrentDb.OpenRecordset("SELECT * FROM [" & maTable & "] where Enservice=-1 ORDER BY [" & monChampEnum & "], [" & nom & "] ")
i = 1
If Not rs.EOF Then v = rs.Fields(monChampEnum)
While Not rs.EOF
If rs.Fields(monChampEnum) <> v Then
v = rs.Fields(monChampEnum)
i = 1
End If
rs.Edit
rs![increm] = i
rs.Update
i = i + 1
rs.MoveNext
Wend
End Sub




PS: Je ne me souvient plus d'où j'ai trouver le code principal
0