Problème d'affichage sur formulaire en fonction des utilisateurs [Résolu]

Signaler
-
Messages postés
13842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021
-
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

Messages postés
13842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021
778
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?
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.
Messages postés
13842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021
778 > 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.
Messages postés
13842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021
778 >
Messages postés
13842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021

pour rappel, cela nous aiderait peut-être à t'aider, si tu partageais ton/tes fichiers, même avec les tables vides (sans données).
>
Messages postés
13842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021

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 ><'
Messages postés
13842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021
778 > 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.
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?
>
Messages postés
13842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021

J'ai fait la modification mais la case à cocher ne se coche toujours pas ...
Je ne comprends pas pourquoi il n'exécute pas cette partie Bout_Originaux = true
Messages postés
13842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021
778 > Amlie
c'est le if qui pose problème, ou l'assignation à la case à cocher?
le "OUI" est bien mis, lui?

ce serait peut-être plus simple si le champ "Originaux" était de type oui/non.
>
Messages postés
13842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021

C'est l'assignation à la case à cocher qui ne fonctionne pas

Un utilisateur est resté connecté à la base, je ne peux pas modifier le champs Originaux mais je le fais demain pour mettre OUI/NON.

En tout cas merci :)
> Amlie
Bonjour Yg_be,

Comme le problème d'assignation de la case à cocher perdurait. J'ai utilisé une solution de contournement.
Lorsque le champ Originaux est différent de vide alors je laisse apparaitre une étiquette par dessus ma case à cocher celle-ci se retrouve donc cacher. Cette solution fonctionne sur les postes utilisateurs.

Je te remercie pour ton aide et tes conseils, cela m'a bien aidé.
Messages postés
13842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021
778 > Amlie
parfait, peux-tu alors marquer la discussion comme résolue?
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.
Messages postés
13842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021
778
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
.
>
Messages postés
13842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021

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.
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.
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.
Messages postés
13842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021
778 > 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".
>
Messages postés
13842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021

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.
Messages postés
13842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021
778 > 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.
Messages postés
13842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021
778
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.