Désolé de répondre si tardivement, mais bon j'espère pouvoir t'aider. Cela ressemble en effet assez à un bug que j'ai déjà rencontré sur Access.
Déjà est tu sûr de ne pas avoir un Etat ayant le même nom qu'un autre objet de ta base. En théorie ça ne devrait pas poser de problème, mais j'ai déjà remarqué que parfoit cela arrivé.
tu peut essayer le code ci-dessous qui recherche au préalable le rapport susnomé
Dim obj As AccessObject, dbs As Object
Set dbs = Application.CurrentProject
' Recherche l'objet Access dans la collection AllReports de CurrentProject.
For Each obj In dbs.AllReports
If obj.Name = "Etat_nom" Then
DoCmd.OpenReport obj.Name, acViewPreview
End If
Next obj
----------------------------------
Mais j'y pense tout à coup en écrivant, en fait ton problème vient peut être d'un champ de ton rapport qui fait peut appel à une référence extérieur. Je m'explique, tu as peut être dans ton rapport soit un champ, ou dans la requête SQL ou le code une référence à un champ de formulaire. Souvent utilisé pour filtrer l'ouverture du rapport sur un enregistrement précis. Si au moment de l'ouverture du rapport, ton formulaire est fermé : plus de lien possible donc erreur.
En général lorsque je fais ce genre de lien je fais un contrôle à l'ouverture pour voir si le formulaire en question est bien ouvert est sinon j'informe l'utilisateur qu'il ne peut ouvrir ce rapport sans le formulaire en question
voila, tien moi au courrant j'aurais peut être d'autres idées