Problème d'affichage sur formulaire en fonction des utilisateurs
Résolu/Fermé
Amlie
-
31 déc. 2020 à 09:23
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 - 8 janv. 2021 à 10:55
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 - 8 janv. 2021 à 10:55
A voir également:
- Problème d'affichage sur formulaire en fonction des utilisateurs
- Fonction si et - Guide
- Formulaire de réclamation facebook - Guide
- Comment utiliser chromecast sur tv - Guide
- Affichage double ecran - Guide
- Fonction moyenne excel - Guide
5 réponses
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
Ambassadeur
1 550
31 déc. 2020 à 11:16
31 déc. 2020 à 11:16
bonjour,
pas vraiment d'idée.
as-tu bien
pas de
peut-être écrire plutôt
ces utilisateurs ont toujours le problème, et les autres jamais?
peux-tu partager ton fichier?
pas vraiment d'idée.
as-tu bien
option expliciten début de module?
pas de
on errordans 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?
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?
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?
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 550
>
Amlie
5 janv. 2021 à 13:49
5 janv. 2021 à 13:49
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.
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.
Amlie
>
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
5 janv. 2021 à 14:11
5 janv. 2021 à 14:11
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
Comment puis je vider ma table pour la joindre sans que les utilisateurs ne soient impactes ?
Je te remercie de ton retour
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 550
>
Amlie
5 janv. 2021 à 15:44
5 janv. 2021 à 15:44
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.
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.
Amlie
>
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
5 janv. 2021 à 19:05
5 janv. 2021 à 19:05
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
Ç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
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.
Sub pour enregistrer nouveau dossier ou modification
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.
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.
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 550
4 janv. 2021 à 10:17
4 janv. 2021 à 10:17
je ne vois pas d'anomalie dans ton code.
deux suggestions, toutefois:
pour vérifier si une valeur est "vraie":
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
deux suggestions, toutefois:
pour vérifier si une valeur est "vraie":
If Bout_Originaux <> 0 Thenou 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
.editet
.update, après, par exemple,
.FindFirst.
Amlie
>
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
5 janv. 2021 à 10:14
5 janv. 2021 à 10:14
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.
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.
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.
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.
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.
Bonne journée.
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 550
>
Tessel75
Modifié le 5 janv. 2021 à 13:50
Modifié le 5 janv. 2021 à 13:50
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".
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".
Tessel75
>
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
5 janv. 2021 à 15:04
5 janv. 2021 à 15:04
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.
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.
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 550
>
Tessel75
5 janv. 2021 à 16:12
5 janv. 2021 à 16:12
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
Ambassadeur
1 550
6 janv. 2021 à 10:50
6 janv. 2021 à 10:50
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.
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 moic'est un peu excessif. cela permettra peut-être de progresser.
31 déc. 2020 à 14:48
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.
31 déc. 2020 à 17:00
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.
5 janv. 2021 à 13:53
5 janv. 2021 à 16:13
Mes fichiers sont prêts mais je ne dois pas être douée. Je ne trouve pas comment les mettre en pièce jointe ><'
5 janv. 2021 à 16:23
il est nécessaire de publier tes fichiers sur Internet (cjoint.com, google drive, ...), et ensuite de partager ici les liens vers les fichiers.