[ACCESS] ouvrir 2 instance du meme formulaire

Salut a tous,
J'ai une base Access avec la table suivante :
matable
id      NumeroAuto
nom     String 50
prenom  String 50
idpere  Long

J'ai un formulaire fiche avec 4 case (id, nom, prenom, idpere) et un bouton (affichpere).
Je voudrais que le bouton ouvre une autre instance de fiche avec les donnees du pere.
Private Sub affichpere_Click()
    DoCmd.OpenForm "fiche", , , "id=" & idpere, , acDialog
End Sub

Malheureusement, ca ne marche pas... Aucun formulaire ne s'ouvre et aucune erreur n'est generee.
Pourtant, il est possible d'instancier l'objet formulaire :
Private Sub affichpere_Click()
    Dim mafiche As New Form_fiche
    mafiche.Visible = True
End Sub

Ce code fonctionne. En utilisant le debugage, on voit bien qu'une autre instance du formulaire est ouverte. Mais elle n'est pas persistante et l'objet disparait au moment du End Sub. J'ai essaye de lui donner le focus, de le rendre modal :
Private Sub affichpere_Click()
    Dim mafiche As New Form_fiche
    mafiche.Modal = True
    mafiche.Visible = True
    mafiche.SetFocus
End Sub

Ca ne marche pas mieux, l'objet est cree, affiche et detruit avec la fin de la procedure.
Auriez vous une autre idee ?
Merci d'avance
Santiago

--

Il y a 10 types de personnes dans le monde
Ceux qui comprennent le binaire et les autres.
Configuration: Windows XP
Firefox 2.0.0.14

3 réponses

  1. une piste:

    Private listForm_fiche As Collection

    Public Function Mac_EditReq()

    If Application.CurrentObjectType = 1 Then
    If listFrm_GetRequete Is Nothing Then Set listForm_fiche = New Collection
    Dim f As Form_fiche
    Set f = New Form_fiche
    f.Visible = True
    listForm_fiche .Add f
    End If

    End Function
    0
    1. j'avais oublié d'enlever mon code perso autour...

      le end sub provoque la perte de la fenetre car l'objet mafiche est détruit => le stocker en global

      Private listForm_fiche As Collection

      Public Function OuvrirFiche()

      If listFrm_GetRequete Is Nothing Then Set listForm_fiche = New Collection

      Dim mafiche As Form_fiche
      Set mafiche = New Form_fiche
      mafiche .Visible = True
      listForm_fiche.Add mafiche

      End Function

      inconvenient: par ex en debug, à la moindre modification 'globale' du code (ajout d'une variable gobale, fonction, etc..), on perd la collection (car access = code interpreté sans separation mode design/runtime). mais ds le cas d'un utilisation normale (simple execution), ca fonctionne
      0
      1. Super, merci loko.

        0