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

Discussion: Sélection multiple: Simple [AC-2013]

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 376
    Points : 126
    Points
    126

    Par défaut Sélection multiple: Simple

    Bonsoir membres du forum !
    Comment faut il programmer un formulaire en mode tabulaire ou en mode Feuille de données
    de sorte à sélectionner plusieurs lignes (Sélection multiple: Simple) telle qu'on le fait avec le contrôle
    zone de liste
    ?
    Cordialement.
    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

  2. #2
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    4 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 4 365
    Points : 7 462
    Points
    7 462

    Par défaut

    bonjour morobaboumar,
    il faudrait ajouter une case à cocher dans la table de manière à pouvoir sélectionner les enregistrements.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...

  3. #3
    Membre habitué Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    septembre 2009
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 376
    Points : 126
    Points
    126

    Par défaut

    Bonsoir membres du forum,
    bonsoir tee_grandbois,
    j'ai créé une BD en m'inspirant de votre post de la discussion https://www.developpez.net/forums/d1...uts-multiples/.
    Voici les erreurs qui résultent du code que j'ai essayé d'adapter à mon cas
    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
    Private Sub BtnEnregisterArticles_Click()
    Dim stMsg As String
    Dim Itm As Variant
    Dim oDb As Database
    Dim oRS As Recordset
     
    With Me.ListeArticleEnregistresA_Commander
        ' contrôle saisie articles
        If .ItemsSelected.Count = 0 Then Exit Sub
        ' contrôle saisie client
        If IsNull(Me.Num_Inscription) Then
            MsgBox "L'élève n'a pas été sélectionné.", vbCritical
            Me.Num_Inscription.SetFocus
            Exit Sub
        End If
     
        stMsg = "Voulez-vous insérer les articles suivants:" & vbCrLf
        For Each Itm In .ItemsSelected
            stMsg = stMsg & .Column(1, Itm) & vbCrLf
        Next Itm
     
    ' Confirmer l'insertion des produits
        stMsg = stMsg & "?"
        If MsgBox(stMsg, vbQuestion + vbYesNo) = vbNo Then Exit Sub
     
        Set oDb = CurrentDb
        Set oRS = oDb.OpenRecordset("ArticlesScolairesEnregistres_Achetes", dbOpenDynaset)
     
    ' ajout des éléments sélectionnés
        For Each Itm In .ItemsSelected
            oRS.AddNew
            oRS.Fields("NumEnregistreArticle") = .ItemData(Itm)
            oRS.Fields("NumInsCriptEleve") = Me.ArticlesScolairesEnregistres_Achetes_SF
            oRS.Update
        Next Itm
     
    ' enlever la sélection
        .RowSource = .RowSource
     
    ' affichage des éléments saisis
        Me.Refresh
    End With
     
    End Sub
    Pièces jointes:
    Nom : CaptureArticlesScolEcind.PNG
Affichages : 68
Taille : 37,5 Ko
    Nom : CaptureArticlesScolEcind2.PNG
