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

Access Discussion :

insérer plusieurs enregistrements dans une table [AC-2019]


Sujet :

Access

  1. #1
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut insérer plusieurs enregistrements dans une table
    Bonjour à tous et à toutes

    J'ai un formulaire principal contenant toutes les informations d'un adhérent (basé sur T Adhérents) ; il contient un sous formulaire pour gérer les cotisations (basé sur T_Cotisation)

    Dans le formulaire principal, j'ai un bouton pour créer une nouvelle fiche ; il contient,en partie, 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
    17
    18
    19
    20
    21
    Private Sub Nouveau_Click()
    On Error GoTo Err_Nouveau_Click
     
    If Me.NewRecord Then
         N°Adherent = DMax("[N°Adherent]", "[T Adhérents]") + 1
         Me.DateJour.Value = Date
     
         DoCmd.RunCommand acCmdSaveRecord
     
     
         MsgBox "S'il s'agit d'un nouvel adhérent, changer d'enregistrement par roulette souris ou le navigateur en bas à gauche" & Chr(13) & "et revenez sur la fiche du nouveau avant d'ouvrir le formulaire de ses cotisations", vbOKOnly
     
        'Ajout du nouvel enregistrement dans la table T_Cotisation
         Dim T_Cotisation As DAO.Recordset
               Set T_Cotisation = CurrentDb.OpenRecordset("T_Cotisation", dbOpenDynaset)
     
               T_Cotisation.AddNew
               T_Cotisation("T_Adherent_FK") = Me.N°Adherent
               T_Cotisation.Update
     
    End If
    On remplit donc toutes les infos du nouvel adhérent dans le formulaire principal.
    Dans le sous-formulaire j'ai 4 contrôles :
    Cotisation_An (l'année concernée)
    Ag (case à cocher pour valider la présence ou pas)
    Cotisation (case à cocher)
    Cotisation_Du (par défaut à 25 €, qui passe à 0 quand on valide la paiement par la case Cotisation)

    Pour un nouvel adhérent, dans le sous-formulaire j'ai sur une même ligne les 4 contrôles que l'on remplit par exemple de la façon suivante
    2020 Ag (cochée), Cotisation (cochée), 0

    Mon trésorier préféré, qui est le principal utilisateur, souhaiterait que pour un nouvel adhérent, dans le sous-formulaire, s'affichent les contrôles correspondant aux années
    de l'année d'adhésion à l'année 2035.
    Comme cela il n'aura plus, chaque année, qu'à compléter les différentes valeurs.

    Merci de me dire si c'est possible sur le plan raisonnement et si oui comment modifier le code précédent.

    Merci de votre aide
    A+
    C15nantes

  2. #2
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut Castel15
    Tu demandes un avis sur la création ou non des lignes de cotisation jusqu'à 2035.
    Admettons que tu aies enregistré un nouvel adhérent voici 5 ans (2015) et que tu aies créé d'avance les lignes de cotisation jusqu'à 2035.
    Qu'adviendrait-il de ces lignes, si cet adhérent, ce que je souhaite pas, décédait demain ? Il te faudrait alors, en espérant que tu y penses, supprimer toutes les lignes de cotisation superflues (2021 à 2035).
    Je pense que le plus judicieux serait de créer une procédure vba qui te permettrait à chaque début de nouvelle année de créer les lignes de cotisation pour tous les adhérents actifs.

    EDIT 20200909
    Une procédure qui permet de créer des lignes dans T_Cotisation fonction d'une année saisie
    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
    Private Sub Commande0_Click()
    Dim strInput As String
     
    strInput = InputBox("Veuillez saisir une année au format aaaa", "Attention !", Year(Date))
        If StrPtr(strInput) = 0 Then' si clic btn cancel annule la proc
            MsgBox "Opération annulée", vbInformation
            Exit Sub
        End If
        If Not IsNumeric(strInput) Or Len(strInput) = 0 Or Len(strInput) <> 4 Then' on verif la saisie, si alphanum, trop long ou vide on annule la proc
            MsgBox "La valeur est incorrecte", vbCritical
            Exit Sub
        End If
        If IsNumeric(strInput) And Len(strInput) = 4 Then' on verif une saisie de valeur numeric avec 4 caracteres
            If DCount("*", "T_Cotisation1", "Cotisation_An = " & strInput) = 0 Then' on verif que l annee saisie n existe pas dans la tbl
                CurrentDb.Execute "INSERT INTO T_Cotisation ( T_Adherent_FK )" _
                & " SELECT [T Adhérents].N°Adherent" _
                & " FROM [T Adhérents]" _
                & " WHERE DateDeces Is Null AND DateRadiation Is Null", dbFailOnError
                CurrentDb.Execute "UPDATE T_Cotisation SET T_Cotisation.Cotisation_An = " & strInput & "" _
                & " WHERE Cotisation_An = 0", dbFailOnError
            Else
                MsgBox "l'année " & strInput & " existe déjà", vbExclamation
                Exit Sub
            End If
            MsgBox "Mise à jour exécutée", vbInformation
        End If
    End Sub
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  3. #3
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonjour Hyperion 13,

    J'ai testé ta proposition.

    Mes observations sont les suivantes.
    J'ai mis dans mon sous-formulaire (voir PJ) un bouton de commande auquel j'ai associé ton code.
    Effectivement cela me rajoute un enregistrement pour TOUS les adhérents.
    En fait, dans mon sous formulaire est insérée une ligne vide (la nouvelle année n'est pas affichée), au dessus de la ligne correspondant à l'année d'adhésion, avec les 4 contrôles.

    Mais je me suis aperçu que pour les adhérents existants ces lignes 2020 à 2035 existent déjà.
    Ces lignes vides n'existent pas pour un nouvel adhérent (voir PJ)
    Ce que j'aurais voulu, c'est que, lorsque je suis sur un formulaire vierge pour saisir un nouvel adhérent, dans le sous-formulaire, j'ai, non pas une ligne vide où le trésorier doit saisir 2020 et cocher, si besoin "AG" et "Cotisation", mais une ligne par année de 2020 à 2035, les années étant déjà saisies.
    De ce fait, à chaque renouvellement de cotis, le trésorier n'aura plus qu'à cocher les cases adéquates.

    Par ailleurs, concernant les adhérents qui décèdent, sont radiés ou démissionnaires, j'ai un code associé au contrôle "Motif radiation" qui me met à 0 les cotisations.

    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
    Private Sub MotifRadiation_BeforeUpdate(Cancel As Integer)
     
    Dim l_strSql As String
     
    If MotifRadiation <> "" Then
     
            Adherent = False
            TypeAdherent = ""
            Me!NonAdherent.Visible = True
            Me!NonAdherent.Caption = "N'est plus Adhérent"
     
            l_strSql = "UPDATE T_Cotisation SET Cotisation_Du = 0 WHERE Cotisation_An  >= " & Year(Me.DateAdhesion) & " AND T_Adherent_FK = " & Me.N°Adherent
     
              With DoCmd
                ' Desactive les messages système
                .SetWarnings False
                ' Execute la commande Sql
                .RunSQL l_strSql
                ' Réactive les messages système
                .SetWarnings True
              End With
     
        If MotifRadiation = "Radiation" Then
     
            MsgBox "La case 'Adhérent' a été décochée" & Chr(10) & "Les cotisations de cet adhérent radié vont être mises à 0 quand vous aurez validé la fiche", vbExclamation, ""
     
        ElseIf MotifRadiation = "Démission" Then
     
            MsgBox "La case 'Adhérent' a été décochée" & Chr(10) & "Les cotisations de cet adhérent démissionnaire vont être mises à 0 quand vous aurez validé la fiche", vbExclamation, ""
     
        'ElseIf MotifRadiation = "Décès" Then
     
        'MsgBox "La case 'Adhérent' a été décochée" & Chr(10) & "Les cotisations de cet adhérent décédé vont être mises à 0 quand vous aurez validé la fiche", vbExclamation, ""
     
        End If
     
    End If
     
    End Sub
    Il suffirait alors de le modifier pour, en plus, supprimer les lignes "en trop" dans la T_Cotisation
    ...mais cela fera sans doute l'objet d'un autre post.

    Merci de ton aide
    A+
    C15
    Images attachées Images attachées

  4. #4
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut
    Comme indiqué dans mon Post#2 la procédure proposée ne vaut qu'à condition les lignes de cotisations de T_Cotisation comprises entre 2020 à 2035 n'existent pas.
    Pour les supprimer, une req sql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE *
    FROM T_Cotisation
    WHERE Cotisation_An>2020
    Concernant l'enregistrement d'un nouvel adhérent et de la création d'une ligne de cotisation pour l'année d'adhésion il faudrait, et de mémoire il me semble que sur le form d'adhésion il y a un btn de validation de la création de la nouvelle fiche (EDIT : Je viens de lire le pdf ), il faudrait placer un truc comme ça (à tester)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Me.NewRecord And Me.Dirty Then
        CurrentDb.Execute "INSERT INTO T_Cotisation ( T_Adherent_FK, Cotisation_An )" _
        & " VALUES (" & Me.Parent!N°Adherent & ", " & Year(Me.Parent!DateAdhesion) & ")", dbFailOnError
        Me!F_Cotisation.Form.Requery
    End If
    Explication pour Me.Parent ici ou .

    En dehors des motifs de radiation et de passer la cotisation à zéro, il serait bon de supprimer les lignes de cotisation qui deviennent superflues.
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  5. #5
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonjour

    J'ai essayé ta proposition, cela rajoute effectivement une ligne dans ma table T_Cotisation et donc dans mon formulaire, mais l'année ne s’affiche pas dans Cotisation_An

    sur mon bouton "créer une nouvelle fiche" j'avais mis un code auquel j'ai rajouté le lignes 19 et 22

    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
    Private Sub Nouveau_Click()
    On Error GoTo Err_Nouveau_Click
     
    If Me.NewRecord Then
         N°Adherent = DMax("[N°Adherent]", "[T Adhérents]") + 1
         Me.DateJour.Value = Date
     
         DoCmd.RunCommand acCmdSaveRecord
     
     
         'MsgBox "S'il s'agit d'un nouvel adhérent, changer d'enregistrement par roulette souris ou le navigateur en bas à gauche" & Chr(13) & "et revenez sur la fiche du nouveau avant d'ouvrir le formulaire de ses cotisations", vbOKOnly
     
        'Ajout du nouvel enregistrement dans la table T_Cotisation
         Dim T_Cotisation As DAO.Recordset
               Set T_Cotisation = CurrentDb.OpenRecordset("T_Cotisation", dbOpenDynaset)
     
               T_Cotisation.AddNew
               T_Cotisation("T_Adherent_FK") = Me.N°Adherent
               T_Cotisation("Cotisation_An").Value = Year(Date)
               T_Cotisation.Update
     
               Me.F_Cotisation.Requery
     
    End If
    Cela ne m'affiche toujours pas l'année en cours (pb de syntaxe ?)
    Par ailleurs, il y a sans doute une meilleure méthode pour rentrer les cotis du nouvel adhérent que de faire ce que je dis dans ma msgbox.

    Merci de ton aide
    A+
    C15

  6. #6
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut
    Vérifier si le champ COTISATION DU a pour valeur par défaut 25
    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 btnNewadhesion_Click()
    If Me.NewRecord And Me.Dirty Then
        N°Adherent = DMax("[N°Adherent]", "[T Adhérents]") + 1
        DoCmd.RunCommand acCmdSaveRecord
     
        Me.F_Cotisation.SetFocus
        Me.F_Cotisation!T_Adherent_FK.SetFocus
        Me.F_Cotisation.Form.Recordset.AddNew
        Me.F_Cotisation!Cotisation_An.SetFocus
        Me.F_Cotisation!Cotisation_An = Year(Forms!0_FORMULAIRE_ADHERENT_AVEC_COTISATIONS_ET_AG.DateAdhesion.Value)
        Me.N°Adherent.SetFocus
    End If
    End Sub
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  7. #7
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonjour Hyperion13,

    J'ai essayé ta procédure, il y a un pb de syntaxe sur la ligne 10. J'ai essayé de corriger sans succès.

    Quelques infos supplémentaires :
    1 Par défaut le sous formulaire est verrouillé.
    Il est modifiable par le bouton "modifier" qui y est intégré (voir PJ précédente) avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Modifier_Click()
     
    Dim Ctl As Control
        For Each Ctl In Me.Détail.Controls
            If (Ctl.ControlType = acTextBox) Or (Ctl.ControlType = acComboBox) Or (Ctl.ControlType = acCheckBox) Then
        Ctl.Locked = False
            End If
        Next Ctl
     
    End Sub

    2 Dans la T_Cotisation, la valeur par défaut est de 25 €

    3 Ci dessous le code complet, actuel, lié au bouton "nouvelle fiche" du formulaire principal :

    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
    57
    58
    59
    60
    61
    62
    63
    Private Sub Nouveau_Click()
    On Error GoTo Err_Nouveau_Click
     
    If Me.NewRecord Then
         N°Adherent = DMax("[N°Adherent]", "[T Adhérents]") + 1
         Me.DateJour.Value = Date
     
         DoCmd.RunCommand acCmdSaveRecord
     
     
         MsgBox "S'il s'agit d'un nouvel adhérent, changer d'enregistrement par roulette souris ou le navigateur en bas à gauche" & Chr(13) & "et revenez sur la fiche du nouveau avant d'ouvrir le formulaire de ses cotisations", vbOKOnly
     
        'Ajout du nouvel enregistrement dans la table T_Cotisation
         Dim T_Cotisation As DAO.Recordset
               Set T_Cotisation = CurrentDb.OpenRecordset("T_Cotisation", dbOpenDynaset)
     
               T_Cotisation.AddNew
               T_Cotisation("T_Adherent_FK") = Me.N°Adherent
               T_Cotisation.Update
     
    End If
     
        Forms![0_FORMULAIRE_ADHERENT_AVEC_COTISATIONS_ET_AG].AllowEdits = True
        DoCmd.GoToRecord , , acNewRec
        DoCmd.GoToControl "Titre"
     
        Me!Titre.Locked = False
        Me!Nom_Adherent.Locked = False
        Me!Prenom_Adherent.Locked = False
        Me!DateNaissance.Locked = False
        Me!Adherent.Locked = False
        Me!DateAdhesion.Locked = False
        Me!Type_Adherent.Locked = False
        Me!Fonction.Locked = False
        Me!Spécialité.Locked = False
        Me!NomOrigine.Locked = False
        Me!DateOrigine.Locked = False
        Me!DateRadiation.Locked = False
        Me!MotifRadiation.Locked = False
        Me!DateDeces.Locked = False
        Me!Adresse.Locked = False
        Me!NomVille.Locked = False
        Me!CP.Locked = False
        Me!Region.Locked = False
        Me!Téléphone.Locked = False
        Me!Mobile.Locked = False
        Me!EMail.Locked = False
        Me!Profession.Locked = False
        Me!Retraite.Locked = False
        Me!DateMiseAJour.Locked = False
        Me!MasquerDonnees = False
     
     
     
     
     
    Exit_Nouveau_Click:
        Exit Sub
     
    Err_Nouveau_Click:
        MsgBox Err.Description
        Resume Exit_Nouveau_Click
    End Sub
    Peut-être y-a-t'il un conflit avec le code que tu proposes ?
    Y'a t'il une différence entre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.F_Cotisation.Locked=False
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.F_Cotisation.SetFocus
    Toujours est-il que hélas, quand je crée un nouvel adhérent, l'année 2020 ne s'affiche toujours pas dans le sous-formulaire
    Encore faut-il savoir à quel moment un adhérent enregistré dans la T_Adhérents l'est dans la T_Cotisation avec affichage immédiat dans le sous-formulaire.

    Merci de ton aide.
    A+
    C15

  8. #8
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    Après plusieurs essais j'ai gardé le code initial sur mon bouton "nouvel adhérent du form principal

    et dans mon sous formulaire j'ai fait ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Cotisation_An_Click()
     
    Me.Cotisation_An.Value = Year(Me.Parent!DateAdhesion)
     
    End Sub
    Ce qui fait que lorsque je clique sur le contrôle Cotisation_An du sous formulaire l'année d'adhésion est automatiquement saisie

    C'est pas encore le top mais c'est déjà mieux que rien.

    Je vais essayer de mixer cela avec la procédure que tu m'as proposée plus haut.

    C15

  9. #9
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    La procédure décrite dans le post précédent fonctionne, sauf que lorsque je clique sur la 2ième ligne du sous formulaire pour renseigner, par exemple 2021, c'est 2020 qui s’affiche.

    En m'inspirant d'une procédure que tu m'avais donnée, je voudrais vérifier que l'année n'a pas déjà été renseignée.
    J'ai fais ceci
    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
     
    Private Sub Cotisation_An_Click()
     
    'Dim strInput As String
    'strInput = [T Adhérents].DateAdhesion
     
     Me.Cotisation_An.Value = Year(Me.Parent!DateAdhesion)
     
    If DCount("*", "T_Cotisation", "Cotisation_An = " & Year(Me.Parent!DateAdhesion)) = 0 Then ' on verif que l annee saisie n existe pas dans la tbl
                CurrentDb.Execute "INSERT INTO T_Cotisation ( T_Adherent_FK )" _
                & " SELECT [T Adhérents].N°Adherent" _
                & " FROM [T Adhérents]" _
                '& " WHERE DateDeces Is Null AND DateRadiation Is Null", dbFailOnError
                CurrentDb.Execute "UPDATE T_Cotisation SET T_Cotisation.Cotisation_An = " & Year(Me.Parent!DateAdhesion) & "" _
                & " WHERE Cotisation_An = 0", dbFailOnError
            Else
                MsgBox "l'année " & Year(Me.Parent!DateAdhesion) & " a déjà été renseignée", vbExclamation
                Exit Sub
            End If
     
     
     
    End Sub
    Cela marche à ceci près que dès que je clique sur le contrôle Cotisation_An pour renseigner la 1ère année, 2020 (si l'adhésion a eu lieu en 2020) s'affiche bien, mais ma msgbox aussi
    Comment faire, de façon plus élégante, pour que cela n'apparaisse que sur la 2ième ligne (celle avec l'étoile, comme le montre la PJ et plus tard les suivantes

    Merci de ton aide
    A+
    C15
    Images attachées Images attachées

  10. #10
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonjour Hyperion13

    Grâce à toi et à marot_r, j'ai mixé vos propositions à ma procédure.

    Cela fonctionne parfaitement

    Voilà à quoi je suis arrivé

    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
    Private Sub Cotisation_An_Click()
     
    If IsNull(Forms![0_FORMULAIRE_ADHERENT_AVEC_COTISATIONS_ET_AG]![F_Cotisation].Form![Cotisation_An]) And DCount("*", "T_Cotisation", "[T_Adherent_FK]=" & Me.T_Adherent_FK) = 0 Then
        Me.Cotisation_An.Value = Year(Me.Parent!DateAdhesion)
        MsgBox "l'année d'adhésion " & Year(Me.Parent!DateAdhesion) & "  vient d'être renseignée", vbExclamation
     
     
    Else
     
    If IsNull(Forms![0_FORMULAIRE_ADHERENT_AVEC_COTISATIONS_ET_AG]![F_Cotisation].Form![Cotisation_An]) And DCount("*", "T_Cotisation", "[T_Adherent_FK]=" & Me.T_Adherent_FK) > 0 Then
       Me.Cotisation_An.Value = DMax("Cotisation_An", "T_Cotisation", "[T_Adherent_FK]=" & Me.T_Adherent_FK) + 1
     
       MsgBox "Vous venez de rajouter une année", vbExclamation
     
    End If
     
    End If
     
    End Sub
    Dans mon sous-formulaire, quand je clique sur Cotisation_An, l'année d'adhésion apparait
    Si je clique sur la ligne en dessous, j'ai Année d'adhésion + 1 et ainsi de suite...

    Merci une fois de plus de ton aide.

    A+

    C15

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

Discussions similaires

  1. Insérer un enregistrement dans une table
    Par dark_geek dans le forum ASP
    Réponses: 2
    Dernier message: 26/05/2009, 08h29
  2. [MySQL] insérer plusieurs lignes dans une table
    Par ozyman dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 12/02/2009, 22h33
  3. Réponses: 11
    Dernier message: 23/09/2008, 13h16
  4. Insérer plusieurs enregistrements dans une requete
    Par Xavier3131 dans le forum VBA Access
    Réponses: 5
    Dernier message: 07/05/2008, 17h12
  5. Réponses: 9
    Dernier message: 18/01/2007, 14h11

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