Bonjour,

Il est probable que ce sujet ait déjà été traité, mais comme je l'ai mentionné dans un autre post, je ne parviens pas à effectuer de recherche ciblée sur une sous-catégorie du forum (en l'occurrence VBA Access).

J'ai un formulaire principal F_PRINCIPAL dans lequel j'ai inséré un formulaire de navigation ("SousFormulaireNavigation") dans lequel mon formulaire F_SECONDAIRE est intégré. Je souhaite simplement me placer sur un nouvel enregistrement au chargement du formulaire principal.

Si j'ouvre F_SECONDAIRE seul, j'y arrive sans problème à l'aide d'une macro "AtteindreEnregistrement" et paramètre "Nouveau", mise sur l'évènement "Au chargement".

Maintenant pour faire la même chose, mais en ouvrant F_PRINCIPAL, contenant donc F_SECONDAIRE :
  • Méthode Macro :
    • je mets cette fois la macro "AtteindreEnregistrement" au chargement de F_PRINCIPAL mais cela n'a pas d'effet. Le formulaire affiche le premier enregistrement.
  • Avec du code VBA, je ne parviens à réaliser la même fonction
    • D'abord l'outil "Convertir les macros de formulaire" me renvoie une erreur opaque : "Il y a un un problème lors de l'ouverture de la macro [Macro incorporée]"
    • J'ai essayé le code suivant dans la fonction Form_Load() de F_PRINCIPAL, puis dans celle de F_SECONDAIRE :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      Private Sub Form_Load()
          DoCmd.GoToRecord acDataForm, "F_SECONDAIRE", acnewrecord
      End Sub
      --> Dans les deux cas, j'ai le message d'erreur "L'objet 'F_SECONDAIRE' n'est pas ouvert. Ce qui ne colle pas avec ce que j'avais compris de la description de l'ordre des évènements dans les formulaires et sous-formulaires, voir ici : https://support.microsoft.com/fr-fr/...86553682f9#bm3
    • Le formulaire de navigation ne dispose que des évènements Entrée et Sortie. Si je mets ce code sur l'évènement SousFormulaireNavigation_Enter(), même message d'erreur et de toute façon cet évènement ne correspond pas exactement à mon utilisation
    • Après quelques recherches, j'ai vu plusieurs fils de discussion qui utilisait le code suivant, avec [Champ_type] le premier contrôle de mon formulaire F_SECONDAIRE :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      Forms![F_PRINCIPAL]!SousFormulaireNavigation.Form.Recordset.AddNew
      Forms![F_PRINCIPAL]!SousFormulaireNavigation.Form![Champ_type].SetFocus
      --> effectivement on se place bien sur le nouvel enregistrement MAIS :
      • D'une part, la commande SetFocus n'a pas d'effet. Je dois cliquer sur le champ pour commencer la saisie
      • D'autre part, beaucoup plus gênant, si je saisis des données et passe à l'enregistrement suivant, mes données ne sont pas conservées. Je suppose qu'il manque donc des commandes supplémentaires, ou alors comme j'ai cru le comprendre cela vient du fait que ces commandes ne sont pas destinées à créer des enregistrements pour saisie utilisateur ?


Quelqu'un peut-il me donner des explications sur les échecs de ces différentes tentatives ?