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 :

Code enregister de la Cmde Enregistrer [AC-2013]


Sujet :

Access

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut Code enregister de la Cmde Enregistrer
    Bonsoir membres du forum,
    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 BtnEnregisterElevesComposants_Click()
    Dim dbs As dao.Database
    Dim rst As dao.Recordset
    Dim MesCriteres As String
    Dim ctl As Control, ctl1 As Control, ctl2 As Control
    Dim i As Variant
    Dim stMsg As String
     
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset("CANDIDATS_ENTREE_EN_6e", dbOpenDynaset)
    Set ctl = Me.ANNEE_SCOL
    Set ctl1 = Me.Filtre_AnneeScolaire
    'Set ctl2 = Me.ListeNiveauEVALUATION
     
    ' contrôle saisie Classe
        If IsNull(Me.Filtre_AnneeScolaire) Then
            MsgBox "Sélectionnez une année.", vbCritical
            Me.Filtre_AnneeScolaire.SetFocus
            'Me.Filtre_AnneeScolaire.Dropdown  **** Pour dérouler le combobox à l'aide de la méthode DROPDOWN
            SendKeys "{F4}"      '*** Pour dérouler le combobox à l'aide de l'envoi de touche clavier (F4)
            Exit Sub
        End If
     
    ' contrôle de la sélection d'enregistrement(s)
    If ctl.ItemsSelected.Count = 0 Then
    MsgBox "Veuillez sélectionner un enregistrement au moins !"
    Exit Sub
    End If
     
    MesCriteres = _
    "ANNEE_SCOL = " & ctl.Column(1) & " " & _
    "AND Candidat = '" & ctl.Column(2) & "' " & _
    "AND Ne_le = " & ctl.Column(3) & "' "
     
    If DCount("*", "CANDIDATS_ENTREE_EN_6e", MesCriteres) > 0 Then
        MsgBox "Cet enregistrement a deja ete insere"
        Me.Undo
    Else
        For Each i In ctl.ItemsSelected
            rst.AddNew
            rst!ID_Enregistrement = f_ID_Enregistrement() + 1
            rst!Candidat = ctl.Column(2, i)
            rst!EtablissementOrigine = ctl1.Column(12)
            rst.Update
        Next i
    End If
    With ctl
        .RowSource = .RowSource
        ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.RowSource = ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.RowSource
     
    End With
    Set rst = Nothing
    Set dbs = Nothing
    End Sub
    Nom : Capture CANDIDATS 1.png
Affichages : 275
Taille : 157,1 Ko

    Pièce jointe
    Où se trouve mon erreur dans le code enregistrer ?
    Cordialement.
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 441
    Par défaut
    Bonjour morobaboumar.

    Peux-tu expliquer en quelques mots ce que ce code est supposé faire.
    Et ce qu'il fait vraiment ?

    Ex :
    Tu as une erreur ? Si oui, laquelle ? Où ?
    Tu n'as pas d'erreur ? Qu'as-tu eu comme résultat ? Qu'attendais-tu ?

    Parce que là c'est un peu vague :-).

    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 expérimenté Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Bonjour morobaboumar.

    Peux-tu expliquer en quelques mots ce que ce code est supposé faire.
    Et ce qu'il fait vraiment ?
    Ex :
    Tu as une erreur ? Si oui, laquelle ? Où ?
    Tu n'as pas d'erreur ? Qu'as-tu eu comme résultat ? Qu'attendais-tu ?
    Bonsoir marot_r,
    bonsoir membres du forum,
    Mon objetif est:
    - de transférer les infos sélectionnées depuis la listeELEVES_A_SELECTONNER_POUR_LES_EXAMENS vers la PageCANDIDATS grâce à la commande BtnEnregisterElevesComposants.
    - l'erreur que je constate est qu'après clique sur la commande BtnEnregisterElevesComposants, rien ne se passe sauf le message suivant (voir la capture):

    Nom : Capture CANDIDATS 1.png
