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

IHM Discussion :

Création d'un numéro inexistant


Sujet :

IHM

  1. #21
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Je m'exprime peut-être mal et en plus, je ne connais pas le VBA.

    Quand j'ajoute une transaction, je veux un no (me.txt_no) entre 15000 et 100 000 qui n'existe pas déjà dans le fichier Transaction sous le champs No.

    Il y a déjà des no utilisés entre 15000 et 100 000 mais plusieurs ne le sont pas et je voudrais un de ceux-là dans la variable txt_no

    L'usager complète l'entrée des champs dont certains sont obligatoires et enregistre pour terminer.

    Est-ce ok ?

  2. #22
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 759
    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 759
    Points : 14 793
    Points
    14 793
    Par défaut
    bonjour,
    c'est un peu plus clair. Donc ce n'est pas le plus grand numéro entre 15 000 et 100 000 qu'il faut trouver mais alors:
    - est-ce que c'est le plus grand numéro non utilisé entre 15 000 et 100 000 en allant chercher le plus petit numéro non utilisé entre les "trous" ?
    par exemple si:
    15010 est utilisé,
    15011 est utilisé,
    15015 est utilisé,
    est-ce que le prochain numéro disponible à utiliser est le 15012
    ou est-ce le 15016 et on laisse tomber 15012 à 15014 ?

    le plus simple serait de nous dire quel est la plage (ou quels sont les plages) de numéros à utiliser et quelles sont les contraintes et/ou obligations pour utiliser un numéro, car si on ne sait pas ça, on ne peut pas donner de bonne solution
    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 ?

  3. #23
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    je veux juste un no entre 15000 et 100 000 qui n'est pas utilisé.

  4. #24
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 759
    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 759
    Points : 14 793
    Points
    14 793
    Par défaut
    je veux juste un no entre 15000 et 100 000 qui n'est pas utilisé.
    c'est simple dit comme ça mais la difficulté est de trouver un élément qui n'est pas présent dans un intervalle, il faut faire du code. J'ai fait il y a quelque temps (quand je travaillais) un code qui trouvait des séries de numéros parmi ceux déjà utilisés mais je produisait une table avec le premier et le dernier numéro de chaque série.
    Je vais essayer d'adapter le code à ton besoin
    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 ?

  5. #25
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Je pensais pas que c'était si complexe de trouver un no disponible avec ACCESS

  6. #26
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 759
    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 759
    Points : 14 793
    Points
    14 793
    Par défaut
    voici le code en question, c'est une fonction à placer dans u module standard:
    Code vba : 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
    Function fTrouvePremierNo() As Long
        ' Recherche d'une série de numéros entre 2 enregistrements
    Dim oRs As Recordset
    Dim oDb As Database
    Dim lgMinVal As Long
    Dim lgMaxVal As Long
    Dim lgDebInterv As Long
    Dim lgFinInterv As Long
    Dim lgInterval As Long
     
    lgMinVal = 15000
    lgMaxVal = 100000
     
    Set oDb = CurrentDb
    Set oRs = oDb.OpenRecordset("select [no] from transaction where [no] between " & lgMinVal & " and " & lgMaxVal & " order by [no]")
    Do Until oRs.EOF
        lgFinInterv = oRs.Fields("no")
     
        ' Calcul de l'intervalle
        ' Si premier enregistrement, on débute avec la plus petite valeur
        If oRs.AbsolutePosition = 0 Then
     
            If lgFinInterv > lgMinVal Then  ' si le 1er enregistrement est supérieur à la plus petite valeur
                lgDebInterv = lgMinVal - 1
                lgInterval = (lgFinInterv) - (lgDebInterv)
            Else
                lgDebInterv = lgMinVal
                lgInterval = (lgFinInterv - 1) - (lgDebInterv)
            End If
        Else
            lgInterval = (lgFinInterv - 1) - (lgDebInterv)
        End If
     
        ' si il existe une série de n° entre 2 enregistrements, prendre le plus petit N°+1
        If lgInterval > 0 Then
            fTrouvePremierNo = lgDebInterv + 1
            Exit Do
        Else ' sinon on continue
            lgDebInterv = lgFinInterv
        End If
     
        oRs.MoveNext
      Loop
     
    oRs.Close: Set oRs = Nothing
    Set oDb = Nothing
     
    End Function
    ensuite, on l'utilise comme ceci dans le formulaire:
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
     Me.txt_no = fTrouvePremierNo()
    on peut probablement l'optimiser mais là, il est un peu tard
    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 ?

  7. #27
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 759
    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 759
    Points : 14 793
    Points
    14 793
    Par défaut
    Citation Envoyé par fourniey Voir le message
    Je pensais pas que c'était si complexe de trouver un no disponible avec ACCESS
    la difficulté est de trouver la plus grande valeur disponible dans une plage de numéros, notamment avec les fonction de domaine Dmax(), DLookup() car il va toujours renvoyer la plus grande de la plage (c à d 100000), et c'est d'autant plus compliqué si il y a des "trous" dans la numérotation .
    On doit peut-être pouvoir le faire par SQL avec des sous-requêtes mais je ne suis pas assez expert dans le domaine pour essayer à cette heure.
    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. #28
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Ça semble bien fonctionner!

    Tu es vraiment gentil et persévérant!


    Je me demandais s'il y avait une commande pour obtenir un no entre deux bornes et ensuite, tu recherches pour voir si ce no existe dans le fichier.

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

Discussions similaires

  1. 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
  2. Création d'un numéro d'identification
    Par bbdz13 dans le forum Excel
    Réponses: 2
    Dernier message: 02/05/2008, 18h24
  3. Création d'un numéro de Facture
    Par chelmi95 dans le forum IHM
    Réponses: 2
    Dernier message: 23/04/2008, 11h23
  4. Création d'un numéro de dossier
    Par guenfood dans le forum VBA Access
    Réponses: 9
    Dernier message: 30/11/2007, 10h19
  5. Création d'un numéro de Facture
    Par chelmi95 dans le forum VBA Access
    Réponses: 6
    Dernier message: 18/06/2007, 17h49

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