Affichages : 64
Taille : 31,1 Ko
    Copie de ma BD.
    Cordialement.
    Fichiers attachés Fichiers attachés
    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

  4. #4
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    4 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 4 365
    Points : 7 462
    Points
    7 462

    Par défaut

    bonsoir,
    vérifie que le champ NumEnregistreArticle fait bien partie de la table du RecordSet utilisé ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oRS = oDb.OpenRecordset("ArticlesScolairesEnregistres_Achetes", dbOpenDynaset)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...

  5. #5
    Membre habitué Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    septembre 2009
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 376
    Points : 126
    Points
    126

    Par défaut

    Salut tee_grandbois,

    J'ai corrigé mon erreur dans le 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
    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
    Private Sub BtnEnregisterArticles_Click()
    Dim stMsg As String
    Dim Itm As Variant
    Dim oDb As Database
    Dim oRS As Recordset
     
    With Me.ListeArticleEnregistresA_Commander
        ' contrôle saisie articles
        If .ItemsSelected.Count = 0 Then Exit Sub
        ' contrôle saisie client
        If IsNull(Me.Num_Inscription) Then
            MsgBox "L'élève n'a pas été sélectionné.", vbCritical
            Me.Num_Inscription.SetFocus
            Exit Sub
        End If
     
        stMsg = "Voulez-vous insérer les articles suivants:" & vbCrLf
        For Each Itm In .ItemsSelected
            stMsg = stMsg & .Column(1, Itm) & vbCrLf
        Next Itm
     
    ' Confirmer l'insertion des produits
        stMsg = stMsg & "?"
        If MsgBox(stMsg, vbQuestion + vbYesNo) = vbNo Then Exit Sub
     
        Set oDb = CurrentDb
        Set oRS = oDb.OpenRecordset("ArticlesScolairesEnregistres_Achetes", dbOpenDynaset)
     
    ' ajout des éléments sélectionnés
        For Each Itm In .ItemsSelected
            oRS.AddNew
            oRS.Fields("ARTICL_SCO_EnrAchete") = .ItemData(Itm)
            oRS.Fields("NumInsCriptEleve") = Me.ArticlesScolairesEnregistres_Achetes_SF
            oRS.Update
        Next Itm
     
    ' enlever la sélection
        .RowSource = .RowSource
     
    ' affichage des éléments saisis
        Me.Refresh
    End With
     
    End Sub
    et modifié le type de donnée du champ "NumVente_Fourn_Scol" en NuméroAuto.
    L'insertion des données du côté du champ "ARTICL_SCO_EnrAchete" marche.
    Mais les autres champs restent vides. Je souhaiterais alors insérer les données dans le formulaire "ArticlesScolairesEnregistres_Achetes_SF" d'abord
    avant d'atteindre la table dudit formulaire.
    Afin que les champs: Etabissement_NO; anneescol; NumInsCriptEleve; Mleeleve puissent recevoir leurs données respectives selon l'élève sélectionné
    à partir de la zone de liste déroulante "Num_Inscription".

    Nom : CaptureArticlesScolEcind3.PNG
Affichages : 60
Taille : 21,3 Ko

    Nom : CaptureArticlesScolEcindRelations.PNG
Affichages : 59
Taille : 32,1 Ko

    Ici https://www.developpez.net/forums/d1.../#post10814537,
    aidez moi à mieux comprendre la selection multiple dans un formulaire.

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

  6. #6
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    4 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 4 365
    Points : 7 462
    Points
    7 462

    Par défaut

    Etabissement_NO; anneescol; NumInsCriptEleve; Mleeleve
    où peut-on trouver ces champs ?
    je ne trouve que les 2 premiers dans les colonnes de la liste ListeArticleEnregistresA_Commander et ça ce code comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    orst.fields("IdentifEtablissement") = .Column(9,itm)
    orst.fields("ANNEE_SCOL") = .Column(8,itm)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...

  7. #7
    Membre habitué Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    septembre 2009
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 376
    Points : 126
    Points
    126

    Par défaut

    Citation Envoyé par tee_grandbois Voir le message
    où peut-on trouver ces champs ?
    je ne trouve que les 2 premiers dans les colonnes de la liste ListeArticleEnregistresA_Commander et ça ce code comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    orst.fields("IdentifEtablissement") = .Column(9,itm)
    orst.fields("ANNEE_SCOL") = .Column(8,itm)
    J'ai introduit les deux lignes de code ci dessus dans la procedure
    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
    Private Sub BtnEnregisterArticles_Click()
    Dim stMsg As String
    Dim Itm As Variant
    Dim oDb As Database
    Dim oRS As Recordset
    
    With Me.ListeArticleEnregistresA_Commander
        ' contrôle saisie articles
        If .ItemsSelected.Count = 0 Then Exit Sub
        ' contrôle saisie client
        If IsNull(Me.Num_Inscription) Then
            MsgBox "L'élève n'a pas été sélectionné.", vbCritical
            Me.Num_Inscription.SetFocus
            Exit Sub
        End If
     
        stMsg = "Voulez-vous insérer les articles suivants:" & vbCrLf
        For Each Itm In .ItemsSelected
            stMsg = stMsg & .Column(1, Itm) & vbCrLf
        Next Itm
     
    ' Confirmer l'insertion des produits
        stMsg = stMsg & "?"
        If MsgBox(stMsg, vbQuestion + vbYesNo) = vbNo Then Exit Sub
     
        Set oDb = CurrentDb
        Set oRS = oDb.OpenRecordset("ArticlesScolairesEnregistres_Achetes", dbOpenDynaset)
     
    ' ajout des éléments sélectionnés
        For Each Itm In .ItemsSelected
            oRS.AddNew
            oRS.Fields("ARTICL_SCO_EnrAchete") = .ItemData(Itm)
            oRS.Fields("NumInsCriptEleve") = Me.ArticlesScolairesEnregistres_Achetes_SF
            
            orst.Fields("IdentifEtablissement") = .Column(9, Itm)
            orst.Fields("ANNEE_SCOL") = .Column(8, Itm)
            
            oRS.Update
        Next Itm
     
    ' enlever la sélection
        .RowSource = .RowSource
     
    ' affichage des éléments saisis
        Me.Refresh
    End With
    
    End Sub
    et voici les messages d'erreurs qui surviennent:

    Nom : CaptureArticlesScolEcind4.PNG