Affichages : 236
Taille : 157,1 Ko

    Cordialement.

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

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9 004
    Par défaut
    bonjour,
    voici les anomalies que j'ai constaté:
    1) la Boite Message "Veuillez sélectionner un enregistrement au moins !" apparait parce que ctl n'est pas le bon objet (voir code indiqué sous: contrôle de la sélection d'enregistrement(s))
    ctl est la liste des années scolaires définie ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set ctl = Me.ANNEE_SCOL
    il faut faire pointer la variable sur le bon objet c'est à dire la liste des élèves où se fait la sélection et donc utiliser une autre variable et la bonne liste déroulante):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set ctl2 = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS
    donc utiliser ctl2 à la place de ctl ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If ctl.ItemsSelected.Count = 0 Then
    ' ...
    '  ===========>> mais aussi ailleurs un peu plus bas:
    MesCriteres = _
    "ANNEE_SCOL = '" & ctl.Column(1) & "' " & _
    "AND Candidat = '" & ctl.Column(2) & "' " & _
    "AND Ne_le = '" & ctl.Column(3) & "' "
    et puis pour éviter toute confusion et pour une meilleure lisibilité, pourquoi ne pas utiliser plutôt le nom du contrôle directement ?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.ItemsSelected.Count = 0 Then
    2) dans cette partie de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MesCriteres = _
    "ANNEE_SCOL = '" & ctl2.Column(1) & "' " & _
    "AND Candidat = '" & ctl2.Column(2) & "' " & _
    "AND Ne_le = '" & ctl2.Column(3) & "' "
    la variable MesCriteres ne peut pas fonctionner dans cette ligne de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If DCount("*", "CANDIDATS_ENTREE_EN_6e", MesCriteres) > 0 Then
    car les champs Candidat et Ne_le n'existent pas dans la table CANDIDATS_ENTREE_EN_6e (mais existent dans LISTE_ELEVES_A_SELECTIONNER) donc plantage du code assuré !

    3) et dans cette dernière partie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        For Each i In ctl2.ItemsSelected
            rst.AddNew
            rst!ID_Enregistrement = f_ID_Enregistrement() + 1
            rst!Candidat = ctl2.Column(2, i)             
            rst!EtablissementOrigine = ctl.Column(12)
            rst.Update
        Next i
    - le champ Candidat n'existe pas (encore une fois !) dans la table CANDIDATS_ENTREE_EN_6e
    - l'alimentation de EtablissementOrigine est à revoir car inexistant dans ctl.Column(12) ...

    mais je suppose que le code n'est pas totalement finalisé puisque tous les champs de la table ne sont pas alimentés

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut
    Bonsoir tee_grandBois,
    bonsoir membres du forum,
    Voici ce que j'ai pu réaliser:
    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
     
    Private Sub BtnEnregisterElevesComposants_Click()
    Dim dbs As dao.Database
    Dim rst As dao.Recordset
    Dim MesCriteres As String
    Dim ctl As Control, ctl1 As Control, ctl2 As Control
    Dim i As Variant
    Dim stMsg As String
     
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset("CANDIDATS_ENTREE_EN_6e", dbOpenDynaset)
    'Set ctl2 = Me.ANNEE_SCOL
    Set ctl2 = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS
    Set ctl1 = Me.Filtre_AnneeScolaire
    'Set ctl2 = Me.ListeNiveauEVALUATION
     
    ' contrôle saisie Classe
        If IsNull(Me.Filtre_AnneeScolaire) Then
            MsgBox "Sélectionnez une année.", vbCritical
            Me.Filtre_AnneeScolaire.SetFocus
            'Me.Filtre_AnneeScolaire.Dropdown  **** Pour dérouler le combobox à l'aide de la méthode DROPDOWN
            SendKeys "{F4}"      '*** Pour dérouler le combobox à l'aide de l'envoi de touche clavier (F4)
            Exit Sub
        End If
     
    ' contrôle de la sélection d'enregistrement(s)
    'If ctl2.ItemsSelected.Count = 0 Then
    If Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.ItemsSelected.Count = 0 Then
    MsgBox "Veuillez sélectionner un enregistrement au moins !"
    Exit Sub
    End If
     
    MesCriteres = _
    "ANNEE_SCOL = '" & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(0) & "' " & _
    "AND Nom_et_prénoms = '" & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(2) & "' " & _
    "AND datenaiss = '" & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(3) & "' "
     
    If DCount("*", "CANDIDATS_ENTREE_EN_6e", MesCriteres) > 0 Then
        MsgBox "Cet enregistrement a deja ete insere"
        Me.Undo
    Else
        For Each i In ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.ItemsSelected
            rst.AddNew
            rst!ID_Enregistrement = f_ID_Enregistrement() + 1
            rst!ANNEE_SCOL = ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(1, i)
            rst!matricule = ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(2, i)
            rst![Nom et prénoms] = ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(4, i)
            rst!Date_et_lieu_de_naissance = ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(5, i)
            rst.Update
        Next i
    End If
    With ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS
        .RowSource = .RowSource
        ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.RowSource = ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.RowSource
     
    End With
    Set rst = Nothing
    Set dbs = Nothing
    End Sub
    J'ai un problème avec la date de naissance; ce que j'ai mis en commentaire car suite au message d'erreur"élément non trouvé...".
    - Pièce jointe
    Cordialement.
    Fichiers attachés Fichiers attachés

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

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9 004
    Par défaut
    bonsoir,
    le message d'erreur 3265 "élément non trouvé dans la collection" indique que le champ n'existe pas dans la table ...
    dans CANDIDATS_ENTREE_EN_6e, c'est [Date et lieu de naissance] et la donnée se trouve dans la colonne 4 de la liste ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS, pas la colonne 3, c'est [Nom et prénoms] qui est dans la colonne 3
    ne pas oublier d'utiliser DEBUG.PRINT pour vérifier la valeur de ses variables ... même (et surtout) si on n'est pas un expert en programmation
    voici le nouveau code:
    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
    MesCriteres = _
    "ANNEE_SCOL = '" & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(1) & "' " & _
    "AND [Nom et prénoms] = '" & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(3) & "' " & _
    "AND [Date et lieu de naissance] = '" & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(4) & "' "
     
    If DCount("*", "CANDIDATS_ENTREE_EN_6e", MesCriteres) > 0 Then
        MsgBox "Cet enregistrement a deja ete insere"
        Me.Undo
    Else
        For Each i In ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.ItemsSelected
            rst.AddNew
            rst!ID_Enregistrement = f_ID_Enregistrement() + 1
            rst!ANNEE_SCOL = ListeELEVES_A_SELECTIONNER_POUR_LES_EXAMENS.Column(1, i)
            rst!matricule = ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(2, i)
            rst![Nom et prénoms] = ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(3, i)
            rst![Date et lieu de naissance] = ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(4, i)
            rst.Update
        Next i
    End If
    des remarques:
    - utiliser des champs de type texte pour stocker les dates et des lieux de naissance n'est pas franchement une bonne idée, mais ce n'est pas mon problème
    - le code qui contrôle si un enregistrement existe déjà ne fonctionnait pas car [Nom et prénoms] était mal orthographié (utilisation de "_" à la place d'espaces) et dans ce cas cela ne génère pas d'erreur, c'est juste une variable non déclarée pour la fonction utilisée (DCount en l'occurrence), c'est pour cela qu'on pouvait ajouter plusieurs fois le même candidat

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut
    Merci infiniment tee_grandbois,
    Je vous rappelle demain.
    Bien à vous.

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut
    Citation Envoyé par morobaboumar Voir le message
    Merci infiniment tee_grandbois,
    Je vous rappelle demain.
    Bien à vous.
    Bonjour tee_grandbois,
    J'ai introduit le champ "lieu de naissance" dans la table CANDIDATS , ensuite changé le type de données du champ
    "Date de naissance" en "Date/Heure"
    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
    64
    65
    66
    67
    68
    69
     
    Private Sub BtnEnregisterElevesComposants_Click()
    Dim dbs As dao.Database
    Dim rst As dao.Recordset
    Dim MesCriteres As String
    Dim ctl As Control, ctl1 As Control, ctl2 As Control
    Dim i As Variant
    Dim stMsg As String
     
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset("CANDIDATS_ENTREE_EN_6e", dbOpenDynaset)
    'Set ctl2 = Me.ANNEE_SCOL
    Set ctl2 = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS
    Set ctl1 = Me.Filtre_AnneeScolaire
    'Set ctl2 = Me.ListeNiveauEVALUATION
     
    ' contrôle saisie Classe
        If IsNull(Me.Filtre_AnneeScolaire) Then
            MsgBox "Sélectionnez une année.", vbCritical
            Me.Filtre_AnneeScolaire.SetFocus
            'Me.Filtre_AnneeScolaire.Dropdown  **** Pour dérouler le combobox à l'aide de la méthode DROPDOWN
            SendKeys "{F4}"      '*** Pour dérouler le combobox à l'aide de l'envoi de touche clavier (F4)
            Exit Sub
        End If
     
    ' contrôle de la sélection d'enregistrement(s)
    'If ctl2.ItemsSelected.Count = 0 Then
    If Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.ItemsSelected.Count = 0 Then
    MsgBox "Veuillez sélectionner un enregistrement au moins !"
    Exit Sub
    End If
     
    MesCriteres = _
    "ANNEE_SCOL = '" & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(1) & "' " & _
    "AND [Nom et prénoms] = '" & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(3) & "' " & _
    "AND [Date de naissance] = '" & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(4) & "' " & _
    "AND [lieu de naissance] = '" & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(5) & "' "
     
    If DCount("*", "CANDIDATS_ENTREE_EN_6e", MesCriteres) > 0 Then
        MsgBox "Cet enregistrement a deja ete insere"
        Me.Undo
    Else
        For Each i In ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.ItemsSelected
            rst.AddNew
            rst!ID_Enregistrement = f_ID_Enregistrement() + 1
            rst!ANNEE_SCOL = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(1, i)
            rst!matricule = ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(2, i)
            rst![Nom et prénoms] = ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(3, i)
            rst![Date de naissance] = ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(4, i)
            rst![lieu de naissance] = ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(5, i)
            rst.Update
        Next i
    End If
    With ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS
        .RowSource = .RowSource
        ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.RowSource = ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.RowSource
     '_______________________________________________________________________________
     ' affichage des éléments saisis
        Me.Refresh
        Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Requery
        Forms("Frm_CANDIDATS_ENTREE_EN_6e").Requery
        ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.RowSource = ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.RowSource
    End With
        Forms!Frm_CANDIDATS_ENTREE_EN_6e!CtlTabCANDIDATS.Pages(1).SetFocus
        DoCmd.GoToRecord , , acLast
     '_______________________________________________________________________________
    Set rst = Nothing
    Set dbs = Nothing
    End Sub
    J'ai message d'erreur (voir la captture):

    Nom : Capture CANDIDATS 3.png
