Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

La plus grande valeur dans une colonne

3 réponses
Avatar
ManBas
Bonjour à tous,
Pour doter une base de données d'une clef primaire, j'ai besoin de créer une
colonne qui introduirait un numéro incrémenté automatiquement.
Ce numéro ne peut pas être indexé sur le nombre de ligne (j'ai trouvé cette
solution qui ne marche pas) car si on supprime une ligne alors on crée un
doublon lors du prochain enregistrement (et ce n'est plus une clef
primaire).
Donc il faut que cette valeur soit égale à [la plus grande valeur numérique
de la colonne +1].
Ce qui est sûr c'est que tant qu'il n'y aura pas de suppression
d'enregistrement, la valeur sera identique à l'indexation des lignes.
Pouvez-vous m'aider SVP ?

Merci beaucoup +++

3 réponses

Avatar
michdenis
Bonjour ManBas,

Pouquoi as-tu besoin d'une telle routine dans Excel. Si ton seul souci est de pouvoir exporter tes données dans une table access, si
cette table possède comme clé primaire un champ numérotation automatique, tu n'as nul besoin de définir ce champ dans Excel. Access
se charge d'incrémenter ses entrées au fur et à mesure qu'elles se font.


Salutations!


"ManBas" a écrit dans le message de news:
Bonjour à tous,
Pour doter une base de données d'une clef primaire, j'ai besoin de créer une
colonne qui introduirait un numéro incrémenté automatiquement.
Ce numéro ne peut pas être indexé sur le nombre de ligne (j'ai trouvé cette
solution qui ne marche pas) car si on supprime une ligne alors on crée un
doublon lors du prochain enregistrement (et ce n'est plus une clef
primaire).
Donc il faut que cette valeur soit égale à [la plus grande valeur numérique
de la colonne +1].
Ce qui est sûr c'est que tant qu'il n'y aura pas de suppression
d'enregistrement, la valeur sera identique à l'indexation des lignes.
Pouvez-vous m'aider SVP ?

Merci beaucoup +++
Avatar
jb
Bonjour,

Il faut créer un onglet 'Compteur' et gérer un compteur dans la
cellule A2 e.g.

Sub compteur()
Sheets("compteur").Range("A2") = Sheets("compteur").Range("A2") + 1
Sheets("bd").Range("A65536").End(xlUp).Offset(1, 0)
=Sheets("compteur").Range("A2")
ActiveWorkbook.Save
End Sub

On obtient:

No Nom
1 Dupont
2 Martin
3 Espinasse

Autre solution: Génère une clé alpha 0004 e.g.

Sub compteur()
Sheets("compteur").Range("A2") = Sheets("compteur").Range("A2") + 1
Sheets("bd").Range("A65536").End(xlUp).Offset(1, 0) = "'" &
Format(Sheets("compteur").Range("A2"), "0000")
End Sub

Cordialement JB
Avatar
ManBas
Bonjour JB,
..."et voilàààà...." (roulements de tambours et de cymbales).
Comme d'habitude, simple, génial. Je viens d'apprendre le compteur.
Pour répondre à Michdenis, le but est de travailler dans XL sur des
applications monoposte dont chacune a sa clef primaire composée par le nom
du poste et le numéro incrémenté. Le regroupement des données pourra être
fait ensuite dans Access.
Merci beaucoup.
A bientôt.

PS: je croyais avoir déjà répondu tôt ce matin mais peut-être ai-je fait
une fausse manoeuvre?
"jb" a écrit dans le message de news:

Bonjour,

Il faut créer un onglet 'Compteur' et gérer un compteur dans la
cellule A2 e.g.

Sub compteur()
Sheets("compteur").Range("A2") = Sheets("compteur").Range("A2") + 1
Sheets("bd").Range("A65536").End(xlUp).Offset(1, 0)
=Sheets("compteur").Range("A2")
ActiveWorkbook.Save
End Sub

On obtient:

No Nom
1 Dupont
2 Martin
3 Espinasse

Autre solution: Génère une clé alpha 0004 e.g.

Sub compteur()
Sheets("compteur").Range("A2") = Sheets("compteur").Range("A2") + 1
Sheets("bd").Range("A65536").End(xlUp).Offset(1, 0) = "'" &
Format(Sheets("compteur").Range("A2"), "0000")
End Sub

Cordialement JB