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

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 433
    Points : 139
    Points
    139

    Par défaut Comment insérer les enregistrements dans une table grâce à une boîte de dialogue indépendante ?

    Salut membres du forum !
    Très heureux de vous retrouver. J'espère que tout le monde va bien.

    Voici mon souci:
    1°) - Habituellement, je crée une boîte de dialogue avec un formulaire dépendant d'une table.
    Mais je remarque, lorsque cette boîte de dialogue est chargée, elle charge toutes les
    informations contenues dans la table dont elle dépend. Ce qui parfois provoque chez moi le
    mélange d'enregistrements par erreur de touche de claviers de mon ordinateur.

    Nom : CaptureBDialogueDependantTable.PNG
Affichages : 125
Taille : 57,1 Ko

    2°) - En effet, je souhaite avoir une idée de "Comment insérer les enregistrements dans une table
    grâce à une boîte de dialogue indépendante ?
    " afin d’éviter des erreurs ou de mélange d'informations.

    Cord'alement.
    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
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    octobre 2004
    Messages
    3 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : octobre 2004
    Messages : 3 621
    Points : 7 717
    Points
    7 717

    Par défaut



    Si j'ai bien compris, boite de dialogue = Formulaire de saisie.

    Plusieurs pistes me viennent à l'esprit :
    1. Modifier la propriété du formulaire Entrée de données sur Oui (Les données existantes ne seront pas affichées)
    2. Utilisation d'un sous formulaire dans un formulaire principal.
    En effet, d'après l'exemple, tu crées des devis. Cela suppose donc que tu as au moins trois tables. Une Table T_Clients, une table T_Devis et une table T_DetailsDevis.
    Ainsi, en choisissant un client, tu pourras ainsi afficher tous les devis du client, puis après choix du Devis ou ajout d'un nouveau devis, tu pourras avoir le détail du devis correspondant.
    Exemple ci-joint
    Fichiers attachés Fichiers attachés
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    13 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 13 333
    Points : 20 243
    Points
    20 243

    Par défaut

    Bonjour.

    Et tu peux aussi envisager l'option de présenter une liste de valeur et que l'utilisateur ouvre un formulaire de saisie qui ne présente que l'enregistrement qu'il a sélectionné dans la liste.

    Ou alors utiliser un formulaire en double affichage : Un côté liste, un côté "Fiche individuelle".
    Note que ce mode d'affichage entraine des contraintes sur ce que tu peux ou ne peux pas utiliser dans ton formulaire.

    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.

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 433
    Points : 139
    Points
    139

    Par défaut

    Citation Envoyé par Jeannot45 Voir le message


    Si j'ai bien compris, boite de dialogue = Formulaire de saisie.

    Plusieurs pistes me viennent à l'esprit :
    1. Modifier la propriété du formulaire Entrée de données sur Oui (Les données existantes ne seront pas affichées)
    2. Utilisation d'un sous formulaire dans un formulaire principal.
    En effet, d'après l'exemple, tu crées des devis. Cela suppose donc que tu as au moins trois tables. Une Table T_Clients, une table T_Devis et une table T_DetailsDevis.
    Ainsi, en choisissant un client, tu pourras ainsi afficher tous les devis du client, puis après choix du Devis ou ajout d'un nouveau devis, tu pourras avoir le détail du devis correspondant.
    Exemple ci-joint
    Bonsoir Jeannot45,
    bonsoir marot_r,
    bonsoir membres du forum !

    Merci infiniment encore une fois de m'accorder votre attention !
    Je vais essayer d'adapter mon application à l'exemple de Jeannot45 tout en suivant vos conseils.
    Sans être prétentieux, je vous envoie une copie de mon application afin de recevoir vos critiques et suggestions.
    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

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 433
    Points : 139
    Points
    139

    Par défaut

    Citation Envoyé par Jeannot45 Voir le message


    Si j'ai bien compris, boite de dialogue = Formulaire de saisie.

    Plusieurs pistes me viennent à l'esprit :
    1. Modifier la propriété du formulaire Entrée de données sur Oui (Les données existantes ne seront pas affichées)
    2. Utilisation d'un sous formulaire dans un formulaire principal.
    En effet, d'après l'exemple, tu crées des devis. Cela suppose donc que tu as au moins trois tables. Une Table T_Clients, une table T_Devis et une table T_DetailsDevis.
    Ainsi, en choisissant un client, tu pourras ainsi afficher tous les devis du client, puis après choix du Devis ou ajout d'un nouveau devis, tu pourras avoir le détail du devis correspondant.
    Exemple ci-joint
    Bonsoir membres du forum !
    J'ai observé votre pièce jointe qui est vraiment très intéressante. Je vais essayer de l'adapter à ma base de données.
    Entre temps, j'ai créé un formulaire indépendant (Boite de dialogue) qui fait ce que je recherche.
    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    Option Compare Database: Option Explicit
     
    Private Sub cmdFermer_Click()
    DoCmd.Close acForm, Me.Name
    End Sub
     
    Private Sub CmdFournisseur_OperateurParticulier_Click()
    On Error GoTo AMARASANOGO
        Dim stDocName As String
        stDocName = "Tbl_OPERATEUR"
        DoCmd.OpenForm stDocName
      Exit Sub
    AMARASANOGO:
        MsgBox Err.Description
     
    End Sub
     
    Private Sub CmdTravauxMatériaux_Click()
    On Error Resume Next
    If MsgBox("ATTENTION !!" & vbCrLf & "VOULEZ-VOUS AJOUTER UN NOUVEAU TYPE ?" & vbCrLf & " OUBIEN Y APPORTER UNE MODIFICATION ?", vbQuestion + vbOKCancel + vbDefaultButton2, "AJOUT OU MODIFICATION") = vbCancel Then Exit Sub
    DoCmd.OpenForm "TYPE_TRAVAUX_et_MATERIAUX"
    End Sub
     
    Private Sub Form_Load()
    DoCmd.MoveSize 2900, 500, 16000, 10000
    End Sub
     
    Private Sub cmdEnregistrer_Click()
     
        If ControleChampsVides = False Then     'Au moins 1 champs obligatoire est vide
            Exit Sub
        Else
            DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
    'DoCmd.Close acForm, Me.Name
    End If
     
        ' Quelques variables
        Dim rst As dao.Recordset
        Dim lngNum As Long
     
        ' Ouvrir la table en lecture/écriture
        Set rst = CurrentDb.OpenRecordset("TRAVAUX_et_MATERIAUX_Engages_Detail_Facture", dbOpenDynaset)
     
        ' Boucler sur le nombre d'attestations demandées
        ''For lngNum = 0 To Me.txtNombreEnregistrements - 1
            ' Créer un enregistrement dans la table
            rst.AddNew
     
            ' Alimenter les champs
            rst("TexteSous_Designation") = Me.TexteSous_Designation_Txt
            rst("NumAutoSCmdSousDesignation") = Me.NumAutoSCmdSousDesignation_Txt
            rst("NUM_AUTO_Det_Fact") = fNUM_AUTO_Det_Fact() 'Me.NUM_AUTO_Det_Fact_Txt + lngNum
            rst("Num_Trav_Mat_Facture") = Me.Num_Trav_Mat_Facture_Txt
            rst("Mle_Operat_DetFact") = Me.Mle_Operat_DetFact_Txt
            rst("Date_Facturation") = Me.Date_Facturation_Txt
            rst("TravauxMateriaux") = Me.TravauxMateriaux_Txt
            rst("Designation_Cmde") = Me.Designation_Cmde_Txt
            rst("Designation_Cmde") = Me.Designation_Cmde_Txt
            rst("Qte_Cde") = Me.Qte_Cde_Txt
            rst("PrixUnitaire_Fact") = Me.PrixUnitaire_Fact_Txt
            rst("Fournisseur_OperateurParticulier") = Me.Fournisseur_OperateurParticulier_Txt
            rst("StatutFacture") = Me.StatutFacture_Txt
            ' Valider
            rst.Update
        'Next
     
        rst.Close
        Set rst = Nothing
        MsgBox "Opération terminée !", vbInformation
     
    'Code de Raffraichissement
        Forms!OPERATEUR![TRAVAUX_et_MATERIAUX_Engages_SF]![TRAVAUX_et_MATERIAUX_Engages_Detail_Facture_SF].Requery
     
    DoCmd.Close acForm, Me.Name
     
    End Sub
     
     
    Function ControleChampsVides() As Boolean
    On Error Resume Next
     
    'Contrôle du champ NumAutoSCmdSousDesignation_Txt
    If IsNull(Me.NumAutoSCmdSousDesignation_Txt) Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "Le NumAutoSCmdSousDesignation_Txt n'est pas sélectionné.", vbExclamation + vbOKOnly, "Sélectionnez le NumAutoSCmdSousDesignation_Txt"
        Me.NumAutoSCmdSousDesignation_Txt.SetFocus
        'Me.NumAutoSCmdSousDesignation_Txt.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 Function
    End If
     
    'Contrôle du champ Num_Trav_Mat_Facture_Txt
    If IsNull(Me.Num_Trav_Mat_Facture_Txt) Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "Le Num_Trav_Mat_Facture_Txt n'est pas sélectionné.", vbExclamation + vbOKOnly, "Sélectionnez le Num_Trav_Mat_Facture_Txt"
        Me.Num_Trav_Mat_Facture_Txt.SetFocus
        'Me.Num_Trav_Mat_Facture_Txt.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 Function
    End If
    'Contrôle du champ Mle_Operat_DetFact_Txt
    If IsNull(Me.Mle_Operat_DetFact_Txt) Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "Le Mle_Operat_DetFact_Txt n'est pas sélectionné.", vbExclamation + vbOKOnly, "Sélectionnez le Mle_Operat_DetFact_Txt"
        Me.Mle_Operat_DetFact_Txt.SetFocus
        'Me.Mle_Operat_DetFact_Txt.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 Function
    End If
    'Contrôle du champ Date
    If IsNull(Me.Date_Facturation_Txt) Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "La Date n'est pas sélectionnée.", vbExclamation + vbOKOnly, "Sélectionnez la Date_Facturation_Txt"
        Me.Date_Facturation_Txt.SetFocus
        'Me.Date_Facturation_Txt.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 Function
    End If
    'Contrôle du champ TravauxMateriaux_Txt
    If IsNull(Me.TravauxMateriaux_Txt) Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "Les TravauxMateriaux_Txt ne sont pas sélectionnés.", vbExclamation + vbOKOnly, "Sélectionnez les TravauxMateriaux_Txt"
        Me.TravauxMateriaux_Txt.SetFocus
        'Me.TravauxMateriaux_Txt.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 Function
    End If
     
    'Contrôle du champ Designation_Cmde_Txt
    If IsNull(Me.Designation_Cmde_Txt) Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "La Designation_Cmde n'est pas sélectionnée.", vbExclamation + vbOKOnly, "Sélectionnez la Designation_Cmde_Txt"
        Me.Designation_Cmde_Txt.SetFocus
        'Me.Designation_Cmde_Txt.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 Function
    End If
    'Contrôle du Prix Unitaire
    If Me.PrixUnitaire_Fact_Txt <= 0 Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "Le PrixUnitaire_Fact_Txt doit être supérieur à 0.", vbExclamation + vbOKOnly, "Montant incorrect"
        Me.PrixUnitaire_Fact_Txt.SetFocus
    Exit Function
    End If
    'Contrôle de la Quantité
    If Me.Qte_Cde_Txt <= 0 Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "La Quantité doit être supérieure à 0.", vbExclamation + vbOKOnly, "Quantité incorrecte"
        Me.Qte_Cde_Txt.SetFocus
    Exit Function
    End If
     
    'Contrôle du champ Fournisseur_OperateurParticulier
    If IsNull(Me.Fournisseur_OperateurParticulier_Txt) Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "Le Fournisseur_OperateurParticulier Facture n'est pas sélectionné.", vbExclamation + vbOKOnly, "Sélectionnez le Fournisseur_OperateurParticulier"
        Me.Fournisseur_OperateurParticulier_Txt.SetFocus
        'Me.Fournisseur_OperateurParticulier_Txt.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 Function
    End If
    'Contrôle du champ StatutFacture
    If IsNull(Me.StatutFacture_Txt) Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "Le Statut Facture n'est pas sélectionné.", vbExclamation + vbOKOnly, "Sélectionnez le Statut Facture"
        Me.StatutFacture_Txt.SetFocus
        'Me.StatutFacture_Txt.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 Function
    End If
    ControleChampsVides = True
    End Function
     
    Private Sub Form_Open(Cancel As Integer)
        Me.NomPrenomOPERATEUR_FINANCEMENT = UCase(NomPrenom_OPERATEUR(Me.Mle_Operat_DetFact_Txt))
     
    End Sub
     
    Private Sub Fournisseur_OperateurParticulier_Txt_LostFocus()
    Me.Aperçu_Fournisseur_OperateurParticulier = RamenerOperateur(Me.Fournisseur_OperateurParticulier_Txt)
    End Sub
     
    Private Sub NumAutoSCmdSousDesignation_Txt_AfterUpdate()
    Me.TexteSous_Designation_Txt = RamenerSous_Designation(Me.NumAutoSCmdSousDesignation_Txt)
    End Sub
     
    Private Sub NumAutoSCmdSousDesignation_Txt_LostFocus()
    Me.TexteSous_Designation_Txt = RamenerSous_Designation(Me.NumAutoSCmdSousDesignation_Txt)
    End Sub
     
    Private Sub StatutFacture_Txt_LostFocus()
    Me.ApercuStatutFacture = RamenerlibelleStatutFacture(Me.StatutFacture_Txt)
    End Sub
     
    Private Sub TravauxMateriaux_Txt_AfterUpdate()
    Me.Aperçu_Libelle_TravauxMateriaux = RamenerlibelleDesTravauxMateriaux(Me.TravauxMateriaux_Txt)
    End Sub
     
    Private Sub TravauxMateriaux_Txt_LostFocus()
    Me.Aperçu_Libelle_TravauxMateriaux = RamenerlibelleDesTravauxMateriaux(Me.TravauxMateriaux_Txt)
    End Sub
    - Pièce jointe copie BD.
    Images attachées Images attachées  
    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

  6. #6
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    octobre 2004
    Messages
    3 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : octobre 2004
    Messages : 3 621
    Points : 7 717
    Points
    7 717

    Par défaut



    Pourquoi être passé par un formulaire indépendant ?
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 433
    Points : 139
    Points
    139

    Par défaut

    Citation Envoyé par Jeannot45 Voir le message

    Pourquoi être passé par un formulaire indépendant ?
    Bonjour membres du forum !

    Parce que habituellement, je crée une boîte de dialogue avec un formulaire dépendant d'une table.
    Mais je remarque, lorsque cette boîte de dialogue est chargée, elle charge toutes les
    informations contenues dans la table dont elle dépend. Ce qui parfois provoque chez moi le
    mélange d'enregistrements par erreur de touche de claviers de mon ordinateur, etc.

    Alors qu'avec le formulaire indépendant, au chargement, il est vide. Donc, une fois bien programmé,
    il insère les données dans la table dont il est chargé de remplir.

    Voila mon avis.
    Cordialement.
    Images attachées Images attachées   
    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
    Membre émérite Avatar de hyperion13
    Homme Profil pro
    Calot120 - Enseignant Post Bac
    Inscrit en
    octobre 2007
    Messages
    1 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Calot120 - Enseignant Post Bac
    Secteur : Enseignement

    Informations forums :
    Inscription : octobre 2007
    Messages : 1 596
    Points : 2 448
    Points
    2 448

    Par défaut

    Si c'est pour ajouter de nouveaux enregistrements alors autant utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "Nomduform", , , , acFormAdd
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    GMT+4 - 21°19'18" S - 055°25'32" E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse est pertinente. N'oubliez pas svp de clôturer le sujet en cliquant sur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 433
    Points : 139
    Points
    139

    Par défaut

    Citation Envoyé par hyperion13 Voir le message
    Si c'est pour ajouter de nouveaux enregistrements alors autant utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "Nomduform", , , , acFormAdd
    Bonsoir membres du forum !
    Merci infiniment. Le code ci dessus marche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "TRAVAUX_et_MATERIAUX_Engages_Detail_Facture_SF_Boite_SaisieIndep", , , , acFormAdd
    Maintenant, je recherche la méthode dans le code qui pourrait me permettre de recharger l'enregistrement
    sur laquelle le curseur est posé afin d'y apporter une correction ou une modification.

    C'est à dire: après double-clique dans le champ bleu "NUM_AUTO_Det_Fact" du sous-formulaire
    "Formulaires]![OPERATEUR]![TRAVAUX_et_MATERIAUX_Engages_SF]![TRAVAUX_et_MATERIAUX_Engages_Detail_Facture_SF]![NUM_AUTO_Det_Fact]" de l'enregistrement sélectionne
    pour y apporter une correction ou une modification.

    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
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    octobre 2004
    Messages
    3 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : octobre 2004
    Messages : 3 621
    Points : 7 717
    Points
    7 717

    Par défaut



    Il faut faire un recordset sur l'enregistrement correspondant et affecter chaque valeur de champ du recordset au contrôle correspondant dans le formulaire .
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 433
    Points : 139
    Points
    139

    Par défaut

    Citation Envoyé par Jeannot45 Voir le message

    Il faut faire un recordset sur l'enregistrement correspondant et affecter chaque valeur de champ du recordset au contrôle correspondant dans le formulaire .
    Bonjour membres du forum !

    Voici le lien https://access.developpez.com/faq/?p...m#PosEnrSSForm qui indique différent code sur le Recordset

    Aidez moi à y adopter mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "TRAVAUX_et_MATERIAUX_Engages_Detail_Facture_SF_Boite_SaisieIndep", , , , acFormAdd
    oubien

    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
    Sub Appel_TRAVAUX_et_MATERIAUX_Engages_Detail_Facture_SF_Boite_SaisieIndep()
    On Error Resume Next
    Dim stDocName As String
    Dim stLinkCriteria As String
    Dim rep As Integer
     
    stDocName = "TRAVAUX_et_MATERIAUX_Engages_Detail_Facture_SF_Boite_SaisieIndep"
     
    rep = MsgBox("QUE VOULEZ-VOUS FAIRE ?" & vbCrLf & "AJOUTER DES DONNEES ---> OUI" & _
    vbCrLf & "" & vbCrLf & "MODIFIER LES NOUVELLES DONNEES EN COURS ---> NON" & vbCrLf & "" & vbCrLf & "QUITTER SANS RIEN FAIRE ---> ANNULER", _
    vbYesNoCancel + vbQuestion, "Choisir un traitement")
    Select Case rep
    Case vbYes
        DoCmd.OpenForm stDocName, , , , , , Me.Mle_Operat_DetFact
        nEnreg = Me.Num_Trav_Mat_Facture
    Case vbNo
        If Me.NewRecord = True Then
           If MsgBox("AUCUNE NOUVELLE DONNEE N'EST ACTIVE POUR CET OPERATEUR !!" & vbCrLf & "VOULEZ-VOUS AJOUTER DES DONNEES ?", vbYesNo + vbQuestion, "AJOUTER NOUVELLES DONNEES") = vbYes Then
               DoCmd.OpenForm stDocName, , , , , , Me.Mle_Operat_DetFact
           End If
        Else
            stLinkCriteria = "[NUM_AUTO_Det_Fact]=" & Me.NUM_AUTO_Det_Fact
            DoCmd.OpenForm stDocName, , , stLinkCriteria
            nEnreg = Me.Num_Trav_Mat_Facture
     
       End If
    Case vbCancel
    Case Else
    End Select
    End Sub
    et le code du formulaire-Boite de dialogue "TRAVAUX_et_MATERIAUX_Engages_Detail_Facture_SF_Boite_SaisieIndep"
    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
    Private Sub cmdEnregistrer_Click()
     
        If ControleChampsVides = False Then     'Au moins 1 champs obligatoire est vide
            Exit Sub
        Else
            DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
    'DoCmd.Close acForm, Me.Name
    End If
     
        ' Quelques variables
        Dim rst As dao.Recordset
        Dim lngNum As Long
     
        ' Ouvrir la table en lecture/écriture
        Set rst = CurrentDb.OpenRecordset("TRAVAUX_et_MATERIAUX_Engages_Detail_Facture", dbOpenDynaset)
     
        ' Boucler sur le nombre d'attestations demandées
        ''For lngNum = 0 To Me.txtNombreEnregistrements - 1
            ' Créer un enregistrement dans la table
            rst.AddNew
     
            ' Alimenter les champs
            rst("TexteSous_Designation") = Me.TexteSous_Designation_Txt
            rst("NumAutoSCmdSousDesignation") = Me.NumAutoSCmdSousDesignation_Txt
            rst("NUM_AUTO_Det_Fact") = fNUM_AUTO_Det_Fact() 'Me.NUM_AUTO_Det_Fact_Txt + lngNum
            rst("Num_Trav_Mat_Facture") = Me.Num_Trav_Mat_Facture_Txt
            rst("Mle_Operat_DetFact") = Me.Mle_Operat_DetFact_Txt
            rst("Date_Facturation") = Me.Date_Facturation_Txt
            rst("TravauxMateriaux") = Me.TravauxMateriaux_Txt
            rst("Designation_Cmde") = Me.Designation_Cmde_Txt
            rst("Designation_Cmde") = Me.Designation_Cmde_Txt
            rst("Qte_Cde") = Me.Qte_Cde_Txt
            rst("PrixUnitaire_Fact") = Me.PrixUnitaire_Fact_Txt
            rst("Fournisseur_OperateurParticulier") = Me.Fournisseur_OperateurParticulier_Txt
            rst("StatutFacture") = Me.StatutFacture_Txt
            ' Valider
            rst.Update
        'Next
     
        rst.Close
        Set rst = Nothing
        MsgBox "Opération terminée !", vbInformation
     
    'Code de Raffraichissement
        Forms!OPERATEUR![TRAVAUX_et_MATERIAUX_Engages_SF]![TRAVAUX_et_MATERIAUX_Engages_Detail_Facture_SF].Requery
     
    DoCmd.Close acForm, Me.Name
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Form_Open(Cancel As Integer)
    Me.NomPrenomOPERATEUR_FINANCEMENT = UCase(NomPrenom_OPERATEUR(Me.Mle_Operat_DetFact_Txt))
    Me.NUM_AUTO_Det_Fact_Txt = fNUM_AUTO_Det_Fact()
    End Sub
    J'ai modifié le formulaire "TRAVAUX_et_MATERIAUX_Engages_Detail_Facture_SF_Boite_SaisieIndep" en y ajoutant un contrôle onglet "CtlTab1TRAVAUX_et_MATERIAUX_Engages_Detail_Facture" dont le deuxième onglet "MODIFICATION DE DONNEES" contient
    une zone de liste "ListeTRAVAUX_et_MATERIAUX_Engages_Detail_Facture" prévu pour la modification ou suppression de données précédentes.

    Nom : CaptureBDialogueDependantTable5.PNG
Affichages : 57
Taille : 50,1 Ko

    Nom : CaptureBDialogueDependantTable6.PNG
Affichages : 57
Taille : 53,3 Ko
    Nouvelle pièce jointe

    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

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 433
    Points : 139
    Points
    139

    Par défaut

    Citation Envoyé par Jeannot45 Voir le message


    Il faut faire un recordset sur l'enregistrement correspondant et affecter chaque valeur de champ du recordset au contrôle correspondant dans le formulaire .
    Salut !

    Pourriez vous me donner un exemple de la méthode que vous venez de me suggérée ?
    Ain que je puisse l'adapter à mon cas.
    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

  13. #13
    Membre émérite Avatar de hyperion13
    Homme Profil pro
    Calot120 - Enseignant Post Bac
    Inscrit en
    octobre 2007
    Messages
    1 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Calot120 - Enseignant Post Bac
    Secteur : Enseignement

    Informations forums :
    Inscription : octobre 2007
    Messages : 1 596
    Points : 2 448
    Points
    2 448

    Par défaut

    Lorsque j'ai proposé la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "TRAVAUX_et_MATERIAUX_Engages_Detail_Facture_SF_Boite_SaisieIndep", , , , acFormAdd
    cela impliquait que votre form "TRAVAUX_et_MATERIAUX_Engages_Detail_Facture_SF_Boite_SaisieIndep" restait attaché à une source (tbl ou req). Donc il n'était plus indépendant.

    Également, pour confirmer ou non le nouvel enregistrement voire des modifications dans votre form "TRAVAUX_et_MATERIAUX_Engages_Detail_Facture_SF_Boite_SaisieIndep", il y a à mon avis plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Form_BeforeUpdate(Cancel As Integer)
        If MsgBox("Des modifications ont été apportées dans votre form." _
            & vbCrLf & vbCrLf & "Voulez-vous enregistrer ces modification ?" _
            , vbYesNo, "Modifications effectuées ...") = vbYes Then
            DoCmd.Save
        Else
            DoCmd.RunCommand acCmdUndo
        End If
    End Sub
    Mais vous devez aimer écrire des lignes de code et encore des lignes de code.
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    GMT+4 - 21°19'18" S - 055°25'32" E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse est pertinente. N'oubliez pas svp de clôturer le sujet en cliquant sur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 433
    Points : 139
    Points
    139

    Par défaut

    Bonjour hyperyon13 !

    1°) Après plusieurs tests, je constate que votre code marche avec l'événement suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Form_Close()
    If MsgBox("Des modifications ont été apportées dans votre form." _
            & vbCrLf & vbCrLf & "Voulez-vous enregistrer ces modification ?" _
            , vbYesNo, "Modifications effectuées ...") = vbYes Then
            DoCmd.Save
        Else
            DoCmd.RunCommand acCmdUndo
        End If
    End Sub
    mais avec un message d'erreur (voir capture d'écran):

    Nom : CaptureBDialogueDependantTable7.PNG
Affichages : 41
Taille : 23,6 Ko
    Nom : CaptureBDialogueDependantTable8.PNG
Affichages : 40
Taille : 10,5 Ko

    2°) Comment recharger dans le form "TRAVAUX_et_MATERIAUX_Engages_Detail_Facture_SF_Boite_SaisieIndep" grâce à du code les un enregistrement précédant afin d'y apporter des modifications ?

    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

  15. #15
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    4 639
    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 639
    Points : 7 896
    Points
    7 896

    Par défaut

    bonjour,
    hyperion13 te propose un code sur cet évènement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Form_BeforeUpdate(Cancel As Integer)
    et tu le fais sur celui-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Form_Close()
    normal que cela plante: sur fermeture d'un formulaire, il est trop tard pour exécuter un Undo
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 433
    Points : 139
    Points
    139

    Par défaut

    Bonsoir Tee_grandbois, bonsoir hyperyon13 !

    Avec l'événement avant mis à jour, il n y a pas de message de confirmation qui apparaît.
    C'est pour ça que j'ai essayé le code avec l'événement à la fermeture du formulaire.
    Je voudrais mieux connaître l'objet Undo.

    2°) Comment pourrais-je recharger un enregistrement précédent dans le formulaire en question ?
    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

  17. #17
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    4 639
    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 639
    Points : 7 896
    Points
    7 896

    Par défaut

    Si cela ne fonctionne pas dans l'évènement BeforeUpdate c'est que c'est sans doute un formulaire sans table associée avec des champs indépendants
    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
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 433
    Points : 139
    Points
    139

    Par défaut

    Citation Envoyé par tee_grandbois Voir le message
    Si cela ne fonctionne pas dans l'évènement BeforeUpdate c'est que c'est sans doute un formulaire sans table associée avec des champs indépendants
    Oui c'est un formulaire indépendant sans table associée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
      Option Compare Database: Option Explicit
     
    Private Sub cmdFermer_Click()
    DoCmd.Close acForm, Me.Name
    End Sub
     
    Private Sub CmdFournisseur_OperateurParticulier_Click()
    On Error GoTo AMARASANOGO
        Dim stDocName As String
        stDocName = "Tbl_OPERATEUR"
        DoCmd.OpenForm stDocName
      Exit Sub
    AMARASANOGO:
        MsgBox Err.Description
     
    End Sub
     
    Private Sub CmdTravauxMatériaux_Click()
    On Error Resume Next
    If MsgBox("ATTENTION !!" & vbCrLf & "VOULEZ-VOUS AJOUTER UN NOUVEAU TYPE ?" & vbCrLf & " OUBIEN Y APPORTER UNE MODIFICATION ?", vbQuestion + vbOKCancel + vbDefaultButton2, "AJOUT OU MODIFICATION") = vbCancel Then Exit Sub
    DoCmd.OpenForm "TYPE_TRAVAUX_et_MATERIAUX"
    End Sub
     
    Private Sub Form_Load()
    DoCmd.MoveSize 2900, 500, 16000, 10000
    End Sub
     
    Private Sub cmdEnregistrer_Click()
     
        If ControleChampsVides = False Then     'Au moins 1 champs obligatoire est vide
            Exit Sub
        Else
            DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
    'DoCmd.Close acForm, Me.Name
    End If
     
        ' Quelques variables
        Dim rst As dao.Recordset
        Dim lngNum As Long
     
        ' Ouvrir la table en lecture/écriture
        Set rst = CurrentDb.OpenRecordset("TRAVAUX_et_MATERIAUX_Engages_Detail_Facture", dbOpenDynaset)
     
        ' Boucler sur le nombre d'attestations demandées
        ''For lngNum = 0 To Me.txtNombreEnregistrements - 1
            ' Créer un enregistrement dans la table
            rst.AddNew
     
            ' Alimenter les champs
            rst("TexteSous_Designation") = Me.TexteSous_Designation_Txt
            rst("NumAutoSCmdSousDesignation") = Me.NumAutoSCmdSousDesignation_Txt
            rst("NUM_AUTO_Det_Fact") = fNUM_AUTO_Det_Fact() 'Me.NUM_AUTO_Det_Fact_Txt + lngNum
            rst("Num_Trav_Mat_Facture") = Me.Num_Trav_Mat_Facture_Txt
            rst("Mle_Operat_DetFact") = Me.Mle_Operat_DetFact_Txt
            rst("Date_Facturation") = Me.Date_Facturation_Txt
            rst("TravauxMateriaux") = Me.TravauxMateriaux_Txt
            rst("Designation_Cmde") = Me.Designation_Cmde_Txt
            rst("Designation_Cmde") = Me.Designation_Cmde_Txt
            rst("Qte_Cde") = Me.Qte_Cde_Txt
            rst("PrixUnitaire_Fact") = Me.PrixUnitaire_Fact_Txt
            rst("Fournisseur_OperateurParticulier") = Me.Fournisseur_OperateurParticulier_Txt
            rst("StatutFacture") = Me.StatutFacture_Txt
            ' Valider
            rst.Update
        'Next
     
        rst.Close
        Set rst = Nothing
        MsgBox "Opération terminée !", vbInformation
     
    'Code de Raffraichissement
        Forms!OPERATEUR![TRAVAUX_et_MATERIAUX_Engages_SF]![TRAVAUX_et_MATERIAUX_Engages_Detail_Facture_SF].Requery
     
    DoCmd.Close acForm, Me.Name
     
    End Sub
     
     
    Function ControleChampsVides() As Boolean
    On Error Resume Next
     
    'Contrôle du champ NumAutoSCmdSousDesignation_Txt
    If IsNull(Me.NumAutoSCmdSousDesignation_Txt) Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "Le NumAutoSCmdSousDesignation_Txt n'est pas sélectionné.", vbExclamation + vbOKOnly, "Sélectionnez le NumAutoSCmdSousDesignation_Txt"
        Me.NumAutoSCmdSousDesignation_Txt.SetFocus
        'Me.NumAutoSCmdSousDesignation_Txt.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 Function
    End If
     
    'Contrôle du champ Num_Trav_Mat_Facture_Txt
    If IsNull(Me.Num_Trav_Mat_Facture_Txt) Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "Le Num_Trav_Mat_Facture_Txt n'est pas sélectionné.", vbExclamation + vbOKOnly, "Sélectionnez le Num_Trav_Mat_Facture_Txt"
        Me.Num_Trav_Mat_Facture_Txt.SetFocus
        'Me.Num_Trav_Mat_Facture_Txt.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 Function
    End If
    'Contrôle du champ Mle_Operat_DetFact_Txt
    If IsNull(Me.Mle_Operat_DetFact_Txt) Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "Le Mle_Operat_DetFact_Txt n'est pas sélectionné.", vbExclamation + vbOKOnly, "Sélectionnez le Mle_Operat_DetFact_Txt"
        Me.Mle_Operat_DetFact_Txt.SetFocus
        'Me.Mle_Operat_DetFact_Txt.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 Function
    End If
    'Contrôle du champ Date
    If IsNull(Me.Date_Facturation_Txt) Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "La Date n'est pas sélectionnée.", vbExclamation + vbOKOnly, "Sélectionnez la Date_Facturation_Txt"
        Me.Date_Facturation_Txt.SetFocus
        'Me.Date_Facturation_Txt.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 Function
    End If
    'Contrôle du champ TravauxMateriaux_Txt
    If IsNull(Me.TravauxMateriaux_Txt) Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "Les TravauxMateriaux_Txt ne sont pas sélectionnés.", vbExclamation + vbOKOnly, "Sélectionnez les TravauxMateriaux_Txt"
        Me.TravauxMateriaux_Txt.SetFocus
        'Me.TravauxMateriaux_Txt.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 Function
    End If
     
    'Contrôle du champ Designation_Cmde_Txt
    If IsNull(Me.Designation_Cmde_Txt) Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "La Designation_Cmde n'est pas sélectionnée.", vbExclamation + vbOKOnly, "Sélectionnez la Designation_Cmde_Txt"
        Me.Designation_Cmde_Txt.SetFocus
        'Me.Designation_Cmde_Txt.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 Function
    End If
    'Contrôle du Prix Unitaire
    If Me.PrixUnitaire_Fact_Txt <= 0 Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "Le PrixUnitaire_Fact_Txt doit être supérieur à 0.", vbExclamation + vbOKOnly, "Montant incorrect"
        Me.PrixUnitaire_Fact_Txt.SetFocus
    Exit Function
    End If
    'Contrôle de la Quantité
    If Me.Qte_Cde_Txt <= 0 Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "La Quantité doit être supérieure à 0.", vbExclamation + vbOKOnly, "Quantité incorrecte"
        Me.Qte_Cde_Txt.SetFocus
    Exit Function
    End If
     
    'Contrôle du champ Fournisseur_OperateurParticulier
    If IsNull(Me.Fournisseur_OperateurParticulier_Txt) Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "Le Fournisseur_OperateurParticulier Facture n'est pas sélectionné.", vbExclamation + vbOKOnly, "Sélectionnez le Fournisseur_OperateurParticulier"
        Me.Fournisseur_OperateurParticulier_Txt.SetFocus
        'Me.Fournisseur_OperateurParticulier_Txt.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 Function
    End If
    'Contrôle du champ StatutFacture
    If IsNull(Me.StatutFacture_Txt) Then
        ControleChampsVides = False
        MsgBox "ATTENTION !" & vbCrLf & "Le Statut Facture n'est pas sélectionné.", vbExclamation + vbOKOnly, "Sélectionnez le Statut Facture"
        Me.StatutFacture_Txt.SetFocus
        'Me.StatutFacture_Txt.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 Function
    End If
    ControleChampsVides = True
    End Function
     
    Private Sub Form_Open(Cancel As Integer)
        Me.NomPrenomOPERATEUR_FINANCEMENT = UCase(NomPrenom_OPERATEUR(Me.Mle_Operat_DetFact_Txt))
     
    End Sub
     
    Private Sub Fournisseur_OperateurParticulier_Txt_LostFocus()
    Me.Aperçu_Fournisseur_OperateurParticulier = RamenerOperateur(Me.Fournisseur_OperateurParticulier_Txt)
    End Sub
     
    Private Sub NumAutoSCmdSousDesignation_Txt_AfterUpdate()
    Me.TexteSous_Designation_Txt = RamenerSous_Designation(Me.NumAutoSCmdSousDesignation_Txt)
    End Sub
     
    Private Sub NumAutoSCmdSousDesignation_Txt_LostFocus()
    Me.TexteSous_Designation_Txt = RamenerSous_Designation(Me.NumAutoSCmdSousDesignation_Txt)
    End Sub
     
    Private Sub StatutFacture_Txt_LostFocus()
    Me.ApercuStatutFacture = RamenerlibelleStatutFacture(Me.StatutFacture_Txt)
    End Sub
     
    Private Sub TravauxMateriaux_Txt_AfterUpdate()
    Me.Aperçu_Libelle_TravauxMateriaux = RamenerlibelleDesTravauxMateriaux(Me.TravauxMateriaux_Txt)
    End Sub
     
    Private Sub TravauxMateriaux_Txt_LostFocus()
    Me.Aperçu_Libelle_TravauxMateriaux = RamenerlibelleDesTravauxMateriaux(Me.TravauxMateriaux_Txt)
    End Sub
    Voir les codes au 1er post de la discussion.
    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
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    4 639
    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 639
    Points : 7 896
    Points
    7 896

    Par défaut

    si c'est un formulaire indépendant (mais on t'a déjà fait la remarque que ce n'est pas la bonne méthode car on peut ouvrir en formulaire en mode "Entrée de données" pour éviter d'avoir tous les enregistrements de la table), il est inutile de mettre un Undo (l'annulation concerne la saisie dans la table, pas les contrôles du formulaire)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : septembre 2009
    Messages : 433
    Points : 139
    Points
    139

    Par défaut

    Dois je revenir au formulaire dépendant ?
    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.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Comment mettre un TProgressBar dans une boîte de dialogue
    Par DelphiCool dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 03/02/2013, 12h22
  2. Réponses: 4
    Dernier message: 08/11/2006, 08h56
  3. Réponses: 5
    Dernier message: 27/10/2006, 08h43
  4. comment inserer un enregistrement dans une table?
    Par floran30 dans le forum VB 6 et antérieur
    Réponses: 74
    Dernier message: 16/06/2006, 19h56
  5. Réponses: 2
    Dernier message: 08/02/2006, 21h22

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