Affichages : 216
Taille : 141,3 Ko
    Nom : Capture CANDIDATS 4.png
Affichages : 218
Taille : 228,4 Ko

    Veuillez me rappeler à quelle ligne de code place-t-on DEBUG.PRINT ?
    Cordialement.

  9. #9
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 601
    Par défaut
    Hello,

    juste avant la ligne en jaune (If DCount etc) mettez ceci
    ou, si vous utilisez la fenêtre "Exécution"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print MesCriteres
    Vous devriez comprendre d'où provient l'erreur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut
    Bonjour Nain porte koi,
    Bonjour membres du forum,
    Après exécution du code:
    juste avant la ligne en jaune (If DCount etc) mettez ceci

    , voici les messages d'erreurs constatés:

    Nom : Capture CANDIDATS 5.png
Affichages : 213
Taille : 145,1 Ko
    Nom : Capture CANDIDATS 6.png
Affichages : 205
Taille : 41,4 Ko

    je conclus que l'erreur se trouve au niveau du codage du champ "Date de naissance".
    Comment le rendre compatible ?
    Cordialement.

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MesCriteres = _
    "ANNEE_SCOL = '" & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(1) & "' " & _
    "AND [Nom et prénoms] = '" & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(3) & "' " & _
    "AND [Date de naissance] = '" & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(4) & "' " & _
    "AND [lieu de naissance] = '" & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(5) & "' "
    Question: Quelle est la ponctuation compatible à la ligne de code de "Date de naissance" en rouge ?

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

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9 004
    Par défaut
    bonsoir,
    Citation Envoyé par morobaboumar Voir le message
    Question: Quelle est la ponctuation compatible à la ligne de code de "Date de naissance" en rouge ?
    les fonctions utilisent SQL pour la partie critères, il faut donc "construire" la date avec les bon délimiteurs (tout comme on doit mettre la décimale pour un montant)
    indique le format "DD/MM/YYYY" entouré de # #, car les dates sont stockés en type texte dans la liste déroulante car la zone de liste c'est comme un tableau, pas une table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "AND [Date de naissance] = #" & Format(ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(4),"DD/MM/YYYY") & "# " & _
    mais:
    - pourquoi répéter les informations élève dans toutes les tables qui sont créées ?
    - pourquoi vouloir tester l'unicité d'un candidat par son nom, prénom et date de naissance pourquoi ne pas utiliser le matricule ou le numéro d'identifiant unique de la table des élèves ?


    au passage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rst!ID_Enregistrement = f_ID_Enregistrement() + 1
    sauf si c'est volontaire, c'est déjà incrémenté dans la fonction f_ID_Enregistrement() !
    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_ID_Enregistrement() As Long
    On Error GoTo OUMAR
    Dim bd As Database
    Dim rs As Recordset
    Set bd = CurrentDb
    Set rs = bd.OpenRecordset("select * from CANDIDATS_ENTREE_EN_6e order by ID_Enregistrement desc;")
    If rs.EOF Then
       f_ID_Enregistrement = 1
    Else
        f_ID_Enregistrement = rs.Fields("ID_Enregistrement") + 1   '<<<<================= déjà incrémenté ICI ! ! ! ! ! !
    End If
    Exit Function
    OUMAR:
    MsgBox Err.Description, vbExclamation, Err.Number
    End Function
    pour rappel le type de données NuméroAuto dans les tables fait cela aussi bien, sinon mieux !

    bonne nuit.

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut
    Bonjour tee_grandbois,
    Bonjour tous les membres du forum,
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    Private Sub BtnEnregisterElevesComposants_Click()
    Dim dbs As dao.Database
    Dim rst As dao.Recordset
    Dim MesCriteres As String
    Dim ctl As Control, ctl1 As Control, ctl2 As Control
    Dim i As Variant
    Dim stMsg As String
    Dim d As Date
     
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset("CANDIDATS_ENTREE_EN_6e", dbOpenDynaset)
    'Set ctl2 = Me.ANNEE_SCOL
    Set ctl2 = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS
    Set ctl1 = Me.Filtre_AnneeScolaire
    'Set ctl2 = Me.ListeNiveauEVALUATION
     
    ' contrôle saisie Classe
        If IsNull(Me.Filtre_AnneeScolaire) Then
            MsgBox "Sélectionnez une année.", vbCritical
            Me.Filtre_AnneeScolaire.SetFocus
            'Me.Filtre_AnneeScolaire.Dropdown  **** Pour dérouler le combobox à l'aide de la méthode DROPDOWN
            SendKeys "{F4}"      '*** Pour dérouler le combobox à l'aide de l'envoi de touche clavier (F4)
            Exit Sub
        End If
     
    ' contrôle de la sélection d'enregistrement(s)
    'If ctl2.ItemsSelected.Count = 0 Then
    If ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.ItemsSelected.Count = 0 Then
    MsgBox "Veuillez sélectionner un enregistrement au moins !"
    Exit Sub
    End If
     
    MesCriteres = _
    "ANNEE_SCOL = '" & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(1) & "' " & _
    "AND [Nom et prénoms] = '" & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(3) & "' " & _
    "AND [Date de naissance] = #" & Format(ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(4), "DD/MM/YYYY") & "#"
    '___________________________________________________________________________________
     'juste avant la ligne en jaune (If DCount etc) mettez ceci
     MsgBox MesCriteres '------------> ligne de code à retenir pour constater mes erreurs.
     'ou, si vous utilisez la fenêtre "Exécution": '------------> Debug.Print MesCriteres
     '___________________________________________________________________________________
     
    If DCount("*", "CANDIDATS_ENTREE_EN_6e", MesCriteres) > 0 Then
        MsgBox "Cet enregistrement a deja ete insere"
        Me.Undo
    Else
        For Each i In ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.ItemsSelected
            rst.AddNew
            rst!ID_Enregistrement = f_ID_Enregistrement()
            rst!ANNEE_SCOL = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(1, i)
            rst!matricule = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(2, i)
            rst![Nom et prénoms] = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(3, i)
            rst![Date de naissance] = Format(ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(4), "DD/MM/YYYY")
            rst![lieu de naissance] = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(5, i)
            rst.Update
        Next i
    End If
    With ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS
        .RowSource = .RowSource
        Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.RowSource = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.RowSource
     '_______________________________________________________________________________
     ' affichage des éléments saisis
        Me.Refresh
        Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Requery
        Forms("Frm_CANDIDATS_ENTREE_EN_6e").Requery
        Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.RowSource = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.RowSource
    End With
        Forms!Frm_CANDIDATS_ENTREE_EN_6e!CtlTabCANDIDATS.Pages(1).SetFocus
        DoCmd.GoToRecord , , acLast
     '_______________________________________________________________________________
    Set rst = Nothing
    Set dbs = Nothing
    End Sub
    Messages d'erreurs:

    Nom : Capture CANDIDATS 7.png
Affichages : 210
Taille : 155,1 Ko
    Nom : Capture CANDIDATS 8.png
Affichages : 211
Taille : 153,7 Ko
    Nom : Capture CANDIDATS 9.png
Affichages : 206
Taille : 122,3 Ko

    Co
    Fichiers attachés Fichiers attachés

  14. #14
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 601
    Par défaut
    Vous sélectionnez une ligne qui n'a pas de date et vous vous étonnez que ça ne fonctionne pas ?

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut
    Citation Envoyé par Nain porte koi Voir le message
    Vous sélectionnez une ligne qui n'a pas de date et vous vous étonnez que ça ne fonctionne pas ?
    Pourriez vous m'indiquer cette(ces) ligne(s) ?

  16. #16
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 601
    Par défaut
    Citation Envoyé par morobaboumar Voir le message
    Pourriez vous m'indiquer cette(ces) ligne(s) ?
    913 CISSE MAGNAGALE

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut
    Quelle serait la solution ?

  18. #18
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 601
    Par défaut
    Mettre des dates dans les données peut être
    Une autre solution : ouvrir les yeux et allumer le cerveau avant l'ordi ? 😁

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut
    Citation Envoyé par Nain porte koi Voir le message
    Mettre des dates dans les données peut être
    Une autre solution : ouvrir les yeux et allumer le cerveau avant l'ordi ? 😁
    Merci tee_grandbois,
    merci marot_r,
    merci Nain porte koi,
    Vous m'avez reveillé. Sans quoi je partais loin alors que vous m'avez donné la solution à notre discussion.

    Nom : Capture CANDIDATS 10.png
