Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1175 connectés 

  FORUM HardWare.fr
  Windows & Software
  Logiciels

  Access - numérotation

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Access - numérotation

n°2882979
alexstain
Geek en stock
Posté le 28-07-2009 à 16:25:01  profilanswer
 

Bonjour,
 
Je suis en train de construire une base de données de mes contacts (pour apprendre à utiliser access).
J'aimerais pouvoir numéroter ces contacts pour leur donner un identifiant unique.
Comment faire, pourqu'à chaque fois que j'ajoute un nouveau contact, le numéro suivant le dernier entré lui soit affecté automatiquement??
 
Je n'y connais rien en VBA...
 
Merci

mood
Publicité
Posté le 28-07-2009 à 16:25:01  profilanswer
 

n°2883128
SuppotDeSa​Tante
Aka dje69r
Posté le 29-07-2009 à 14:09:32  profilanswer
 

Bonjour
 
Plusieurs solutions :
 
- Mettre un champ AutoNumber (NuméroAuto). A chaque fois que tu saisis un contact, il va s'incrementer de 1 tout seul. Inconvenient : Si tu en supprimes un, le numéro reste en mémoire jusqu'a compactage de la base. Donc tu peux avoir des trous.
 
- Passer par une table intermédiaire :
     - Créer un champ vide, numérique, dans ta table Contacts
     - Créer deux tables, avec un champ AutoNumber (NumAuto) et un champ qui correspondra a la clé de table contact (NumContact).
     - Les nommer, les tables, par exemple comme cela : CpteContact et CpteContactV
     - Créer une requete ajout, qui va aller ajouter tous tes contacts dans la table CpteContact, dans le second champ (Ta clé de ta table contact sera dans le champ NumContact de la table CpteContact)
     - Créer une requete mise a jour, qui va aller mettre a jour le champ numérique de ta table Contacts par le second champ de la table CpteContacts, en fonction de la clé de la table CpteContacts
     - Créer une macro Access, avec un :
          - CopierObjet, Base destination : rien ; Nouveau nom : CpteContact ; Type de l'objet source : Table ; Nom de l'objet source : CpteContactV
          - Ouvrir Requete, Nom requete : Ta table ajout
          - Ouvrir Requete, Nom requete : Ta table mise a jour
 
- En VBA
     - Ajouter un champ, numérique, à ta table Contact
     - Créer un RecordSet sur ta table contact

Code :
  1. 'Liaison a la table
  2. Set bds = CurrentDb
  3. Set RstTableEnr = CurrentDb.OpenRecordset("Contacts" )


     - Créer une boucle sur le nb d'enregistrements de ta table Contacts

Code :
  1. 'Boucle
  2. With RstTableEnr   
  3.     Cpte = .RecordCount
  4.     For x = 1 To Cpte


     - Incrémenter de 1 ton champ a chaque passage, mais en fait on lui donne la valeur de x, puisque x va de 1 à ton nombre d'enregistrement.

Code :
  1. 'Affectaion du nb incrémenter a ton champ
  2. !NomDeTonChamp = x


     - Passer a l'enregistrement suivant

Code :
  1. 'Enr suivant
  2.         .MoveNext


Ce qui donnerait en complet :

Code :
  1. Sub alexstain
  2.     Set bds = CurrentDb
  3.     Set RstTableEnr = CurrentDb.OpenRecordset("Contacts" )
  4.     With RstTableEnr   
  5.         Cpte = .RecordCount
  6.         For x = 1 To Cpte
  7.             !NomDeTonChamp = x
  8.             .MoveNext
  9.         Next x
  10.     End With
  11. End sub


 
Si tu as des questions, no soucy
 
Cordialement

Message cité 1 fois
Message édité par SuppotDeSaTante le 29-07-2009 à 14:12:35

---------------
Soyez malin, louez entre voisins !
n°2885031
alexstain
Geek en stock
Posté le 06-08-2009 à 14:35:17  profilanswer
 

Super merci, l'autonumber a l'air intéressant.
Comment faire pour que l'autonumber affiche A1, A2, A3, An....pour tous les contacts donc le nom commence par A, B1, B2, B3, Bn pour tous les contacts dont le nom commence par B...etc...
 
Merci

n°2885077
SuppotDeSa​Tante
Aka dje69r
Posté le 06-08-2009 à 16:05:38  profilanswer
 

Hello
 

alexstain a écrit :

Super merci, l'autonumber a l'air intéressant.
Comment faire pour que l'autonumber affiche A1, A2, A3, An....pour tous les contacts donc le nom commence par A, B1, B2, B3, Bn pour tous les contacts dont le nom commence par B...etc...
 
Merci


 
Ici :

SuppotDeSaTante a écrit :

