L'objet a été déchargé (Err 364) [Résolu]

Vianneyp 84 Messages postés jeudi 6 juillet 2006Date d'inscription 6 janvier 2010 Dernière intervention - 26 juin 2007 à 15:11 - Dernière réponse : Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 26 juin 2007 à 15:50
3
Merci
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

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de Renfield
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 26 juin 2007 à 15:17
0
Merci
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...
Commenter la réponse de Renfield
Vianneyp 84 Messages postés jeudi 6 juillet 2006Date d'inscription 6 janvier 2010 Dernière intervention - 26 juin 2007 à 15:25
0
Merci
"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
Commenter la réponse de Vianneyp
Vianneyp 84 Messages postés jeudi 6 juillet 2006Date d'inscription 6 janvier 2010 Dernière intervention - 26 juin 2007 à 15:32
0
Merci
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.
Commenter la réponse de Vianneyp
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 26 juin 2007 à 15:51
0
Merci
[...]
Instructions...
Procédure = True
End Function

bien entendu ^^ (copier-coller.....)
Commenter la réponse de Renfield
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 26 juin 2007 à 16:09
0
Merci
salut,

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

@++

(
Commenter la réponse de mortalino
Vianneyp 84 Messages postés jeudi 6 juillet 2006Date d'inscription 6 janvier 2010 Dernière intervention - 26 juin 2007 à 19:10
0
Merci
"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.
Commenter la réponse de Vianneyp
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 27 juin 2007 à 08:21
0
Merci
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...
Commenter la réponse de Renfield

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.