Affichages : 203
Taille : 189,4 Ko
    Vous méritez une bonne tasse de chocolat bien chaud !!!
    Nom : Capture Cacao.png
Affichages : 203
Taille : 446,5 Ko
    Je reviens bientôt !!!
    Que le Seigneur vous le multiplie au centuple de bonheurs.

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut
    Bonjour membres du forum,
    Je viens d'apporter des modifications au code de la cmde enregistrer
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    Private Sub BtnEnregisterElevesComposants_Click()
    Dim dbs As dao.Database
    Dim rst As dao.Recordset
    Dim MesCriteres As String
    Dim ctl As Control, ctl1 As Control, ctl2 As Control
    Dim i As Variant
    Dim stMsg As String
    Dim d As Date
     
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset("CANDIDATS_ENTREE_EN_6e", dbOpenDynaset)
    'Set ctl2 = Me.ANNEE_SCOL
    Set ctl2 = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS
    Set ctl1 = Me.Filtre_AnneeScolaire
    'Set ctl2 = Me.ListeNiveauEVALUATION
     
    ' contrôle saisie Classe
        If IsNull(Me.Filtre_AnneeScolaire) Then
            MsgBox "Sélectionnez une année.", vbCritical
            Me.Filtre_AnneeScolaire.SetFocus
            'Me.Filtre_AnneeScolaire.Dropdown  **** Pour dérouler le combobox à l'aide de la méthode DROPDOWN
            SendKeys "{F4}"      '*** Pour dérouler le combobox à l'aide de l'envoi de touche clavier (F4)
            Exit Sub
        End If
     
    ' contrôle de la sélection d'enregistrement(s)
    'If ctl2.ItemsSelected.Count = 0 Then
    If ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.ItemsSelected.Count = 0 Then
    MsgBox "Veuillez sélectionner un enregistrement au moins !"
    Exit Sub
    End If
     
    MesCriteres = _
    "ANNEE_SCOL = '" & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(1) & "' " & _
    "AND [MleEleveECIND] = " & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(2) & " " & _
    "AND [matricule] = '" & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(3) & "' " & _
    "AND [Nom et prénoms] = '" & ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(4) & "' " & _
    "AND [Date de naissance] = #" & Format(ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(5), "DD/MM/YYYY") & "#"
    '___________________________________________________________________________________
     'juste avant la ligne en jaune (If DCount etc) mettez ceci
     'MsgBox MesCriteres '------------> ligne de code à retenir pour constater mes erreurs.
     'ou, si vous utilisez la fenêtre "Exécution": '------------> Debug.Print MesCriteres
     '___________________________________________________________________________________
     
    If DCount("*", "CANDIDATS_ENTREE_EN_6e", MesCriteres) > 0 Then
        MsgBox "Cet enregistrement a deja ete insere"
        Me.Undo
    Else
        For Each i In ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.ItemsSelected
            rst.AddNew
            rst!ID_Enregistrement = f_ID_Enregistrement()
            rst!ANNEE_SCOL = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(1, i)
            rst!MleEleveECIND = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(2, i)
            rst!matricule = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(3, i)
            rst![Nom et prénoms] = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(4, i)
            rst![Date de naissance] = Format(ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(5), "DD/MM/YYYY")
            rst![lieu de naissance] = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(6, i)
            rst![sexe] = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(7, i)
            rst![pere] = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(8, i)
            rst![mere] = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(9, i)
            rst![Num_ActeNaissance] = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Column(10, i)
            rst.Update
        Next i
    End If
    With ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS
        .RowSource = .RowSource
        Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.RowSource = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.RowSource
     '_______________________________________________________________________________
     ' affichage des éléments saisis
        Me.Refresh
        Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.Requery
        Forms("Frm_CANDIDATS_ENTREE_EN_6e").Requery
        Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.RowSource = Me.ListeELEVES_A_SELECTONNER_POUR_LES_EXAMENS.RowSource
    End With
        Forms!Frm_CANDIDATS_ENTREE_EN_6e!CtlTabCANDIDATS.Pages(1).SetFocus
        DoCmd.GoToRecord , , acLast
     '_______________________________________________________________________________
    Set rst = Nothing
    Set dbs = Nothing
    End Sub
    Mais je constate que le paramètre MesCriteres = a cessé de gérer les doublons.
    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] [sql] le code ne veut plus rien enregistrer
    Par schats dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 03/03/2009, 13h07
  2. Réponses: 1
    Dernier message: 04/11/2007, 21h21
  3. Executer du code lors de changment d'enregistrement
    Par _etienne_ dans le forum VBA Access
    Réponses: 3
    Dernier message: 19/08/2007, 17h23
  4. Réponses: 4
    Dernier message: 18/04/2007, 16h32
  5. Code : ouvrir un formulaire sur enregistrement precis
    Par mat75019 dans le forum Access
    Réponses: 19
    Dernier message: 10/04/2006, 18h50

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