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 :

Numéro personnel automatique


Sujet :

VBA Access

  1. #21
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 85
    Points : 45
    Points
    45
    Par défaut
    A mon avis ceci est plus correct:

    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
    Option Compare Database
    Option Explicit
     
    Private Sub DteStart_AfterUpdate()
    Dim intAn As Integer
    Dim NMax As Integer
     
    intAn = CInt(Year(Me.DteStart))
    NMax = Nz(DMax("num", "tbl1", "CInt(Year([DteStart])) =" & intAn), 0)
    Debug.Print NMax + 1
    Me.Num = NMax + 1
     
    Me.An = CInt(Year(Me.DteStart))
     
    Select Case NMax
     
    Case Is < 9
      Me.NumDos = An & "00000" & Num
    Case Is < 99
      Me.NumDos = An & "0000" & Num
    Case Is < 999
      Me.NumDos = An & "000" & Num
    Case Is < 9999
      Me.NumDos = An & "00" & Num
     
    End Select
     
    End Sub
    Qu'en penses-tu?

  2. #22
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    avec 9, 99, ..

    C'est pas bon 9 passe au case n° 2

  3. #23
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 85
    Points : 45
    Points
    45
    Par défaut
    Voici le code final qui fonctionne (après vérification). Ne me demande pas de t'expliquer pourquoi, mais en tout cas, ça fonctionne.

    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
    Option Compare Database
    Option Explicit
     
    Private Sub DteStart_AfterUpdate()
    Dim intAn As Integer
    Dim NMax As Long
     
    intAn = CInt(Year(Me.DteStart))
    NMax = Nz(DMax("num", "tbl1", "CInt(Year([DteStart])) =" & intAn), 0)
    Debug.Print NMax + 1
    Me.Num = NMax + 1
     
    Me.An = CInt(Year(Me.DteStart))
     
    Select Case NMax
     
    Case Is < 9
      Me.NumDos = An & "00000" & Num
    Case Is < 99
      Me.NumDos = An & "0000" & Num
    Case Is < 999
      Me.NumDos = An & "000" & Num
    Case Is < 9999
      Me.NumDos = An & "00" & Num
    Case Is < 99999
      Me.NumDos = An & "0" & Num
    Case Is < 999999
      Me.NumDos = An & "" & Num
     
    End Select
     
    End Sub
    Encore bien merci.

  4. #24
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Citation Envoyé par Heureux-oli Voir le message
    Dans ce cas, il faut faire un select case et compléter avec les 0 qui manquent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Selct Case NMax
    Case < 10
      An & "00000" & Num
    Case < 100
      An & "0000" & Num
    End select
    Heu ce ne serait pas ce que fait plus simplement l'instruction Format?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.NumDos = An & format(Num,"000000")

  5. #25
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Grrrrrrrr
    Heureusement que tu es là, tu as raison une fois de plus.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [AC-2003] utilisation du numéro personnel d'un utilisateur ?
    Par fonfek24 dans le forum Modélisation
    Réponses: 2
    Dernier message: 09/06/2011, 11h09
  2. Réponses: 6
    Dernier message: 19/01/2010, 16h30
  3. Composition numéro téléphone automatique
    Par dubitoph dans le forum Applets
    Réponses: 0
    Dernier message: 04/11/2009, 15h06
  4. Débutant - Création d'un numéro chrono automatique
    Par Bersek67 dans le forum VBA Access
    Réponses: 11
    Dernier message: 07/01/2009, 21h39
  5. pb de numéro automatique
    Par Little-Freud dans le forum Access
    Réponses: 1
    Dernier message: 26/10/2004, 22h28

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