Affichages : 61
Taille : 34,1 Ko

    Nom : CaptureArticlesScolEcind5.PNG
Affichages : 60
Taille : 23,6 Ko

    Cordialement.
    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

  8. #8
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    4 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 4 365
    Points : 7 462
    Points
    7 462

    Par défaut

    bonjour morobaboumar,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oRS = oDb.OpenRecordset("ArticlesScolairesEnregistres_Achetes", dbOpenDynaset)
    oRS c'est le RecordSet que tu as déclaré donc si je mets orst tu es capable aussi de lire ce que j'envoie et corriger par toi même...
    remplace orst par oRS

    Ensuite, tu doit mettre aussi le bon nom du champ de la table:
    "IdentifEtablissement" devrait correspondre au Numéro d'établissement scolaire dans la table ArticlesScolairesEnregistres_Achetes
    "ANNEE_SCOL" devrait correspondre à l'année scolaire
    Regarde dans ta table et corrige les noms ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...

  9. #9
    Membre habitué Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    septembre 2009
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 376
    Points : 126
    Points
    126

    Par défaut

    Citation Envoyé par tee_grandbois Voir le message
    bonjour morobaboumar,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oRS = oDb.OpenRecordset("ArticlesScolairesEnregistres_Achetes", dbOpenDynaset)
    oRS c'est le RecordSet que tu as déclaré donc si je mets orst tu es capable aussi de lire ce que j'envoie et corriger par toi même...
    remplace orst par oRS

    Ensuite, tu doit mettre aussi le bon nom du champ de la table:
    "IdentifEtablissement" devrait correspondre au Numéro d'établissement scolaire dans la table ArticlesScolairesEnregistres_Achetes
    "ANNEE_SCOL" devrait correspondre à l'année scolaire
    Regarde dans ta table et corrige les noms ...
    Merci tee_grandbois,
    les éléments que vous me soulignez ont échappés à mon attention.
    Je vous retrouve dans quelques minutes.
    Cordialement.
    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

  10. #10
    Membre habitué Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    septembre 2009
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 376
    Points : 126
    Points
    126

    Par défaut

    Bonsoir tee_grandbois,
    Je viens de corriger mes erreurs.
    voici le bon code comme vous me l'avez souligné:
    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
    Private Sub BtnEnregisterArticles_Click()
    Dim stMsg As String
    Dim Itm As Variant
    Dim oDb As Database
    Dim oRS As Recordset
     
    With Me.ListeArticleEnregistresA_Commander
        ' contrôle saisie articles
        If .ItemsSelected.Count = 0 Then Exit Sub
        ' contrôle saisie client
        If IsNull(Me.Num_Inscription) Then
            MsgBox "L'élève n'a pas été sélectionné.", vbCritical
            Me.Num_Inscription.SetFocus
            Exit Sub
        End If
     
        stMsg = "Voulez-vous insérer les articles suivants:" & vbCrLf
        For Each Itm In .ItemsSelected
            stMsg = stMsg & .Column(1, Itm) & vbCrLf
        Next Itm
     
    ' Confirmer l'insertion des articles
        stMsg = stMsg & "?"
        If MsgBox(stMsg, vbQuestion + vbYesNo) = vbNo Then Exit Sub
     
        Set oDb = CurrentDb
        Set oRS = oDb.OpenRecordset("ArticlesScolairesEnregistres_Achetes", dbOpenDynaset)
     
    ' ajout des éléments sélectionnés
        For Each Itm In .ItemsSelected
            oRS.AddNew
            oRS.Fields("ARTICL_SCO_EnrAchete") = .ItemData(Itm)
            oRS.Fields("NumInsCriptEleve") = Me.ArticlesScolairesEnregistres_Achetes_SF
     
            oRS.Fields("Etabissement_NO") = .Column(9, Itm)
            oRS.Fields("anneescol") = .Column(8, Itm)
     
            InsererParametreEleve
     
            oRS.Update
     
        Next Itm
     
    ' enlever la sélection
        .RowSource = .RowSource
     
    ' affichage des éléments saisis
        Me.Refresh
    End With
     
    End Sub
    Ensuite, j'ai essayé d'écrire une procédure qui me ramènera les "Num_Inscription" et "MleEleve" dans la table "ArticlesScolairesEnregistres_Achetes"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub InsererParametreEleve()
    Dim strSQL As String
    Dim NumIns As Long
    Dim MleElv As Long
     
    strSQL = "INSERT INTO ArticlesScolairesEnregistres_Achetes " & _
                                    " (NumInsCriptEleve, Mleeleve)" & _
                                    " VALUES (" & _
                                    NumIns & "" & Me.Num_Inscription & "" & _
                                    MleElv & "" & Me.Txt_MleEleve & ""
     
                            'DoSQL strSQL
                        'Forms![ArticlesScolairesEnregistres_Achetes_SF].Form![NumVente_Fourn_Scol] = f_ArticlesScolaires() + 1
    End Sub
    mais ça ne marche pas.

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

  11. #11
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    4 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 4 365
    Points : 7 462
    Points
    7 462

    Par défaut

    pourquoi essayer de faire des choses compliquées ?
    Ce nouveau code (InsererParametreEleve) lance une requête d'insertion dans la table (avec INSERT INTO), alors que tu es déjà en train d'en faire dans VBA (avec RS.AddNew) cela va créer 2 enregistrements.
    Si une information se trouve dans le formulaire il faut l'utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oRS.Fields("NumInsCriptEleve") = Me.Num_Inscription
    par contre, celle-ci est à supprimer et elle est fausse de toute façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oRS.Fields("NumInsCriptEleve") = Me.ArticlesScolairesEnregistres_Achetes_SF
    Et si l'information ne s'y trouve pas, il faut l'ajouter: je te conseille de rajouter Mleeleve dans ta liste déroulante Num_insctiption car ce champ existe dans la table Eleve_Inscrit, il est plus facile, de ce fait, de récupérer cette donnée.

    Nom : _listeDeroul1.JPG
