ACCESS / Fermer un formulaire à partir de l'objet

cs_deadisdead Messages postés 31 Date d'inscription jeudi 12 février 2004 Statut Membre Dernière intervention 30 septembre 2008 - 29 sept. 2008 à 10:57
cs_deadisdead Messages postés 31 Date d'inscription jeudi 12 février 2004 Statut Membre Dernière intervention 30 septembre 2008 - 30 sept. 2008 à 12:06
Bonjour à tous,

Mon problème est assez simple mais je n'ai pas trouvé encore de réponse à ce jour. Je développe actuellement une application sous Access avec laquelle je fais afficher plusieurs formulaires identiques (en passant par un tableau de formulaires). Le problème est qu'au moment de leur fermeture par le code, la fonction classique :

DoCmd.Close acForm, Me.name

devient complètement obsolète car il peut y avoir 3 formulaires ouverts portant le même nom et Access me ferme le premier... qui est rarement le bon. Mon souhait serait donc de pouvoir lancer une fermeture à partir de l'objet, du genre :

Unload Me 'comme en VB6
ou Me.Close()

mais rien de cela ne fonctionne... Si quelqu'un pouvait avoir une idée pour résoudre ce problème, je lui en serai très reconnaissant. Merci d'avance de votre aide :)

9 réponses

68manu Messages postés 43 Date d'inscription samedi 20 septembre 2008 Statut Membre Dernière intervention 1 octobre 2008
29 sept. 2008 à 11:24
_____________________
No problems, only soluces
0
cs_deadisdead Messages postés 31 Date d'inscription jeudi 12 février 2004 Statut Membre Dernière intervention 30 septembre 2008
29 sept. 2008 à 11:34
Il semblerait qu'il y ait eu un problème lors de l'enregistrement de ton post manu...
0
68manu Messages postés 43 Date d'inscription samedi 20 septembre 2008 Statut Membre Dernière intervention 1 octobre 2008
29 sept. 2008 à 12:53
bonjour,
En effet,

je te proposais de faire la chose suivante avant de lancer ton DoCmd.Close :

DoCmd.SelectObject acForm, Me.Name, False

' Cette commande selectionne un formulaire deja ouvert,
' Si le formulaire n'est pas ouvert, mettre false a true

Cf Access Help !

A+
Manu
_____________________
No problems, only soluces
0
cs_deadisdead Messages postés 31 Date d'inscription jeudi 12 février 2004 Statut Membre Dernière intervention 30 septembre 2008
29 sept. 2008 à 12:59
Merci de t'intéresser à mon problème Manu !
Sur tes conseils, j'ai essayé ta méthode :

DoCmd.SelectObject acForm, Me.Name, False

Le résultat ne change malheureusement rien : Access me ferme toujours le premier formulaire ouvert... Vu que mes formulaires ont tous le même nom (ce sont des instances d'un même formulaire), je pense qu'on ne pourra pas faire grand chose en passant par le nom (Me.Name),  c'est pour ça que je cherchais une fonction directement à partir du formulaire (du type Me.Close)...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
68manu Messages postés 43 Date d'inscription samedi 20 septembre 2008 Statut Membre Dernière intervention 1 octobre 2008
29 sept. 2008 à 14:20
Ouii je comprends bien ton probleme, j'en ai un similaire en fait sur Vb.net.

Par contre lorsque tu fais tes instances de formulaire, tu peux changer le nom de celui-ci. Ca devrait etre plus pratique, tu ne crois pas ?

Cf :

Dans ce cas, tu pourrias utiliser le Me.Close, ou son equivalent en appelant:

Form("Nomduformulaire").Close (ou Unload, ou encore Deactivate), ces commandes existent

Ca dois marcher.
Comment fais tu les instances de tes formulaires ?

Manu

_____________________
No problems, only soluces
0
cs_deadisdead Messages postés 31 Date d'inscription jeudi 12 février 2004 Statut Membre Dernière intervention 30 septembre 2008
29 sept. 2008 à 14:44
Tiens oui je n'ai pas essayé de changer le nom de mes formulaires à la création. Si Access l'autorise, ça ne devrait pas trop poser de problème !

Pour créer mes instances, je fais simplement un tableau de formulaires du genre :

Dim tab_form() As Form_Clients

Puis je crée selon les besoins :

nb_form = UBound(frmClients) + 1
ReDim Preserve frmClients(0 To nb_form)
Set frmClients(nb_form) = New Form_Clients

Il suffirait alors de renommer le formulaire créé et le tour serait joué ! Je vais essayer de suite !
0
cs_deadisdead Messages postés 31 Date d'inscription jeudi 12 février 2004 Statut Membre Dernière intervention 30 septembre 2008
29 sept. 2008 à 14:53
Bon il semblerait qu'il y ait encore un problème : je n'arrive pas à changer le nom de mon formulaire. En faisant ceci :

frmClients(nb_form).Name = frmClients(nb_form).Name & nb_form

ou nb_form est toujours unique, Access ne me dit que cette propriété est en lecture seule... Donc retour au point de départ
0
68manu Messages postés 43 Date d'inscription samedi 20 septembre 2008 Statut Membre Dernière intervention 1 octobre 2008
29 sept. 2008 à 18:59
Il ne faut pas passer par la propriete de la form mais plutot par une procedure qui te permet de changer son nom

Allez ! soyons fous...

DoCmd.Rename "Ancien nom", frmClients,"Nouveau nom"

Bonne chance

_____________________
No problems, only soluces
0
cs_deadisdead Messages postés 31 Date d'inscription jeudi 12 février 2004 Statut Membre Dernière intervention 30 septembre 2008
30 sept. 2008 à 12:06
Encore une fois c'est l'échec, je désespère...
En fait, pour renommer un formulaire, il ne faut pas qu'il soit actif. Hors la création d'une instance de formulaire active directement le formulaire sans que puisse le renommer. Alors il y aurait bien une solution : le masquer avec visible mais au bout d'un moment, la mémoire va en patir...
0
Rejoignez-nous