Form.hide

Résolu
petiflamand Messages postés 675 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 26 mai 2013 - 5 août 2006 à 21:06
Crash Ov Messages postés 11 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 7 juillet 2009 - 28 mai 2009 à 23:34
Bonjour, je voulais savoir  si a la place de form.hide il y a pas autre chose pour etre certain que la page est bien fermer au lieu de cacher.

et je voudrais savoir aussi comment faire pour que le programme soit fermer completement toute les form meme si on click sur la croix en haut a droite.
Merci

8 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
5 août 2006 à 22:02
Plutôt que Form1.Hide, tu peux faire

Unload Me ou Unload Form1


Pour être certain que toutes les Forms sont bien fermées


Dans l'événement Unload de la Form principale, disons:

Dim Frm As Form

For each Frm in Forms

Unload frm

Next

MPi
3
diablamanshadow Messages postés 419 Date d'inscription lundi 30 août 2004 Statut Membre Dernière intervention 28 janvier 2008
5 août 2006 à 22:47
unload decharge la frm mais sa reste dans les process si tu veux bien fermer ton prog dans l'evenement unload tu met end sinon si tu veux fermer une de tes form seulement tu lui met unload ^^
3
petiflamand Messages postés 675 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 26 mai 2013 1
5 août 2006 à 22:49
Merci bien
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
6 août 2006 à 18:44
diablamanshadow, je ne suis pas d'accord avec toi.

End ne devrait jamais être utilisé. Ça termine le programme mais ça ne
tue pas les process ouverts par le programme. Si on est obligé
d'utiliser END, c'est que le programme n'est pas bien codé.


Pour être certain que les objets sont fermés on peut ajouter

Set Objet = Nothing

Ça peut être le cas dans l'exemple que j'ai donné.
Dim Frm As Form

For each Frm in Forms

Unload frm

Set frm = Nothing

Next

MPi
0

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

Posez votre question
diablamanshadow Messages postés 419 Date d'inscription lundi 30 août 2004 Statut Membre Dernière intervention 28 janvier 2008
6 août 2006 à 18:48
mpi je ne suis pas trop d'accord avec toi fais un new projet et sur la form1 mais lui un unload et tu compile tu test et tu verra que ton prog est toujours dans les process ^^
ton code sert simplement a etre sur que toutes les form sont bien dechargee ainsi que ses objet alors que le end est plus simple et plus radicale et au moins tu es sur que tout est fermer :-)

tu dit qu'un prog devant utiliser le end est mal coder mais regarde y a bcp de code l'utilisant sur ce site plutot que ton unload l'unload que tu utilise est pris pour decharger les form secondaire et non terminer le programme

bien a vous
Diablaman
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
7 août 2006 à 11:59
Salut Diablamanshadow,

voici 2 articles que j'ai trouvés qui explique un peu quoique ce ne soit pas très clair...

Je t'ai aussi mis un exemple simple à recréer plus bas.


http://www.mvps.org/vbvision/visual_basic_tips.htm
The VB End statement 
The VB End statement should not be used because it doesn't allow any
"clean up" code to run in your application.  The correct
method for ending an application is to unload all forms, disabling any active
timer controls before unloading the parent form as well as setting any
references to forms or classes equal to the VB keyword Nothing.  Once
all object references are destroyed, your application should end on it's own.


http://msdn.microsoft.com/library/fre/default.asp?url= /library/FRE/vblr7/html/vastmend.asp

Si votre application a certains formulaires ouverts, vous devez les fermer avant d'exécuter End .


Voici l'exemple.

Une Form, un bouton et une référence à Excel... et un "classeur1.xls" dans C:\

Si tu démarres et que tu cliques le bouton, il restera un
processus  Excel toujours ouvert. Si tu refais une autre fois, il
y aura un 2e processus Excel, etc...

Bien sûr, VB s'est bien terminé mais pour le reste ? et qu'est-ce qui
prouve que tout se soit bien terminé sous VB ? Est-ce que vraiment
toutes les adresses mémoires sont bien libérées ?


Option Explicit


Private xlApp As Excel.Application

Private xlBook As Excel.Workbook

Private xlSheet As Excel.Worksheet


Private Sub Command1_Click()

    End

End Sub


Private Sub Form_Load()

    Set xlApp = New Excel.Application


    Set xlBook = xlApp.Workbooks.Open("C:\Classeur1.xls")

    Set xlSheet = xlBook.Sheets("Feuil1")

End Sub

MPi
0
diablamanshadow Messages postés 419 Date d'inscription lundi 30 août 2004 Statut Membre Dernière intervention 28 janvier 2008
7 août 2006 à 17:09
quand tu utilise des ressources externe oui mais cependant l petitflamand a pas stipuler ca si ses externe ses sur faut le fermer sinon l'app associer reste ouverte mais si tu n'utilise rien d'externe a ton logiciel je reste sur le fait que end le ferme mieux que unload ^^
0
Crash Ov Messages postés 11 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 7 juillet 2009
28 mai 2009 à 23:34
Mpi  teste ton code et tu verra que for Each renvoi une erreur !

Parce qu' a chaque fennetre fermer  Index qui se trouve dan frm change !
0
Rejoignez-nous