Affichages : 50
Taille : 43,2 Ko

    Il ne faudra pas oublier de modifier le nombre de colonnes qui passe à 2.

    Après ces modification tu pourras alimenter Mleeleve:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oRS.Fields("Mleeleve") = Me.Num_Inscription.column(1)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...

  12. #12
    Membre habitué Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    septembre 2009
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 376
    Points : 126
    Points
    126

    Par défaut

    Bonsoir tee_grandbois,
    Je vous envoie la copie de ma BD pour recevoir vos suggestions:
    Nom : CaptureArticlesScolEcind6.PNG
Affichages : 47
Taille : 53,0 Ko

    S'il vous plait pourriez vous me dire qu'est ce qui change dans le code si je remplace la zone de liste "ListeArticleEnregistresA_Commander"
    par le sous-formulaire "ArticlesScolairesEnregistres_SF" ?

    Cordialement.
    Fichiers attachés Fichiers attachés
    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

  13. #13
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    4 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 4 365
    Points : 7 462
    Points
    7 462

    Par défaut

    pour commencer:
    il ne faudrait pas mettre la sélection de l'année scolaire en premier, cela provoque une erreur 94 car du code est appelé avec le Num_Inscription qui n'est pas encore chargé à ce moment:

    Nom : _erreur02.JPG
Affichages : 40
Taille : 63,5 Ko

    ou alors, il faut tester si c'est nul avant de lancer le code:

    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 anneescol_AfterUpdate()
    ' appel du code qui ramène les informations
    call Num_Inscription_AfterUpdate
    End Sub
     
    Private Sub Num_Inscription_AfterUpdate()
    if not isnull(Me.Num_Inscription) then
        Me.Etablissement = RamenerID_ETABL_FREQ_SelonNumIscripEleve(Me.Num_Inscription)
        Me.Txt_MleEleve = RamenerMatriculeEleveSelonNumIscrip(Me.Num_Inscription)
    end if
    Me.ArticlesScolairesEnregistres_Achetes_SF.Requery
    Me.ListeArticleEnregistresA_Commander.Requery
    End Sub
    S'il vous plait pourriez vous me dire qu'est ce qui change dans le code si je remplace la zone de liste "ListeArticleEnregistresA_Commander"
    par le sous-formulaire "ArticlesScolairesEnregistres_SF" ?
    Si tu utilises le sous-formulaire et qui n'y a aucun enregistrement, que ramèneras-tu ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...

  14. #14
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    4 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 4 365
    Points : 7 462
    Points
    7 462

    Par défaut

    l'erreur 3201 est dû au fait que tu ne charges pas la bonne colonne de la liste déroulante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             oRS.Fields("ARTICL_SCO_EnrAchete") = .ItemData(Itm)
    Itm représente la ligne de la liste déroulante, si tu ne précises pas la colonne, c'est la première qui sera prise par défaut (colonne 0à et c'est le numéro auto de la ligne sélectionnée (champ NumEnregistreArticle) et qui est invisible puisque la largeur définie est 0:

    Nom : _erreur03.JPG
