IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

[VBA]Numéro automatique commençant par un nombre donné ?


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 22
    Points : 6
    Points
    6
    Par défaut [VBA]Numéro automatique commençant par un nombre donné ?
    Bonjour,

    voilà, je voudrais ajouter à une table existante (vide) un champ numéro automatique.
    Comment faire pour que la valeur attribuée commence à partir d'un nombre donné ? pour que la valeur du champ soit par exemple "401" au premier enregistrement, "402" au deuxième, etc...
    J'ai déjà un numéro auto dans ma table et access ne veut pas en ajouter un deuxième.
    Serait-il alors possible, étant donné que le premier numéro auto commence par "1" d'ajouter à chaque fois "400" au premier numéro auto pour définir le deuxième champ numéro auto (qui n'en est pas un en fait) ?

    merci pour votre aide

  2. #2
    Membre actif Avatar de samlepiratepaddy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 320
    Points : 217
    Points
    217
    Par défaut
    http://access.developpez.com/faq/?pa...reerSonNumAuto
    je crois que c'est exactement le resultat que tu veux !
    C'est a dire Créer ton propre N°Auto qui s'incrémente tout seul !
    Et qui commence a 400, ben ça c'est pas dur!!!
    La connaissance ne vaut que si elle est partagée par tous et pour tous!
    Access et moi c'est mais en fait on s' bien !
    Ps: Je comprend très vite quand on m'explique longtemps !!

  3. #3
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Ce n'est pas la meilleure méthode, il vaut mieux procéder de la sorte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE maTable ALTER COLUMN monChampAutoIncrement COUNTER(400,1)
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 22
    Points : 6
    Points
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE maTable ALTER COLUMN monChampAutoIncrement COUNTER(400,1)
    avec cette solution, Access affiche le message d'erreur

    "Type de champs de données non valide" (mon champ est un numérique étant donné qu'Access n'accepte qu'un numéro auto et que j'en ai déjà un)

  5. #5
    Membre expérimenté
    Avatar de Frank
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Avril 2002
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 095
    Points : 1 392
    Points
    1 392
    Par défaut
    et si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE maTable ALTER COLUMN monChampAutoIncrement COUNTER(1,400)
    ?
    Début du numéro auto à 1 avec une intervalle de 400, si j'ai bien saisi ce que te propose Caféine.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 22
    Points : 6
    Points
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE Tbl_CLIENT ALTER COLUMN Num_privilege COUNTER(1,400);
    Cela ne change rien, j'ai toujours le message d'erreur d'Access
    "Type de champs de données non valide"

    et avec la proposition de samlepiratepaddy, aucune valeur ne s'enregistre dans le champ Num_privilege

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub Form_BeforeInsert(Cancel As Integer)
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset(Me.RecordSource, dbOpenForwardOnly)
    If rs.EOF Then
    Me!Num_privilege = 401
    Else
    rs.MoveLast
    Me!Num_privilege = rs!Num_privilege + 1
    End If
    rs.Close
    Set rs = Nothing
    End Sub

  7. #7
    Membre actif Avatar de samlepiratepaddy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 320
    Points : 217
    Points
    217
    Par défaut
    Re,
    Je ne pense par que le code soit sur le bon evènement !
    Sur afterMaj du premier champ rempli peut etre !
    Mais attention dans ton code tu partira toujours de 401 !!!!
    Me!NumPrivilege doit etre le dernier N° de la table !!!
    Et non =401 !!!
    La première ligne OK mais la seconde tu veux bien quelle affiche 402, la troisième 403 etc....
    Sinon dans ton code actuel, il renverra toujours 402 en résultat !
    il faut donc ajouter 1 au dernier enregistrement de NumPrivilege de ta table !
    @+
    La connaissance ne vaut que si elle est partagée par tous et pour tous!
    Access et moi c'est mais en fait on s' bien !
    Ps: Je comprend très vite quand on m'explique longtemps !!

  8. #8
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 336
    Points : 19 572
    Points
    19 572
    Billets dans le blog
    65
    Par défaut
    Pour la 1ère solution,
    As tu mis [event procedure] sur l'evenement BeforeInsert de ton form:

    Sinon pour:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE Tbl_CLIENT ALTER COLUMN Num_privilege COUNTER(1,400);
    quelle version d'access utilise tu ?
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 22
    Points : 6
    Points
    6
    Par défaut
    dans les propriétés du form sous VBA, il y a bien [event procedure] dans BeforeInsert.
    Sinon j'utilise Access 2003.

  10. #10
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 336
    Points : 19 572
    Points
    19 572
    Billets dans le blog
    65
    Par défaut
    Ton champ Num_privilege dans ta table tbl_Client est de quel type pour le moment ?
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 22
    Points : 6
    Points
    6
    Par défaut
    Num_privilege est de type Numérique (Entier Long)

  12. #12
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 336
    Points : 19 572
    Points
    19 572
    Billets dans le blog
    65
    Par défaut
    Pour la 1ère solution sur ajout d'1 nouvel enrg normalement 1 numéro s'ajoute égal à 1+le numéro de l'enrg précédent, mais sur ajout seulement.

    Je ne conseil plutot d'utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE Tbl_CLIENT ALTER COLUMN Num_privilege COUNTER(1,400);
    Ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE Tbl_CLIENT ADD COLUMN Num_privilege COUNTER(1,400);

    mais il faut supprimer ton champ Num_Privilege avant.
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 22
    Points : 6
    Points
    6
    Par défaut
    Pour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE Tbl_CLIENT ALTER COLUMN Num_privilege COUNTER(1,400);
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ALTER TABLE Tbl_CLIENT ADD COLUMN Num_privilege COUNTER(1,400);
    j'ai un message d'erreur qui me dit
    "la table résultante ne peut pas avoir plus d'un champ AutoNumber"

  14. #14
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Tu ne peux pas avoir plus d'un champ autoincrement par table.

    je vais tester mon code sur une base 2000 ...

    en attendant as-tu bien orthographié le nom du champ autoincrement de ta table ainsi que ta table ?
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 22
    Points : 6
    Points
    6
    Par défaut
    Oui, le nom du champ et le nom de la table sont bien orthographiés;

  16. #16
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Bon je viens de tester ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.RunSQL "ALTER TABLE clients ADD COLUMN id COUNTER(401);"
    ce code fonctionne mais uniquement pour les nouveaux enregistrements que tu vas ajouter.

    Entre nous, un id autoincrémenté n'a pas à être porteur d'information, c'est une erreur de conception, le numéro pourrait être arbitraire, si tu as besoin de créer un chrono je te recommande d'utiliser un autre champ ou de repenser ton modèle.
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  17. #17
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 33
    Points : 33
    Points
    33
    Par défaut
    Salut
    Autre solution qu'on m'avait proposé
    1- créer une table temporaire tbl1 avec un champ contenant la valeur souhaité - 1 (400-1=399)
    2 - créer une requête ajout avec comme source tbl1
    et ajout table : sélectionne ta table
    et sélectionne ton champ n° auto
    3 - dans ta table (avec ton numéro auto) supprime la clé primaire, les propriétés null interdit, indexé, valide si
    4 - exécute la requête ajout
    5 - supprime la table tbl1 ainsi que la requête ajout
    6 - compacte ta base de donnée
    7 - suprime le nouvel enregistrement dans ta table
    et enfin remet ta clé ainsi que les paramètre supprimés

    Je sais que sais long mais je pense que ça marche

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 167
    Points : 79
    Points
    79
    Par défaut
    Je viens de suivre les procédures décrites pour initialiser un autonumber à ma table à partir d'un nombre précis et ca fonctionner sans problème. Excellente suggestion. Bravo !

    Merci pour tous.

  19. #19
    Membre régulier
    Homme Profil pro
    apprenti ingénieur en informatique et réseaux
    Inscrit en
    Octobre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : apprenti ingénieur en informatique et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 71
    Points : 73
    Points
    73
    Par défaut
    Désolé de remonter le message, mais pour résoudre le problème de Nefret j'ai du modifier mon numeroAuto en Numérique, sauvegarder, puis le remettre en numeroAuto. et la requete SQL marche.

  20. #20
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 555
    Points
    24 555
    Par défaut
    Bonjour,

    Tu fais ça en plein milieu du fonctionnement de ton appli ?

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

Discussions similaires

  1. [XL-2010] VBA: Supprimer ligne commençant par un caractère donné
    Par arves dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/01/2014, 10h07
  2. [RegEx] Trouver un mot commençant par une lettre donnée
    Par Arget dans le forum Langage
    Réponses: 7
    Dernier message: 18/09/2011, 17h41
  3. [Chaines de caractères] commençant par un nombre
    Par sempire dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/05/2009, 18h30
  4. Réponses: 2
    Dernier message: 03/03/2008, 03h31
  5. VBA: Supprimer ligne commençant par un caractère donné
    Par urbanspike dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 18/01/2008, 12h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo