@ Remug's Debug.Print ne produira pas d'erreur si le formulaire n'est pas ouvert.
La plupart des développeurs d'Access importent une fonction IsLoaded() dans leur base de données et l'utilisent. Le code dans ma version de celui-ci (qui peut ou ne peut pas être modifié à partir de la version MS originale) est la suivante:
Function IsLoaded(ByVal strFormName As String) As Boolean
' Returns True if the specified form is open in Form view or Datasheet view.
Const conObjStateClosed = 0
Const conDesignView = 0
If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then
If Forms(strFormName).CurrentView <> conDesignView Then
IsLoaded = True
End If
End If
End Function
Pour utiliser ce à partir d'Excel, vous pouvez réécrire ainsi:
Function IsLoaded(ByVal strFormName As String, objAccess As Object) As Boolean
' Returns True if the specified form is open in Form view or Datasheet view.
Const conObjStateClosed = 0
Const conDesignView = 0
Const acSysCmdGetObjectState = 10
Const acForm = 2
If objAccess.SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then
If objAccess.Forms(strFormName).CurrentView <> conDesignView Then
IsLoaded = True
End If
End If
End Function
(Je n'ai pas testé cela à partir d'Excel, mais vous avez l'idée)
Vous voudrez peut-être ajouter des exemples, plus de détails pour obtenir une meilleure réponse. –
Je ne vais pas mettre cela dans une réponse car elle ne répond pas vraiment à la question posée, mais cela sent comme une très mauvaise idée en devenir. Mon conseil serait de trouver une meilleure façon d'aborder tout ce que vous essayez de faire. Si vous donnez plus de détails, je vais essayer de vous conseiller sur une meilleure approche. – JohnFx