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 :

Code pour générer des numéroAuto personnalisés dans un champ numérique [AC-2013]


Sujet :

VBA Access

  1. #1
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut Code pour générer des numéroAuto personnalisés dans un champ numérique
    Bonjour membres du forum !

    Je sollicite votre aide afin d'obtenir un code permettant de générer des numéros automatiques personnalisés pour un champ numérique d'une table.

    Motif:
    - Compte tenu du fait que le champ de type de données numéroAuto n'étant pas contrôlable ni modifiable, je souhaite avoir ce code qui génère des numéroAutos personnalisés au cas où il y aurais nécessité d'en modifier.

    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Tu voudras sans doute regarder ici :

    Numérotation personnalisée des enregistrements dans Access 2010
    https://warin.developpez.com/tutorie...s/numauto2010/

    Qui couvre largement le sujet.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Bonsoir marot_r,
    Voici ce que je recherche https://www.developpez.net/forums/d1.../#post10817792.
    A+
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  4. #4
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut Donner une idée du but recherché
    Salut !
    J'ai écrit cette procédure qui doit insérer le numéroAuto personnalisé de chaque ligne dans la table ArticlesScolairesEnregistres_Achetes selon le nombre de lignes insérées.

    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
    Sub InsererLignesNumAutoPerso() '*********** Cette procédure inserre les lignes
    On Error GoTo OUMAR
    Dim db As Database
    Dim rst As Recordset
    Dim sql As String
    Dim idX As Long
    Set db = CurrentDb
    
    DoCmd.SetWarnings False
    
            If rst.EOF Then Exit Sub
            rst.MoveFirst
            Do While Not rst.EOF
        
                idX = f_ArticlesScolaires() 
               
                sql = "insert into ArticlesScolairesEnregistres_Achetes (NumVente_Fourn_Scol) values (" & idX & ");"
                
                DoCmd.RunSQL sql
                rst.MoveNext
            Loop
       ' End If
    
    DoCmd.SetWarnings True
    
    Exit Sub
    OUMAR:
        MsgBox "Erreur N° " & err.Number & vbCr & err.description, vbExclamation, "Une erreur est survenue..."
    End Sub
    Voici la fonction qui produit les numéros spécifiquement pour la table en question:
    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
    Public Function f_ArticlesScolaires() As Long
    On Error GoTo OUMAR
    Dim BD As Database
    Dim rs As Recordset
    Set BD = CurrentDb
    Set rs = BD.OpenRecordset("select * from ArticlesScolairesEnregistres_Achetes order by NumVente_Fourn_Scol desc;")
    If rs.EOF Then
       f_ArticlesScolaires = 1
    Else
        f_ArticlesScolaires = rs.Fields("NumVente_Fourn_Scol") + 1
    End If
    Exit Function
    OUMAR:
    MsgBox err.description, vbExclamation, err.Number
    End Function
    Je vous prie de bien vouloir m'excuser en cas d'erreurs.
    Cordialement
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonsoir,
    je n'ai toujours pas compris pourquoi tu ne veux pas du numéro auto dans cette table.
    Est-ce parce que tu ne veux pas de trous dans la numérotation ?

    Pourrais-tu essayer d'expliquer en donnant des exemples précis en quoi cela te gène de l'utiliser ?
    Je n'ai rien contre les nouvelles idées, mais là ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  6. #6
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Bonjour tee_grandbois !

    Est-ce parce que tu ne veux pas de trous dans la numérotation ?
    Mon motif:
    - Compte tenu du fait que le champ de type de données numéroAuto n'étant pas contrôlable ni modifiable,
    je souhaite avoir ce code qui génère des numéroAutos personnalisés au cas où il y aurais nécessité d'en modifier.
    - Je préfère cette méthode de gérer les numéros automatiques "numéroAuto personnalisé" avec du code.

    Je vous envoie une copie qui contient un exemple,
    Voici comment accéder à la commande qui génère un exemple de ce code:
    1- Bouton « SCOLARISATION _ Ajout Informations »
    2- Bouton « ETABLISSEMENT SCOLAIRES ET SERVICES DIVERS _ Ajout Informations » de l’onglet » SERVICES DIVERS _ Ajout Informations »
    3- Bouton « APERCU DES ELEVES DE L'ECOLE EN COURS « de l’onglet » COMPOSITIONS SCOLAIRES ... CANDIDATS AUX EXAMENS ARABE ET FRANCAIS »
    4- Bouton «LISTE_DE_COMPOSITIONS Mtle && Primair « du formulaire » FormListeDeTousLesEleves_AnneeScolaire »
    5- Bouton de commande cmdInitialiser"MODIFIER LES NOTES" dont le code contient la procédure "InsererLignesVierges" insérant
    les numéros grace au code "idX = NumeroAutoNotesFrancais()"

    Espérant trouver une solution adéquate, recevez mes respects les plus profonds.

    Cordialement.
    Fichiers attachés Fichiers attachés
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  7. #7
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    au cas où il y aurais nécessité d'en modifier.
    cite-moi des cas précis ...
    Je vous envoie une copie qui contient un exemple,
    Voici comment accéder à la commande qui génère un exemple de ce code:
    montre-moi cet exemple en copies d'écran s'il te plait ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  8. #8
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    bonjour,
    cite-moi des cas précis ...
    montre-moi cet exemple en copies d'écran s'il te plait ...
    Bonsoir tee_granbois !
    Voici un exemple en captures d'écran.
    Voir post avant dernier pour comment accéder au formulaire exemple.
    Cordialement.
    Images attachées Images attachées    
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  9. #9
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    mais ce n'est pas ce que je t'ai demandé, je voudrais savoir dans quel cas précis as-tu rencontré un problème avec le numéroauto d'Access ?
    Motif:
    - Compte tenu du fait que le champ de type de données numéroAuto n'étant pas contrôlable ni modifiable, je souhaite avoir ce code qui génère des numéroAutos personnalisés au cas où il y aurais nécessité d'en modifier.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    En fait tu ne devrais jamais modifier un numéro automatique car il est simplement là pour fournir un identifiant unique garanti par le système.
    Ce n'est pas un compteur d'enregistrement ni une numérotations séquentielle de tes enregistrements.

    Si tu as besoin de cela en effet les numéros automatiques ne sont pas adaptés et il faut que tu le gères à la main.

    En passant, il faut gérer le cas, très très très mais vraiment très rare mais pas impossible, où ton code va s'exécuter sur 2 machines et donner exactement le même numéro en mettant en place une gestion des erreurs de doublons.
    La solution la plus simple étant d'attendre un nombre aléatoire de millisecondes et de ressayer.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  11. #11
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    mais ce n'est pas ce que je t'ai demandé, je voudrais savoir dans quel cas précis as-tu rencontré un problème avec le numéroauto d'Access ?
    Salut tee_grandbois,
    salut marot_r,
    Personnellement, je n'en ai rencontré aucun problème avec le numéroauto d'Access.
    Je pensais pour trouver un moyen par code semblable à celui du numéroauto d'Access
    Je crois que je devrais laisser tomber car vous êtes des experts et nos guides en la matière.
    Je m'en tiens à vos conseils.
    Je sollicite un dernier conseil avant de mettre fin à notre discussion.
    A+
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  12. #12
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Je pensais pour trouver un moyen par code semblable à celui du numéroauto d'Access
    Si une fonctionnalité du système qui fonctionne depuis des années ne te pose pas de problème, pourquoi se donner la peine de la refaire (probablement plus mal que M$ qui y a travaillé toutes ces années) ?
    Je suis sur que tu as plein de demandes de tes utilisateurs pour t'occuper :-) et combler certains manques criants de Access.
    Bon succès dans tes projets.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  13. #13
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Bonsoir marot_r,
    bonsoir tee_grandbois,
    Bonsoir toute la famille développez.net,
    Je suis satisfait.
    Merci merci infiniment.
    Au revoir à la prochaine discussion.
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  14. #14
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Bonsoir membres du forum !
    Je viens d'introduire le code suivant:
    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
    'Numéro automatique d'enregistrement d'achat de fournitures scolaires
    Public Function f_ArticlesScolairesEnregistres_Achetes() As Long
    On Error GoTo OUMAR
    Dim BD As Database
    Dim RS As Recordset
    Set BD = CurrentDb
    Set RS = BD.OpenRecordset("select * from ArticlesScolairesEnregistres_Achetes order by NumVente_Fourn_Scol desc;")
    If RS.EOF Then
       f_ArticlesScolairesEnregistres_Achetes = 0
    Else
        f_ArticlesScolairesEnregistres_Achetes = RS.Fields("NumVente_Fourn_Scol")
    End If
    Exit Function
    OUMAR:
    MsgBox err.description, vbExclamation, err.Number
    End Function
    dans celui de tee_grandbois:
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    Private Sub BtnEnregisterArticles_Click()
    Dim stMsg As String
    Dim Itm As Variant
    Dim oDb As Database
    Dim oRS As Recordset
    
    With Me.ListeArticleEnregistresA_Commander
        ' contrôle saisie articles
        If .ItemsSelected.Count = 0 Then Exit Sub
        ' contrôle saisie client
        If IsNull(Me.Num_Inscription) Then
            MsgBox "L'élève n'a pas été sélectionné.", vbCritical
            Me.Num_Inscription.SetFocus
            Exit Sub
        End If
     
        stMsg = "Voulez-vous insérer les articles suivants:" & vbCrLf
        For Each Itm In .ItemsSelected
            stMsg = stMsg & .Column(1, Itm) & vbCrLf
        Next Itm
     
    ' Confirmer l'insertion des articles
        stMsg = stMsg & "?"
        If MsgBox(stMsg, vbQuestion + vbYesNo) = vbNo Then Exit Sub
     
        Set oDb = CurrentDb
        Set oRS = oDb.OpenRecordset("ArticlesScolairesEnregistres_Achetes", dbOpenDynaset)
             
    
    ' ajout des éléments sélectionnés
        For Each Itm In .ItemsSelected
            oRS.AddNew
            
            oRS.Fields("NumVente_Fourn_Scol") = f_ArticlesScolairesEnregistres_Achetes() + 1 '.Column(0, Itm)
    
            oRS.Fields("ARTICL_SCO_EnrAchete") = .Column(1, Itm)
            oRS.Fields("AuteurArtScol") = .Column(2, Itm)
                    
            oRS.Fields("Etabissement_NO") = .Column(9, Itm)
            oRS.Fields("anneescol") = .Column(8, Itm)
            
            oRS.Fields("NumInsCriptEleve") = Me.Num_Inscription
            oRS.Fields("Mleeleve") = Me.Txt_MleEleve
    
            oRS.Update
           
        Next Itm
     
    ' enlever la sélection
        .RowSource = .RowSource
     
    ' affichage des éléments saisis
        Me.Refresh
    End With
    
    End Sub
    Nom : CaptureNumautoPersonnaliseD.PNG
Affichages : 166
Taille : 53,0 Ko
    et quelle belle surprise ! Il fonctionne.
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Adapter code pour coller des données dans disq C
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/03/2012, 13h50
  2. [XL-2002] Optimisation code pour générer des balises richtext
    Par stef_PBR dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/07/2009, 19h13
  3. Réponses: 8
    Dernier message: 08/03/2007, 16h54
  4. Réponses: 19
    Dernier message: 04/10/2006, 16h53
  5. Réponses: 5
    Dernier message: 14/05/2006, 12h57

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