- Incrémenter de 1 ton champ a chaque passage, mais en fait on lui donne la valeur de x, puisque x va de 1 à ton nombre d'enregistrement.

Code :
  1. 'Affectaion du nb incrémenter a ton champ
  2. !NomDeTonChamp = x



 
Remplacer par :

Code :
  1. !NomDeTonChamp = Left(!NomDeTonChampContact,1) & x


---------------
Soyez malin, louez entre voisins !
n°2897369
alexstain
Geek en stock
Posté le 02-10-2009 à 11:25:04  profilanswer
 

super ! Est ce que je dois continuer à utiliser mon autonumber comme clé primaire, ou est ce que je supprime le champ?

n°2897408
SuppotDeSa​Tante
Aka dje69r
Posté le 02-10-2009 à 13:56:23  profilanswer
 

Ca depend de ce que tu souhaites utiliser comme index


---------------
Soyez malin, louez entre voisins !
n°2912832
alexstain
Geek en stock
Posté le 19-11-2009 à 17:13:20  profilanswer
 

Bonjour,
 
J'ai créé un module en suivant la procédure, sauf que j'ai mis un champ texte au lieu du némrique (vu qu'il y a des lettres).
Malheureusement ça ne marche pas, la colonne reste vide.
 
le module:
 
Sub contactRef()
Set bds = CurrentDb
Set RstTableEnr = CurrentDb.OpenRecordset("T_contacts" )
With RstTableEnr
Cpte = .RecordCount
For x = 1 To Cpte
!contact_Ref = Left(!contact_name, 3) & x
MoveNext
   Next x
End With
End Sub
 
Qu'est ce qui ne va pas???
 
Merci

n°2912838
dll_75
Posté le 19-11-2009 à 17:36:00  profilanswer
 

je trouve que vous vous compliquez la vie pour rien!
 
- Un numéro auto suffit amplement.
 
- Des trous dans les numéros (après suppression),
   ca n'a jamais été un  probleme.
   Je ne comprends pas très bien????
 
- Pourquoi vouloir une clé alphanumérique A1, A2 etc????
 
 
 

n°2912839
alexstain
Geek en stock
Posté le 19-11-2009 à 17:45:34  profilanswer
 

J'ai envie de pouvoir identifier le pays d'un contact facilement rien qu'en regardant son numéro de référence.
 
Par exemple le 8ème contact italien sera ita0008
 
Comment faire?
 
Merci

n°2912840
alexstain
Geek en stock
Posté le 19-11-2009 à 17:46:35  profilanswer
 

ça permet de distinguer facilement les homonymes par exemple

mood
Publicité
Posté le 19-11-2009 à 17:46:35  profilanswer
 

n°2912888
SuppotDeSa​Tante
Aka dje69r
Posté le 19-11-2009 à 20:49:06  profilanswer
 

Bonsoir
 
Deja il y a une erreur dans le code.
Cela vient peut etre de ca :
.MoveNext
et pas
MoveNext
 
Ensuite si vraiment la valeur de x pose souci au format numérique, ce dont je doute (vu que la variable n'a pas de type déclaré), tu peux faire :
Cstr(x)
pour le transformer en chaine vu que ton champ est du texte.
 
Cordialement.
 
PS : pour ce qui est de se compliquer la vie, plusieurs solutions ont été proposées plus haut. Dont le autonumber.


Message édité par SuppotDeSaTante le 19-11-2009 à 20:50:27

---------------
Soyez malin, louez entre voisins !
n°2912976
alexstain
Geek en stock
Posté le 20-11-2009 à 11:26:00  profilanswer
 

Merci, mais sincèrement, je ne comprends rien.
Je ne suis pas développeur, je suis dans le marketing...
 

n°2912980
SuppotDeSa​Tante
Aka dje69r
Posté le 20-11-2009 à 11:34:50  profilanswer
 

Il y a mon mail dns mon profil, envoie ta base et ce que tu souhaites concretement, je jette un oeil d'ici a ce week end.
 
Je reposterais ici, interrogation, solution etc.
 
 
Cordialement.


Message édité par SuppotDeSaTante le 20-11-2009 à 11:35:09

---------------
Soyez malin, louez entre voisins !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Logiciels

  Access - numérotation

 

Sujets relatifs
Problème Access // Imagerecherche pro des liaisons access et outlook
Problème avec ACCESS[XLS/MDB] Filtre Excel/Access
[ACCESS 2000]Formulaire : liste déroulante dépendante de paramètresAide sur Access 2003
access formule pour dates[Access] Importer des données intranet
[MS Access] Numérotation automatique en fonction de...Urgent....comment réinitialiser une numérotation auto. sous Access
Plus de sujets relatifs à : Access - numérotation


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR