Problème d'affichage sur formulaire en fonction des utilisateurs

Résolu
Amlie -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je me permets de tenter ma chance pour trouver une solution à mon problème.

Je travaille actuellement sur une base fractionnée Access 2010, avec un formulaire permettant la saisie de nouveaux enregistrements ou la modification de ceux existants.

Le formulaire est utilisé par plusieurs utilisateurs. Je précise que ces utilisateurs possèdent pas seulement accessviewer.

Mon formulaire marche très bien, il enregistre et modifie parfaitement les enregistrements. Toutefois, je rencontre un problème d'affichage sur une case à cocher et celui-ci n'apparait que sur certains postes utilisateurs.

La case à cocher permet de renseigner un champs dans ma table. Une fois l'enregistrement effectué, j'indique dans mon code que l'ensemble du formulaire dont la case à cocher doit être vide. Le formulaire se vide sauf la case à cocher qui reste sélectionnée, encore une fois que pour certains utilisateurs.

Avez-vous une idée de la cause de cette différence ? Un profil utilisateur différent ? Un paramétrage autre ?

Je joins copie de mon code pour vide mon formulaire et des paramètres de la case à cocher.

TXT_Num_Dossier = ""
TXT_Date_Reception = ""
TXT_Type_Dossier = ""
TXT_Etat_CtrlDoc = ""
TXT_Date_CtrlDoc = ""
TXT_Etat_Decach = ""
TXT_Date_Decach = ""
TXT_Etat_Cession = ""
TXT_Date_Cession = ""
TXT_Date_Cloture = ""
TXT_SemCloture = ""
Bout_Originaux = False

Paramètre case à cocher :
Source contrôle rien
Triple état NON
Valeur par défaut FAUX
Valide si rien
Message si erreur rien
Activé OUI
Vérrouillé NON

J'espère avoir été claire et vous remercie de votre aide.

Amélie

Configuration: Windows / Internet Explorer 11.0

5 réponses

Résumé de la discussion

Dans une base Access 2010 partagée, un formulaire de saisie et de modification comporte une case à cocher liée à un champ de la table, qui reste cochée sur certains postes après enregistrement. Les réponses suggèrent d'évaluer la valeur booléenne avec If Bout_Originaux Then ou If Bout_Originaux <> 0, et d'envisager une mise à jour via un recordset (.Edit/.Update) après FindFirst. Des solutions de contournement, comme masquer une étiquette au-dessus de la case lorsque Originaux n'est pas vide, fonctionnent sur les postes clients, mais le problème réapparaît dans d'autres cas. Des échanges évoquent aussi des tests sur les valeurs "-1" pour cocher, et des mises à jour de la variable Bout_Originaux ou des vérifications de lecture du champ Originaux.

Bobot (l'IA à votre service)
  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    pas vraiment d'idée.
    as-tu bien
    option explicit
    en début de module?
    pas de
    on error
    dans le code?
    peut-être écrire plutôt
    Me.Bout_Originaux = False
    ?
    ces utilisateurs ont toujours le problème, et les autres jamais?
    peux-tu partager ton fichier?
    0
    1. Amlie
       
      Bonjour,

      Tout d’abord merci pour ta réponse.

      J’ai bien option explicit d’activé, pas de on error.
      J’ai essayé avec Me. Mais le problème est toujours là.
      Ce problème apparaît toujours sur les mêmes utilisateurs et les autres n’ont aucun problème.
      Je ne peux malheureusement pas partager mon fichier les données sont confidentielles..
      étant donné que le problème ne survient que sur certains utilisateurs es ce que le problème peut venir de mon code ? Alors que les autres ca fonctionne ?
      Je pensais à un problème de parametrage des postes mais je ne peux pas compter sur le service informatique pour m’aider.
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Amlie
         
        sans y croire:
        Me.Bout_Originaux.value = False

        ce ne sont bien sûr pas les données qui nous intéressent, simplement un fichier qui permet d'observer le problème, et de voir l'ensemble de ton code.
        tu supposes que c'est un problème d'ordi. c'est possible. cependant, je suis perplexe, je m'attendrais à voir un message d'erreur en cas de soucis.
        il se pourrait aussi que les utilisateurs, utilisant des données différentes, ou se comportant différemment, font que quelque chose coche la case à cocher ensuite. la case à coché est-elle liée à un champ d'un enregistrement?

        si j'étais à ta place, j'essaierais de déterminer si la ligne de code qui change la case à cocher est exécutée.
        par exemple, en ayant une table dans laquelle ton code enregistre ce qu'il fait.
        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        pour rappel, cela nous aiderait peut-être à t'aider, si tu partageais ton/tes fichiers, même avec les tables vides (sans données).
        0
      3. Amlie > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Yg_be,
        Mes fichiers sont prêts mais je ne dois pas être douée. Je ne trouve pas comment les mettre en pièce jointe ><'
        0
      4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Amlie
         
        rassure-toi, tes dons ne sont pas en cause, il est impossible de les mettre en pièce jointe.
        il est nécessaire de publier tes fichiers sur Internet (cjoint.com, google drive, ...), et ensuite de partager ici les liens vers les fichiers.
        0
  2. Tessel75
     
    Bonjour,
    La façon dont tu expliques le processus d'enregistrement n'est pas très claire. A quoi sert ta case à cocher? Ensuite, je ne comprends pas bien pourquoi éprouves-tu le besoin de "vider ton formulaire ? Pourquoi ne pas plus simplement passer à "l'enregistrement suivant ou nouveau, soit par le biais des icônes prévues par Access, soit par un bouton sur le formulaire lui-même avec un bout de code sous-jacent qui appelle l'enregistrement suivant (ou nouveau)? Cela paraitrait plus simple.
    Mais reste la question première; à quoi sert ta case à cocher? Et est-elle liée à un champ dans la table? Et si "oui, quel est le comportement de ce champ, càd, qu'elles ses valeurs et paramètres par défaut?
    0
    1. Amlie
       
      Bonjour Tessel75,

      Merci de ta réponse, c’est vrai que je connais pas ces fonctionnalités et je me suis peut être compliqué la tâche. Es ce que je peux modifier mon formulaire existant et utiliser ces fonctionnalités où il faut que j’en créer un nouveau ?
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Amlie
       
      Amélie, je ne suis pas convaincu que tu te sois compliqué la tâche.
      Tu utilises deux fonctions de Access, tu l'utilises comme base de données, et comme interface utilisateur.
      Tu programmes en VBA pour développer ton application, en utilisant ces deux fonctions de Access.
      C'est la façon classique de développer une application, et tu pourras appliquer cette méthode dans beaucoup d'environnements, hors de Access.

      Tessel75 te suggère d'utiliser Access différemment, avec pas, ou peu de code VBA, en laissant Access "lier" les formulaires aux données, et en laissant Access gérer les actions derrière les boutons.
      Cela a des avantages et des inconvénients.
      C'est, en tous cas, une autre logique à comprendre.
      0
    3. Amlie > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Merci pour ta réponse, la solution de Tessel75 m’oblige à modifier l’ensemble du fonctionne de mon formulaire je n’y arrive pas.
      Comment puis je vider ma table pour la joindre sans que les utilisateurs ne soient impactes ?
      Je te remercie de ton retour
      0
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Amlie
       
      Amélie,
      pour vider ta table pour la joindre sans que les utilisateurs ne soient impactes,
      le plus simple me semble de copier les fichiers existants (une base fractionnée, donc je suppose plusieurs fichiers) dans un dossier séparé.
      ensuite, ouvrir, à partir de ce dossier, les fichiers contenant des tables, et y vider ces tables. attention ne pas utiliser les liens pour vider les tables.
      0
    5. Amlie > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Yg_be,
      Ça y est j'ai enfin réussi. j'espère que tu réussiras à les lire et que pourras m'aider.

      https://www.cjoint.com/c/KAfscPQBw2m

      https://www.cjoint.com/c/KAfse6qzlom

      Je te remercie
      0
  3. Amlie
     
    Bonjour yg_be, bonjour Tessel75,

    Je tiens à préciser que je suis débutante en access et que j’ai créé le code toute seule.

    Mon formulaire sert soit à ajouter un nouvel enregistrement ou à en modifier un. Je vous joins une partie de mon code (je m’excuse si c’est ça fait mal aux yeux) :
    Sub pour rechercher si enregistrement déjà présent.
     Private Sub TXT_Num_Dossier_AfterUpdate()
     
    'Recherche numéro dossier pour savoir si déja présent dans la base
     
    Dim dbs As DAO.Database
    Dim Rst1 As DAO.Recordset
     
    Set dbs = CurrentDb
    Set Rst1 = dbs.OpenRecordset("Suivi", dbOpenDynaset)
     
    Num_Dossier = TXT_Num_Dossier
    Rst1.FindFirst "NumeroDossier =" & Chr(34) & Num_Dossier & Chr(34)
     
    If Rst1.NoMatch Then
    Dossier = "Nouveau"
    TXT_Date_Reception = Date
    Else
    Dossier = "Present"
     
    TXT_Date_Reception = Rst1("DateReception")
    TXT_Type_Dossier = Rst1("TypeDossier")
    TXT_Etat_CtrlDoc = Rst1("ETAT_CONTROLE")
    TXT_Date_CtrlDoc = Rst1("DATE_ETAT_CONTROLE")
    TXT_Etat_Decach = Rst1("ETAT_DECACH")
    TXT_Date_Decach = Rst1("DATE_ETAT_DECACH")
    TXT_Etat_Cession = Rst1("ETAT_CESSION")
    TXT_Date_Cession = Rst1("DATE_ETAT_CESSION")
    TXT_Date_Cloture = Rst1("DATE_CLOTURE")
    If Rst1("Originaux") = "1" Then
        Bout_Originaux = "-1"
        Originaux_Recepetionnes = "OUI"
        Else
        Bout_Originaux = "0"
        Originaux_Recepetionnes = "NON"
        End If
    End If
     
    End Sub 


    Sub pour enregistrer nouveau dossier ou modification
     Private Sub BOUT_Enr_Click()

    Dim rst As DAO.Recordset
    Dim rstI As Recordset
    Dim rst2I As Recordset
    Dim USER As String
    Dim SemCloture As Byte

    USER = Environ("username")

    'Contrôle si Type dossier est bien renseigné
    If TXT_Type_Dossier = "" Then
    MsgBox ("Merci de choisir le type de dossier.")
    Exit Sub
    End If

    'Enregistrement si nouveau dossier
    If Dossier = "Nouveau" Then

    If TXT_Type_Dossier = "AUTRE" Then
    Intervention = "RECEPTION"
    Else
    Intervention = "MAJ"
    End If

    'Enregistrement nouveau dossier dans table suivi
    Set rst = CurrentDb.OpenRecordset("Suivi", dbOpenDynaset)

    rst.AddNew

    rst("NumeroDossier") = TXT_Num_Dossier
    rst("DateReception") = Date
    rst("TypeDossier") = TXT_Type_Dossier
    rst("ETAT_CONTROLE") = TXT_Etat_CtrlDoc
    If TXT_Date_CtrlDoc <> "" Then
    rst("DATE_ETAT_CONTROLE") = TXT_Date_CtrlDoc
    End If
    rst("ETAT_DECACH") = TXT_Etat_Decach
    If TXT_Date_Decach <> "" Then
    rst("DATE_ETAT_DECACH") = TXT_Date_Decach
    End If
    rst("ETAT_CESSION") = TXT_Etat_Cession
    If TXT_Date_Cession <> "" Then
    rst("DATE_ETAT_CESSION") = TXT_Date_Cession
    End If
    If TXT_Date_Cloture <> "" Then
    rst("DATE_CLOTURE") = TXT_Date_Cloture
    End If
    rst("Sem_Arrivée") = Format(TXT_Date_Reception, "ww", 2, 1)
    rst("Mois_arrivée") = Month(TXT_Date_Reception)
    rst("Année_arrivée") = Year(TXT_Date_Reception)

    If TXT_Date_Cloture <> "" Then
    rst("Sem_cloture") = Format(TXT_Date_Cloture, "ww", 2, 1)
    rst("Mois_cloture") = Month(TXT_Date_Cloture)
    rst("Année_cloture") = Year(TXT_Date_Cloture)
    End If

    If Bout_Originaux = "-1" Then
    rst("Originaux") = "1"
    End If

    rst.Update
    rst.Close
    Set rst = Nothing

    'Enregistrement interventions dans table interventions
    Set rstI = CurrentDb.OpenRecordset("Interventions", dbOpenDynaset)

    rstI.AddNew

    rstI("DATE") = Date
    rstI("HEURE") = Time
    rstI("USER") = USER
    rstI("NUMERO_DOSSIER") = TXT_Num_Dossier
    rstI("TYPE_DOSSIER") = TXT_Type_Dossier
    rstI("TYPE_INTERVENTION") = Intervention
    rstI("ETAT_CTRL_DOC") = TXT_Etat_CtrlDoc
    rstI("ETAT_DECACH") = TXT_Etat_Decach
    rstI("ETAT_CESSION") = TXT_Etat_Cession
    rstI("SEM") = Format(Date, "ww", 2, 1)
    rstI("MOIS") = Month(Date)
    rstI("ANNEE") = Year(Date)

    rstI.Update
    rstI.Close
    Set rstI = Nothing

    MsgBox " Enregistrement effectué !"

    End If

    'Enregistrement MAJ quand dossier déja présent
    If Dossier = "Present" Then

    If Originaux_Recepetionnes = "NON" Then
    Intervention = "MAJ LOG"
    Else
    If TXT_Date_Cloture <> "" Then
    Intervention = "CLOTURE"
    TXT_SemCloture = Format(TXT_Date_Cloture, "ww", 2, 1)
    Else
    Intervention = "MAJ"
    End If
    End If

    'enregistrement mise à jour dossier dans table suivi
    DoCmd.SetWarnings False
    DoCmd.RunSQL "UPDATE Suivi Set Suivi.TypeDossier = TXT_Type_Dossier WHERE NumeroDossier = TXT_Num_Dossier"
    DoCmd.RunSQL "UPDATE Suivi Set Suivi.ETAT_CONTROLE = TXT_Etat_CtrlDoc WHERE NumeroDossier = TXT_Num_Dossier"
    DoCmd.RunSQL "UPDATE Suivi Set Suivi.DATE_ETAT_CONTROLE = TXT_Date_CtrlDoc WHERE NumeroDossier = TXT_Num_Dossier"
    DoCmd.RunSQL "UPDATE Suivi Set Suivi.ETAT_DECACH = TXT_Etat_Decach WHERE NumeroDossier = TXT_Num_Dossier"
    DoCmd.RunSQL "UPDATE Suivi Set Suivi.DATE_ETAT_DECACH = TXT_Date_Decach WHERE NumeroDossier = TXT_Num_Dossier"
    DoCmd.RunSQL "UPDATE Suivi Set Suivi.ETAT_CESSION = TXT_Etat_Cession WHERE NumeroDossier = TXT_Num_Dossier"
    DoCmd.RunSQL "UPDATE Suivi Set Suivi.DATE_ETAT_CESSION = TXT_Date_Cession WHERE NumeroDossier = TXT_Num_Dossier"
    DoCmd.RunSQL "UPDATE Suivi Set Suivi.DATE_CLOTURE = TXT_Date_Cloture WHERE NumeroDossier = TXT_Num_Dossier"
    DoCmd.RunSQL "UPDATE Suivi Set Suivi.Sem_Cloture = TXT_SemCloture WHERE NumeroDossier = TXT_Num_Dossier"
    DoCmd.RunSQL "UPDATE Suivi Set Suivi.Mois_Cloture = Month(TXT_Date_Cloture) WHERE NumeroDossier = TXT_Num_Dossier"
    DoCmd.RunSQL "UPDATE Suivi Set Suivi.Année_Cloture = Year(TXT_Date_Cloture) WHERE NumeroDossier = TXT_Num_Dossier"
    If Bout_Originaux = "-1" Then
    DoCmd.RunSQL "UPDATE Suivi Set Suivi.Originaux = 1 WHERE NumeroDossier = TXT_Num_Dossier"
    End If
    DoCmd.SetWarnings True

    'Enregistrement interventions dans table interventions
    Set rst2I = CurrentDb.OpenRecordset("Interventions", dbOpenDynaset)

    rst2I.AddNew

    rst2I("DATE") = Date
    rst2I("HEURE") = Time
    rst2I("USER") = USER
    rst2I("NUMERO_DOSSIER") = TXT_Num_Dossier
    rst2I("TYPE_DOSSIER") = TXT_Type_Dossier
    rst2I("TYPE_INTERVENTION") = Intervention
    rst2I("ETAT_CTRL_DOC") = TXT_Etat_CtrlDoc
    rst2I("ETAT_DECACH") = TXT_Etat_Decach
    rst2I("ETAT_CESSION") = TXT_Etat_Cession
    rst2I("SEM") = Format(Date, "ww", 2, 1)
    rst2I("MOIS") = Month(Date)
    rst2I("ANNEE") = Year(Date)

    rst2I.Update
    rst2I.Close
    Set rst2I = Nothing

    MsgBox " Enregistrement effectué !"

    End If

    TXT_Num_Dossier = ""
    TXT_Date_Reception = ""
    TXT_Type_Dossier = ""
    TXT_Etat_CtrlDoc = ""
    TXT_Date_CtrlDoc = ""
    TXT_Etat_Decach = ""
    TXT_Date_Decach = ""
    TXT_Etat_Cession = ""
    TXT_Date_Cession = ""
    TXT_Date_Cloture = ""
    TXT_SemCloture = ""
    'Check_Date.Value = "0"
    'Bout_Originaux.Value = "0"
    'Bout_Originaux = "0"
    'MsgBox Bout_Originaux.Value
    'Bout_Originaux.Value = False
    Me.Bout_Originaux = False
    'MsgBox Bout_Originaux.Value

    End Sub


    Utilisation : Le formulaire s’ouvre vide, L’utilisateur entre une référence de dossier, cela effectue une recherche pour voir si le dossier est déjà présent dans la base ou non. Si il est déjà présent cela rempli l’ensemble du formulaire avec les informations présentes dans la base, sinon c’est à l’utilisateur de renseigner. Ils doivent ensuite cliquer sur un bouton enregistrer pour ajouter un nouvel enregistrement ou pour modifier un déjà présent. Après avoir cliquer sur ce bouton je voulais que le formulaire revienne à vide pour un nouveau dossier. L’utilisateur fini toujours l’ajout ou la modification par le bouton enregistrer.

    J’ai testé à l’aide d’une msgbox de voir quelle valeur était attribuée à la case à cocher après mon code sur les postes des utilisateurs et elle apparaît à 0 ou faux en fonction des codes que j’avais testé.

    La case à cocher sert à alimenter un champs dans la base Valeur 1 ou vide. L’alimentation se fait correctement.
    Je souhaite vider la case à cocher car si l’utilisaTeur rentre un nouveau dossier, la case reste cocher et alimente les champs à tort.
    Peut être qu’effectivement il y a un autre moyen et je suis preneuse.

    J’espère avoir été le Plus claire possible en tout cas je vous remercie pour votre aide.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      je ne vois pas d'anomalie dans ton code.
      deux suggestions, toutefois:
      pour vérifier si une valeur est "vraie":
      If Bout_Originaux <> 0 Then
      ou même
      If Bout_Originaux Then

      pour faire les mises à jour dans une table, tu peux aussi le faire via le record set, au lieu de le faire par commande SQL. cela se fait en utilisant
      .edit
      et
      .update
      , après, par exemple,
      .FindFirst
      .
      0
      1. Amlie > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Bonjour yg_be,

        Merci pour ta réponse. Cela suppose alors que le problème ne vient pas de mon code. Je vais essayé la proposition de Tessel75 Voir si j’ai le même soucis. Ça me permettra de constater si c’est un problème qui n’apparaît qu’en fonction des utilisateurs.
        0
  4. Tessel75
     
    Bonjour,
    Je me permets d'ajouter mon grain de sel. D'abord, tu dis que tu es débutante; alors sache que si je suis loin d'être débutant sur Access, je suis un parfait autodidacte en matière de bases de données et plus particulièrement sur Access. Cela dit, je suis toujours impressionné quand je vois des personnes comme toi nous aligner des lignes et des lignes de codes, ce dont je serais bien incapable, au moins sous cette forme-là.
    Cela étant dit, il me semble que que tu n'utilises pas les facilités qu'offre Access et qui rendrait tes procédures bien plus légères.
    En 1er, tu dois savoir que la fermeture d'un formulaire, ou le passage à un nouvel enregistrement, enregistre automatiquement les données entrées dans ton formulaire. Il n'y a donc rien à faire à la fin d'un enregistrement, juste fermer le formulaire ou appeler "Suivant", ce qui peut se faire soit par la flèche de la barre d'outils ou bien par un bouton ad hoc. Si j'ai compris qqch à ton code, ça devrait déjà l'alléger un peu.
    Après, pour vérifier si un dossier n'existe pas déjà, il me semble que tu pourrais créer une boite de dialogue qqcq où tu pourrais vérifier qu'il n'existe pas de dossier pour cette identité, avec une procédure If ... Then ... . Si l'identité est déjà répertoriée, on ouvre le dossier et on complète, si elle ne l'est pas, on ouvre un nouvel enregistrement, on entre les données à entrer. A la fin, en passant à l'enregistrement suivant, la boite de dialogue s'ouvre, on vérifie que l'identité est nouvelle; et on recommence.
    Là, ce n'est pas une question de code, je le laisse à Yg_be, qui semble bien plus compétent, mais simplement d'utiliser au mieux ce que fait déjà Access, sans qu'il y ait besoin de code, de définitions interminables de paramètres et de renseignements d'inconnues, ou je ne sais quoi.
    En espérant avoir pu t'aider un peu.
    Bonne soirée.
    0
    1. Tessel75
       
      Pour compléter la réponse ci-dessus, tu dois aussi savoir que quand tu fais "Enregistrer" , il n'enregistre pas les données entrées, ça c'est fait à la fermeture, mais tu enregistres la forme, càd la mise en forme du formulaire. C'est à dire que quand tu demandes à l'utilisateur de cliquer sur "Enregistrer", il enregistre autant de fois la mise en forme en plus des données saisies. Ce qui est parfaitement inutile, voire stupide. Passer à "suivant" est largement suffisant.
      Bonne journée.
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Tessel75
         
        le bouton "enregistrer" exécute simplement le code VBA associé. ce code crée ou modifie des données dans les tables concernées.
        il n'y a aucun enregistrement de la mise en forme du formulaire.
        rien n'indique, par ailleurs, qu'il y aurait un bouton "suivant".
        0
      2. Tessel75 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Désolé, mais Non, pas du tout.
        1°) Le bouton "Suivant" dont je parle est un bouton à créer; je n'ai jamais dit qu'il existait de construction dans Access, sinon avec la flèche "Suivant" qui se trouve sur le ruban ou qu'on peut installer sur la barre d'outils d'accès rapide.
        2°) Quant au bouton qui exécuterait le code, de quel code parles-tu? Et de quel bouton "Enregistrer" parles-tu?
        Moi, quand je parle de bouton "Enregistrer", je parle du bouton correspondant à la petite disquette.
        Quant à dire qu'il n'existe aucun enregistrement de la mise en forme, ce n'est pas exact; tous les ordres "Enregistrer", ou "Save", enregistrent l'objet construit, (table, requête, formulaire, état, etc) mais n'agit aucunement sur les données elles-mêmes. Pour s'en convaincre, il suffit d'ouvrir une table quelconque, d'y entrer quelques données, n'importe lesquelles, et de cliquer sur "suivant" pour voir Access passer à l'enregistrement suivant et l'enregistrer sans qu'on ait fait aucune autre manœuvre
        C'est ce que je voulais dire dans mon intervention précédente, que la commande "Enregistrer" ne sert à rien, il suffit de commander "Suivant". la commande "Enregistrer" ne sert qu'au moment où on construit la base. La commande "Enregistrer" ne sert qu'à enregistrer les objets de Access au moment de leur construction, mais est totalement inutile lors de l'utilisation normale quotidienne.
        C'est toute la différence, et l'avantage des bases de données en général et de Access en particulier, avec des tableaux comme Excel par exemple, où si on n'a pas enregistré son travail il est perdu quand il se produit une fermeture inopinée. Avec Access, seul le dernier enregistrement est perdu.
        Pour ce qui est de la question d'Amélie, c'est ce que je voulais lui dire: pas la peine de s'embêter avec des procédures "Enregistrer" parce qu'elles s'exécutent automatiquement quand on change d'enregistrement.
        0
      3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Tessel75
         
        Tessel75,
        Mon contexte, c'est le contexte de cette discussion, c'est la base Access d'Amélie, avec son code, son formulaire, et le bouton "enregistrer" dans son formulaire.

        Ce que tu expliques ne s'applique pas, ou que très partiellement, à ce contexte. Parce qu'Amélie a choisi d'utiliser Access autrement que tu ne l'utilises.
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    le code fait beaucoup de manipulations de Bout_Originaux.
    es-tu certaine que c'est le code après enregistrement qui ne se comporte pas bien?

    tu pourrais utiliser une autre technique pour vider le formulaire: le fermer et le rouvrir.
    Dim moi As String
    moi = Me.Name
    DoCmd.Close
    DoCmd.OpenForm moi
    c'est un peu excessif. cela permettra peut-être de progresser.
    0