Affichages : 42
Taille : 74,2 Ko

    Il faut donc préciser la colonne pour récupérer le bon champ (ARTICLES_SCOL)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            oRS.Fields("ARTICL_SCO_EnrAchete") = .Column(1, Itm)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...

  15. #15
    Membre habitué Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    septembre 2009
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 376
    Points : 126
    Points
    126

    Par défaut

    Citation Envoyé par tee_grandbois Voir le message
    l'erreur 3201 est dû au fait que tu ne charges pas la bonne colonne de la liste déroulante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             oRS.Fields("ARTICL_SCO_EnrAchete") = .ItemData(Itm)
    Itm représente la ligne de la liste déroulante, si tu ne précises pas la colonne, c'est la première qui sera prise par défaut (colonne 0à et c'est le numéro auto de la ligne sélectionnée (champ NumEnregistreArticle) et qui est invisible puisque la largeur définie est 0:

    Il faut donc préciser la colonne pour récupérer le bon champ (ARTICLES_SCOL)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            oRS.Fields("ARTICL_SCO_EnrAchete") = .Column(1, Itm)
    Bonjour tee_grandbois !
    Effectivement la bonne ligne de code c'est la votre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            oRS.Fields("ARTICL_SCO_EnrAchete") = .Column(1, Itm)
    Merci infiniment.
    1e) Cette partie de notre discussion est résolue.

    Permettez moi, avec tout le grand respect que je vous dois, de le poursuivre avec cette 2e partie dont entre temps je vous avais soumis la question:
    S'il vous plait pourriez vous me dire qu'est ce qui change dans le code si je remplace la zone de liste "ListeArticleEnregistresA_Commander"
    par le sous-formulaire "ArticlesScolairesEnregistres_SF" ?
    Cordialement.
    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

  16. #16
    Membre habitué Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    septembre 2009
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 376
    Points : 126
    Points
    126

    Par défaut

    Citation Envoyé par tee_grandbois Voir le message
    pour commencer:
    Si tu utilises le sous-formulaire et qui n'y a aucun enregistrement, que ramèneras-tu ?
    Dans la mesure où le formulaire serait vide, alors un Msgbox pour signifier qu'il n y a aucune donnés à transférer !
    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

  17. #17
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    4 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 4 365
    Points : 7 462
    Points
    7 462

    Par défaut

    bonjour,
    Dans la mesure où le formulaire serait vide, alors un Msgbox pour signifier qu'il n y a aucune donnés à transférer !
    ta proposition n'a aucun sens !
    Je te rappelle que ce sous-formulaire contient les données de la table ArticlesScolairesEnregistres_Achetes que tu souhaites alimenter:
    Au moment de sa création, une table est vide ... mais celle là ne sera jamais remplie puisque tu voudrais, pour ton insertion, y récupérer une information qui n'y est pas encore et qui n'y sera jamais puisqu'il faut d'abord remplir la table avant d'aller y chercher les informations...
    Et mettre un message comme quoi il n'y a aucune donnée ne t'avancera pas plus pour insérer un enregistrement.

    Je te rappelle aussi que le problème à l'origine de ta question était "comment alimenter le champ Mleeleve de la table ArticlesScolairesEnregistres_Achetes à partir d'informations du formulaire FrmEnregistreCmdeArticlesScol_Divers".

    Donc, quand je te dis que cette instruction est fausse, crois-moi sur parole.

    Je t'ai donné la meilleure solution pour ton problème, à toi de voir ce que tu veux en faire...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...

  18. #18
    Membre habitué Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    septembre 2009
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 376
    Points : 126
    Points
    126

    Par défaut

    Bonsoir tee_grandbois,!
    J'ai parfaitement compris vos conseils.
    Je m'y aligne.
    Merci infiniment
    Je vous souhaite beaucoup de bonheur.
    Cordialement.
    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. #19
    Membre habitué Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    septembre 2009
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 376
    Points : 126
    Points
    126

    Par défaut Remplacer le numéroAuto de la table par un code de numéro numéroAuto personnalisés dans un champ numérique

    Bonsoir membres du forum,
    Bonsoir tee_grandbois,

    Je désire modifier le champ NumVente_Fourn_Scol (NuméruAuto) de la table ArticlesScolairesEnregistres_Achetes
    en champ de type de données numérique. Afin d'appeler le 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
    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
     
    Public Sub NumVente_Fourn_Scol_AutoPerso()
       Dim sWh As String
       If Nz(Me.NumVente_Fourn_Scol, 0) = 0 Then
          '--- test données nécessaires exitent
          If Nz(Me.anneescol, "") = "" Then
             MsgBox "Il manque anneescol"
             Me.anneescol.SetFocus
          ElseIf Nz(Me.Etabissement_NO, 0) = 0 Then
             MsgBox "Il manque Etabissement_NO"
             Me.Etabissement_NO.SetFocus
          ElseIf Nz(Me.NumInsCriptEleve, 0) = 0 Then
             MsgBox "Il manque NumInsCriptEleve"
             Me.NumInsCriptEleve.SetFocus
          Else
             '--- détermine n° NumVente_Fourn_Scol
             sWh = "NumInsCriptEleve=" & Me.NumInsCriptEleve & _
                   " AND Etabissement_NO=" & Me.Etabissement_NO & _
                   " AND anneescol='" & Me.anneescol & "'"
             Me.NumVente_Fourn_Scol = DCount("NumVente_Fourn_Scol", "ArticlesScolairesEnregistres_Achetes", sWh) + 1
          End If
       Else
          '--- ne rien faire: un n° chrono a déjà été donné
       End If
    End Sub
     
    Private Sub Etabissement_NO_Change()
       On Error Resume Next '--- parfois erreur quand entrée avec souris
       Me.Etabissement_NO.Dropdown
    End Sub
     
    Private Sub Mleeleve_Change()
       On Error Resume Next '--- parfois erreur quand entrée avec souris
       Me.Mleeleve.Dropdown
    End Sub
     
    Private Sub Mleeleve_LostFocus()
    NumVente_Fourn_Scol_AutoPerso
    End Sub
     
    Private Sub NumInsCriptEleve_Change()
       On Error Resume Next '--- parfois erreur quand entrée avec souris
       Me.NumInsCriptEleve.Dropdown
    End Sub
    dans le 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
    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
    Private Sub BtnEnregisterArticles_Click()
    Dim stMsg As String
    Dim Itm As Variant
    Dim oDb As Database
    Dim oRS As Recordset
     
    With Me.ListeArticleEnregistresA_Commander
        ' contrôle saisie articles
        If .ItemsSelected.Count = 0 Then Exit Sub
        ' contrôle saisie client
        If IsNull(Me.Num_Inscription) Then
            MsgBox "L'élève n'a pas été sélectionné.", vbCritical
            Me.Num_Inscription.SetFocus
            Exit Sub
        End If
     
        stMsg = "Voulez-vous insérer les articles suivants:" & vbCrLf
        For Each Itm In .ItemsSelected
            stMsg = stMsg & .Column(1, Itm) & vbCrLf
        Next Itm
     
    ' Confirmer l'insertion des articles
        stMsg = stMsg & "?"
        If MsgBox(stMsg, vbQuestion + vbYesNo) = vbNo Then Exit Sub
     
        Set oDb = CurrentDb
        Set oRS = oDb.OpenRecordset("ArticlesScolairesEnregistres_Achetes", dbOpenDynaset)
     
    ' ajout des éléments sélectionnés
        For Each Itm In .ItemsSelected
            oRS.AddNew
     
     
            oRS.Fields("ARTICL_SCO_EnrAchete") = .Column(1, Itm)
            oRS.Fields("AuteurArtScol") = .Column(2, Itm)
     
            oRS.Fields("Etabissement_NO") = .Column(9, Itm)
            oRS.Fields("anneescol") = .Column(8, Itm)
     
            oRS.Fields("NumInsCriptEleve") = Me.Num_Inscription
            oRS.Fields("Mleeleve") = Me.Txt_MleEleve
     
            oRS.Update
     
        Next Itm
     
    ' enlever la sélection
        .RowSource = .RowSource
     
    ' affichage des éléments saisis
        Me.Refresh
    End With
     
    End Sub
    qui pourrait me ramener le champ NumVente_Fourn_Scol de la table ArticlesScolairesEnregistres_Achetes.

    Motif:
    - Compte tenu du fait que le champ de type de données numéroAuto n'étant pas contrôlable ni modifiable, je souhaite avoir ce code qui génère des numéroAutos personnalisés au cas où il y aurais nécessité d'en modifier.
    Cordialement.
    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

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

Discussions similaires

  1. Sélection multiple dans un sous formulaire ?
    Par _developpeur_ dans le forum Access
    Réponses: 2
    Dernier message: 09/03/2019, 01h05
  2. CFileDialog et sélection multiple
    Par access75 dans le forum MFC
    Réponses: 6
    Dernier message: 23/05/2008, 14h09
  3. [Débutant] Sélection multiples dans une Listbox
    Par eraim dans le forum Access
    Réponses: 4
    Dernier message: 15/10/2005, 03h21
  4. créer un [ComboBox ??? ] à sélection multiple ?
    Par chasseur37 dans le forum Bases de données
    Réponses: 7
    Dernier message: 20/07/2005, 07h52
  5. [JList] bloquer la sélection multiple
    Par soad dans le forum Composants
    Réponses: 2
    Dernier message: 05/08/2004, 22h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo