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

Contribuez Discussion :

[FàQ] Comment numéroter les enregistrements d'un [sous-][sous-]formulaire.


Sujet :

Contribuez

  1. #41
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    J'ai enlevé la plupart des requery
    A mon avis ce n’est pas une bonne idée.
    pour la raison que je cite plus haut :
    De plus, tous les événements qui peuvent perturber l’ordre d’affichage (donc la numérotation) doivent provoquer un requery, à savoir : Form_AfterDelConfirm, Form_AfterInsert et dans l’exemple annexé, ztDENOMINATION_AfterUpdate (puisque ce champ est l’argument de tri).
    Oui c'était mon idée de base mais je crois qu'il faut simplifier un maximum le code après l'utilisateur pourra toujours faire un rafraichissement de ces données de lui même par 1 bouton de commande ou autre.

    Décidemment moi je récupère tes idées et toi les miennes :

    On est donc fait pour s'entendre

    En effet, mon code n'est pas encore au point, je le metterai à jour si je trouve quelque chose ...

    A+
    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

  2. #42
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Citation Envoyé par User Voir le message
    De plus, il faut aussi que ce contrôle n'est pas de valeur par défaut sinon à l'ajout ca va poser un problème.
    Tu vas rire : j'ai d'abord cru que tu parlais du contrôle qui affiche le numéro. Du coup, j'ai essayé de lui mettre une valeur par défaut ="[Nouv.]", mais, ça marche pas.

    Par contre, essaye ton code, comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Function FunNumero(book As Variant) As Variant
     
        With Me.RecordsetClone
            On Error GoTo err_Numero
            .Bookmark = book
            On Error Goto 0
            FunNumero = .AbsolutePosition + 1
        End With
        Exit Function    '==========================
    err_Numero:
        'Erreur 3421 Erreur de conversion de type de données.
        '   > Sur un nouvel enregistrement, le Bookmark n'est pas valide
        FunNumero = "[Nouv]"
    End Function
    Développement Office, support technique, assistance, sur place (Loire atlantique, Vendée, Maine et Loire) ou à distance.

  3. #43
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Salut Papy ,

    J'ai testé avec et sans les requery:

    ça à l'air de fonctionner, ya juste au moment de la saisi du nouveau il m'indique le même duméro que le précédent, exemple:

    1
    2
    3
    .
    .
    20
    20 saisie...
    [Nouv]

    Mais franchement on est entrain de chipoter pour des détails: ce sont les joies de la programmation Access
    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

  4. #44
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Décidemment moi je récupère tes idées et toi les miennes
    Bon sang, je me sens tout vide. Qu'est-ce qui se passe ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #45
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonsoir User,

    Désolé. Même défaut que déjà signalé au post 39 :

    De plus, vois ce que Etienne signale.
    Dans le fichier joint, dans User2 (ton code), crée un nouveau record, sans le sauver, et actionne l’ascenseur ---> tous les records reçoivent RecordCount + 1 !

    Maintenant, c’est « [Nouvel enrg.] » qui s’affichent sur toutes les lignes !

    As-tu regardé le fichier que j'ai annexé à ton intention au post 39.
    D'après ce qui est affiché, il y a 0 lecture !
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  6. #46
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Ah ok en effet, je n'avais pas actionné l'ascenseur ,

    Donc NewRecord est a proscrire

    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

  7. #47
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    bis repetita placent !
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  8. #48
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    bis repetita placent !
    Désolé je ne parle pas latin
    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. #49
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Moi non plus, mais j'ai Internet !

    A demain.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  10. #50
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    ok je vois,

    Merci pour ta contribution je ferai une demande pour la faq
    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. #51
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour User et Etienne,

    Si on demande à l'utilisateur de donner le nom du contrôle ad hoc* en paramètre lors de l'appel de la fonction, cela reste simple.

    La fonction devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Function FunNumero2(JamaisNull As String) As Variant
      ' Pour l'ajout potentiel
       If IsNull(Me(JamaisNull)) Then
          FunNumero2 = "[Nouvel Enrg.]"
          Exit Function
       End If
    'Cas banal
    Me.RecordsetClone.Bookmark = Me.Bookmark
    FunNumero2 = Me.RecordsetClone.AbsolutePosition + 1
    End Function
    Exemple d'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =FunNumero2("ztDENOMINATION")

    * Non, pas le Capitaine ! Le nom du contrôle-qui-ne-sera-jamais-Null.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  12. #52
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Oh la la ! Y en a un qui se couche tard, l'autre qui se lève avec les poules !

    D'abord, User, je trouve que tu chipotes : pour un N° de moins pendant qu'on crée le nouveau, et qui se corrige tout seul dès qu'on enregistre ! Mais j'aime ça.

    Bon, puisqu'on ne peut pas tester If NewRecord sans afficher la même chose partout,
    puisque User ne veut pas de ton contrôle "JamaisNull",

    je vous demande de tester celui-là (chez moi, ça a l'air de marcher, mais maintenant, je me méfie)
    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
    Option Compare Database
    Option Explicit
     
    Dim m_AddingRecord As Boolean
     
    Public Function FunNumero(book As Variant) As Variant
     
        If m_AddingRecord Then
            FunNumero = CurrentRecord
            m_AddingRecord = False
        Else
            With Me.RecordsetClone
                On Error GoTo err_Numero
                .Bookmark = book
                On Error GoTo 0
                FunNumero = .AbsolutePosition + 1
            End With
        End If
        Exit Function    '==========================
    err_Numero:
        'Erreur 3421 Erreur de conversion de type de données.
        '   > Sur un nouvel enregistrement, le Bookmark n'est pas valide
        FunNumero = "[Nouv]"
    End Function
     
    Private Sub Form_AfterUpdate()
        Me.Numéroter.Requery
    End Sub
    Private Sub Form_AfterDelConfirm(Status As Integer)
        Me.Numéroter.Requery
    End Sub
    Private Sub Form_BeforeInsert(Cancel As Integer)
        m_AddingRecord = True
        'NON : Me.Numéroter.Requery
    End Sub
    Private Sub Form_AfterInsert()
        Me.Numéroter.Requery
    End Sub
    Développement Office, support technique, assistance, sur place (Loire atlantique, Vendée, Maine et Loire) ou à distance.

  13. #53
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Salut Etienne,

    Bel effort, ca devrait fonctionner avec les Me.Requery au lieu des Me.Numero.requery:

    Avec les Me.Numero.requery j'ai parfois des doubles

    Le problème des Me.Requery c'est que ce n'ai pas commode lors de l'ajout de nouveaux enrg. à la suite

    A+
    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

  14. #54
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour User et Etienne,

    Pendant que tu encodes un nouveau, il prend provisoirement le N° 1.
    Si, sans sauver, tu actionnes l'ascenceur pour afficher le vrai N° 1 et que tu reviens te positionner sur le nouvel enregistrement, il porte alors le N° de l'ancien dernier.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  15. #55
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour Etienne, User et tous ceux qui suiveraient encore,


    Compromis à la belge et … à la Tartuffe :
    on calcule « à la User » ;
    on règle le cas de l'ajout autorisé « à la Papy » ;
    quand ça ne va pas, on cache tout en attendant que ça passe.

    La source du contrôle :
    le code du module du formulaire :

    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
    Option Compare Database
    Option Explicit
    Public Function FunNumero() As Variant
    On Error GoTo err_Numero 'idée de Papy
    'neutraliser pendant encodage d'un nouveau "Cachez ce numéro que je ne saurais voir..."
    If Me.NewRecord Then
      Me.Numero.Visible = False: Exit Function
    Else
      Me.Numero.Visible = True
    End If
     
    'le cas banal
    FunNumero = AscB(Me.Bookmark) + 1  'idée de User
     
    Exit Function
    'le cas de la dernière ligne (si ajout autorisé) idée de Papy
    err_Numero:
        'Erreur 3421 Erreur de conversion de type de données.
        '   > Sur un nouvel enregistrement, le Bookmark n'est pas valide
        FunNumero = "[Nouv]"
    End Function
     
    Private Sub Form_AfterDelConfirm(Status As Integer)
    Me.Requery
    End Sub
     
    Private Sub Form_AfterInsert()
    Me.Requery
    End Sub
    '------------------------------------------------------------------------------------
    '-------- A adapter ------------------
    'Pour tous les contrôles dont la modif est susceptible de modifier l'ordre d'affichage
    ''------------------------------------------------------------------------------------
    Private Sub ztDENOMINATION_AfterUpdate()
    Me.Requery
    End Sub
    ''------------------------------------------------------------------------------------
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  16. #56
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Ya juste un problème avec la fonction AscB il y a limitation de la liste des nombre entiers renvoyés, 256 et en attendant de trouver mieux , la fonction de Claude peut s'écrire en une ligne sur la source contrôle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VraiFaux(EstNull([ztDENOMINATION]);"[Nouvel Enrg.]";AscB([Bookmark])+1)
    Juste pour alimenter la discussion
    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

  17. #57
    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 membres du forum!
    Permettez moi de souligner que cette discussion est très intéressante dans la mesure où j'ai ouvert plusieurs discussions qui se rapprochent
    du sujet actuel. Voir https://www.developpez.net/forums/d1...personnalisee/

    Voici mon code qui ramène la modalité dans la table "PAYEMENTS_Scolairite":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Function DernierModaliteParent(numEnrPar As Long, AnneScol As String) As Integer
    Dim BD As Database
    Dim R As Recordset
    Dim sql As String
     
    Set BD = CurrentDb
    sql = "select * from PAYEMENTS_Scolairite  where NumEnregistreParResponsable = " & numEnrPar & " and AnneeScolairePay = '" & AnneScol & "' order by dateVersement desc ;"
    Set R = BD.OpenRecordset(sql)
    With R
        If Not .EOF Then
        DernierModaliteParent = .Fields("modalité")
        End If
    End With
    End Function
    Nom : CapturePAYEMENTS_Scolairite.PNG
Affichages : 214
Taille : 17,2 Ko
    Nom : CaptureDispositionTablePAYEMENTS2.PNG
Affichages : 193
Taille : 54,1 Ko
    Voici la capture de la table modalité d'où provient exemple: "1er Versement" , etc.:
    Nom : CaptureFrmMODALITE_ECIND.PNG
Affichages : 195
Taille : 27,5 Ko

    Question: - comment pourrait on ramener la modalité de payement à l'aide du code suivant avec paramètres (numEnrPar As Long, AnneScol As String) As Integer:

    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
    Public Function NuméroterLignesFormulaire(NomDuContrôle As Control)
    'NB ceci s'inspire très largement de GetLineNumber
    ' voir : http://support.microsoft.com/kb/120913/fr
     
    'Exemple pour la source d'un contrôle :
    ' LeContrôlePourNuméroter =NuméroterLignesFormulaire([ztDateAchat])
     
    Dim sSQL As String, RS As DAO.Recordset, CountLines As Long
    Dim loParent As Object
    ' Recherche le formulaire parent
    ' Boucle nécessaire au cas où le parent du contrôle soit
    '       un contrôle à onglet par exemple
    Set loParent = NomDuContrôle
    Do
        Set loParent = loParent.Parent
        If TypeOf loParent Is Access.Form Then
            Exit Do
        End If
    Loop
      'construire un Recordset égal à celui de la source du formulaire
    If Left(loParent.RecordSource, 6) = "SELECT" Then 'la source est une requête
       sSQL = loParent.RecordSource
    Else                                                             'la source est une table
       sSQL = "SELECT * FROM " & loParent.RecordSource & ";"
    End If
    Set RS = CurrentDb.OpenRecordset(sSQL)
       'Rechercher le type de donnée pour choisir la bonne syntaxe de comparaison
    Select Case RS.Fields(NomDuContrôle.ControlSource).Type
     
        Case DB_INTEGER, DB_LONG, DB_CURRENCY, DB_SINGLE, DB_DOUBLE, DB_BYTE   'c'est donc numérique
             RS.FindFirst "[" & NomDuContrôle.ControlSource & "] = " & NomDuContrôle
     
        Case DB_DATE          'c'est une date
             RS.FindFirst "[" & NomDuContrôle.ControlSource & "] = #" & Format(NomDuContrôle, "mm/dd/yy") & "#"
        Case DB_TEXT 'si c'est du texte (le texte ne peut contenir de double quotes (")
                     'par contre, l'apostrophe (') est permise
             RS.FindFirst "[" & NomDuContrôle.ControlSource & "] = """ & NomDuContrôle & """"
    End Select
             ' remonter jusqu'au début en comptant les lignes.
    Do Until RS.BOF
         CountLines = CountLines + 1
         RS.MovePrevious
    Loop
             '  on restitue le résultat
    NuméroterLignesFormulaire = CountLines
        ' Fermeture du Recordset
    RS.Close
    End Function
    NB: Pour éviter que le code ci dessus fasse apparaître"#Erreur" , que faut il faire ?
    Nom : Capture#Erreur.PNG
Affichages : 188
Taille : 1,9 Ko
    Merci de bien vouloir m'aider.
    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

  18. #58
    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 User Voir le message
    Salut Etienne,

    Tout seul c'est toujours difficile d'arriver à quelque chose

    Voici la fonction corrigée:
    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
     
    Public Function FunNumero() As Variant
     
    On Error GoTo err_Numero
     
    Me.RecordsetClone.Bookmark = Me.Bookmark
     
       If Not Me.NewRecord Then
     
          FunNumero = Me.RecordsetClone.AbsolutePosition + 1
     
       Else
     
          FunNumero = Me.RecordsetClone.RecordCount + 1
     
       End If
     
    Exit Function
     
    err_Numero:
     
    FunNumero = ""
     
     
    End Function
    Le mieux c'est aussi d'enlever les requery dans le module

    On peut garder éventuellement celui-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Form_AfterDelConfirm(Status As Integer)
     
       If Not Me.NewRecord Then
          Me.Numero.Requery
       End If
     
    End Sub

    Merci...
    Bonjour User,
    Je viens de constater que votre code insère un numéro qui existe déjà dans le champs tContacts de la table Tbl_Contacts
    voir les captures d'écran:

    Nom : CaptureGestionCreditDette5.JPG
Affichages : 98
Taille : 51,9 Ko
    Nom : CaptureGestionCreditDette6.JPG
Affichages : 101
Taille : 73,3 Ko
    Nom : CaptureGestionCreditDette7.JPG
Affichages : 98
Taille : 18,0 Ko

    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

  19. #59
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Il s'agit en fait d'un numéro uniquement évalué pour un enregistrement et une ligne donnés, et non pas enregistré dans un champ Access, c'est pour cette raison qu'il ne tient pas compte de votre dernier numéro enregistré.

    Cdlt,
    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

  20. #60
    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 User Voir le message
    Bonjour,
    Il s'agit en fait d'un numéro uniquement évalué pour un enregistrement et une ligne donnés, et non pas enregistré dans un champ Access, c'est pour cette raison qu'il ne tient pas compte de votre dernier numéro enregistré.
    Cdlt,
    Bonjour User,
    Leçon comprise.
    Que pouvez vous me conseiller à propos du 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
    17
     
    'NumEnreg
    Public Function f_NumEnreg() As Long
    On Error GoTo OUMAR
    Dim bd As Database
    Dim rs As Recordset
    Set bd = CurrentDb
    Set rs = bd.OpenRecordset("select * from Tbl_EnregistrementDetteCredit order by NumEnreg desc;")
    If rs.EOF Then
       f_NumEnreg = 1
    Else
        f_NumEnreg = rs.Fields("NumEnreg") + 1
    End If
    Exit Function
    OUMAR:
    MsgBox Err.Description, vbExclamation, Err.Number
    End Function
    Merci infiniment.
    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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/07/2014, 17h41
  2. comment numéroter les onglets sous excel 2000
    Par PtiteNanou dans le forum Excel
    Réponses: 1
    Dernier message: 17/03/2008, 11h52
  3. [TRichEdit] Comment numéroter les lignes ?
    Par ARDILLER dans le forum Composants VCL
    Réponses: 1
    Dernier message: 27/03/2006, 15h43
  4. comment concaténer les enregistrements d'un champ donné ???
    Par c_moi_c_moi dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 23/03/2006, 16h11
  5. Réponses: 3
    Dernier message: 22/03/2006, 09h47

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