L'objet a été déchargé (Err 364)

Résolu
Vianneyp Messages postés 82 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2010 - 26 juin 2007 à 15:11
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 27 juin 2007 à 08:21
Bonjour,
J'ai un probléme avec Load/Unload :
Proc [Dblclick sur une liste]
[Instructions...]
Load FormZ
Fin Proc
Du coup,
Proc [Chargement FormZ]
[Instructions...]
Appel de procédure (ProcX)
Fin Proc
Proc [ProcX]
[Instructions...]
MsgBox "Message"
Unload Me
Fin Proc
=> Le message s'affiche,puis vb mbloque sur une erreur d'execution '364' : "l'objet a été déchargé"
Lorque je passe en mode Debug,je m'apercoit que vb stop sur la ligne Load FormZ de la 1er procédure (Dblclick sur une liste).
Pourquoi réexectute t-il la procédure,normalement evénementielle Dblclick sur une liste ?
Et en addmetant qu'il l'éxecute je ne sait trop comment,je ne comprend pas ce message "l'objet a été déchargé".
A quoi sert Load,si ce n'est a chargé un objet qui ne l'est pas ?
Merci de votre aide.

8 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 juin 2007 à 15:50
me choque pas...

Private Sub FormZ_Load()
Instructions sans importances
Appel de procédure
End Sub

Tout un tas de procédures s'encainent jusque a cette derniére :

Public Function Procédure() as Booleab
If Variable = 0 Then
MsgBox "Cette base est vide !", vbExclamation
Procédure = False
Unload formZ
End if
Instructions...
Procédure = True
End sub

Private Sub FormZ_Load()
Instructions sans importances
If procédure Then
'# Suite des instructions
End If
End Sub
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 juin 2007 à 15:17
RIEN compris a ton pseudo code...

en gros, cette erreur survient par exemple si tu fais :

Form2.Show

et que dans le Form_Load de ta Form2, tu fais :

Unload Me

une fois le Form_Load appelé, Form2 a été déchargé, et le .Show est impossible alors...
0
Vianneyp Messages postés 82 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2010
26 juin 2007 à 15:25
"en gros, cette erreur survient par exemple si tu fais :
Form2.Show
et que dans le Form_Load de ta Form2, tu fais :
Unload Me"
En fait la feuille est appelé via Load,et n'est pas affiché.
Ensuite,la procédure Load de cette form en appel une autre,qui effectue des instructions avant de terminer par l'affichage d'une MsgBox,puis Unload Form.
J'ai essayé en Steep into,aprés le unload,il m'afiche ce message d'erreur et je me retrouve dans la procédure qui a appelé la form a l'origine...sur la ligne Form Load
0
Vianneyp Messages postés 82 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2010
26 juin 2007 à 15:32
Private Sub File1_Click()
If File1.FileName <> Empty Then
Load formZ
End If
End Sub

Private Sub FormZ_Load()
Instructions sans importances
Appel de procédure
End Sub

Tout un tas de procédures s'encainent jusque a cette derniére :

Public Sub Procédure()
If Variable = 0 Then
MsgBox "Cette base est vide !", vbExclamation
Unload formZ
End if
Instructions...
End sub
C'es tcomme si aussitot la form déchargée (Unload formZ) il la rechargait de suite.
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 juin 2007 à 15:51
[...]
Instructions...
Procédure = True
End Function

bien entendu ^^ (copier-coller.....)
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
26 juin 2007 à 16:09
salut,

pourquoi utiliser une Form si ce n'est pas pour l'afficher ?
Dans ce cas, autant utiliser un module pour effectuer tes instructions !

@++

(
0
Vianneyp Messages postés 82 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2010
26 juin 2007 à 19:10
"pourquoi utiliser une Form si ce n'est pas pour l'afficher ?
Dans ce cas, autant utiliser un module pour effectuer tes instructions !"
Parceque je récupére le contenue d'un fichier txt et étant débutant,j'utilise la propriété filename (trés pratique) des RTB et differents label pour stoker de longues valeurs.
Merci pour ta correction Renfield  .
la derniére procédure ne c'est pas exécuté mais cela doit étre la faute de ma "condition".
Toujours est-il que le form ne se recharge plus indéfiniment.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 juin 2007 à 08:21
se recharge dès que tu fais reference a l'un de ses objets...

ppour bien faire, il faudrait supprimer TOUTE manipulation exterieure des controles de tes Forms...

souvent, j'utilise un methode publique de ma form, lorsque, par exemple je fais des boites de dialogue :

plutot que de faire :

FrmEditClient.TxtClientID.Text = Rs!ClientID
[...]
FrmEditClient.TxtClientName.Text = Rs!ClientName
FrmEditClient.Show vbModal
'# Mise a jour de l'affichage... (ou pire, manipuler cette Form-ci depuis FrmEditClient :-S

je prefere faire par exemple :

If FrmEditClient.Launch (Rs) Then
'# Mise a jour de l'affichage...
End If

avec :

Private mbDialogResult As Boolean

Public Function Launch(ByRef voRs As RecordSet) As Function
TxtClientID.Text = Rs!ClientID
...
Me.Show vbModal
Launch = mbDialogResult
If mbDialogResult Then
'# L'utilisateur a pressé la touche OK.
'# On met a jour les données, controlées dans le BtnOk_Click
End If
End Function

Private Sub BtnCancel_Click()
Me.Hide
End Sub

Private Sub BtnOK_Click()
'# Verification de la saisie...
[...]
mbDialogResult =True
Me.Hide
End Sub



bon, c'est du code tapé de tête, mais le principe est largement éprouvé, et fonctionne au poil. On s'approche un peu d'une regle de la programmation orienté objet... on ne manipule pas directement les valeurs internes de la Form, mais on passe par les methodes et propriétés qu'elle exporte...
0
Rejoignez-nous