Message "varible object ou bloc wiht non défini" , A l'aide

cs_zazaclem Messages postés 5 Date d'inscription lundi 7 juillet 2003 Statut Membre Dernière intervention 20 août 2003 - 20 août 2003 à 10:27
cs_zazaclem Messages postés 5 Date d'inscription lundi 7 juillet 2003 Statut Membre Dernière intervention 20 août 2003 - 20 août 2003 à 11:36
Zazaclem J'ai un problème avec la version finale de ma base de données. Par moment sans savoir pourquoi , elle plante un utilisateur avec le message suivant " Variable object ou bloc with non défini". Et là obliger de redémarrer la base. J'ai besoin d'aide si quelqu'un a déjà eu ce problème, qu'il me fasse signe. Merci

4 réponses

cs_DeathAngel Messages postés 117 Date d'inscription vendredi 12 avril 2002 Statut Membre Dernière intervention 13 avril 2007
20 août 2003 à 10:45
Salut,

personnellement, j'ai ce problème dans 4 cas de figure :
1) microcoupure réseau -> base indisponible
2) lorsque le code a provoqué une erreur non gérée qui entraine l'arrêt des macros, toutes les variables globales sont vidées, du coup la variable contenant ma BD est à nothing
3) le fichier system.MDW n'est pas dispo, donc la base n'est pas chargée.
4) Lorsque des références sont manquantes (le plus fréquent des 4 cas).

J'espère que ça va t'aider.

@peluche
DA
0
cs_zazaclem Messages postés 5 Date d'inscription lundi 7 juillet 2003 Statut Membre Dernière intervention 20 août 2003
20 août 2003 à 11:09
Zazaclem Merci pour tes renseignements, je t'envoie mon code, c'est sur cette partie qu'il génère ce message

Private Sub Command247_Click()
On Error GoTo Err_Command247_Click
Dim defaut As Boolean
defaut = False
If flag Then

Else
If IsNull(Me![Text133]) Or IsNull(Me![Combo217]) Or IsNull(Me![Text215]) Then
MsgBox "Impossible d'enregistrer" & Chr(13) & " Vérifiez que les champs suivants sont correctement remplis :" _
& Chr(13) & Chr(9) & "N°Lot Fournisseur" & Chr(13) & Chr(9) & "Auteur de l'analyse" & Chr(13) & Chr(9) & "Motif du retour", vbCritical
defaut = True
GoTo Exit_Command247_Click
ElseIf IsNull(Me.Label56) Then
MsgBox "Attention" & Chr(13) & "Vous n'avez pas sélectionner de TYPE DE PRODUIT" & Chr(13) & "Veuillez recommencer votre saisie", vbCritical
defaut = True
GoTo Exit_Command247_Click
Else
Dim rst As Recordset 'pour l'analyse
Dim refu As Recordset 'pour le refus
Dim dbs As Database
Dim table As String
Dim index As Integer
Set dbs = CurrentDb
'######################### AJOUT DANS LA TABLE ANALYSE ########################
Set rst = dbs.OpenRecordset("ANALYSE")

If rst.RecordCount <> 0 Then 'si la table n'est pas vide'
rst.MoveLast 'se positionner sur le dernier enregistrement
End If
rst.AddNew 'on autorise un nouvel enregistrement
'on récupère les champs saisie dans le formulaire
rst![PN] = Me![Text35]
rst![DATECREATION] = Me![Text33]
rst![QUANTITE_DEFAUT] = Me![Text129]
rst![TYPEPRODUIT] = Me![Label56].ListIndex
rst![PROGRAMME] = Me![Label56].ItemData(rst![TYPEPRODUIT])
PROGRAMME = rst![PROGRAMME]
rst![TYPEDEFAUT] = Me![Frame291]
rst![LIEUDEFAUT] = Me![Frame87]
rst![N°MODULE] = Me![Text125]
rst![N°RETOURCLIENT] = Me![Text127]
rst![FOURNISSEUR] = Me![Text39]
rst![N°LOTFOURNISSEUR] = Me![Text133]
rst![ANALYSTE] = Me![Combo217]
rst![MOTIFRETOUR] = Me![Text215]
rst![TESTCHAUD] = Me![Check194]
rst![TESTFROID] = Me![Check198]
rst![TESTAMBIANT] = Me![Check200]
rst![TESTMECANIQUE] = Me![Check206]
rst![TESTSIMU] = Me![Check208]
rst![TESTMODULE] = Me![Check210]
rst![LOTPURGES] = Me![Cocher394]

Me![Text31] = rst![N°FAR] 'on récupère le numéro de far

'######################### AJOUT DANS LA TABLE REFUS ########################
Set refu = dbs.OpenRecordset("REFUS")

If refu.RecordCount <> 0 Then 'si la table est vide'
refu.MoveLast 'se positionner sur le dernier enregistrement
End If
refu.AddNew 'on autorise un nouvel enregistrement
refu![N°FAR] = rst![N°FAR]
refu![LIEUDEFAUT] = Me![Cadre386]
refu![DATEENTREE] = Me![Texte338]
refu![QTEPCSLIGNE] = Me![Texte342]
refu![QTEPCSMAGASIN] = Me![Texte344]
refu![ACTION] = Me![Texte393]
refu![DESTINATAIRE] = Me![Modifiable340]
refu![DECISION] = Me![Texte395]
refu![DATECOUT] = Me![Texte398]
refu![DESCRIPTION] = Me![Texte400]
refu![TOTAL] = Me![Texte402]
refu![PROGRAMME] = rst![PROGRAMME]
refu![DATESORTIE] = Me![Texte389]


'############################## AJOUT DES INFORMATIONS DANS LA TABLE REPONSE_FOURNISSEUR ###############################'
Dim rep As Recordset
Set rep = dbs.OpenRecordset("REPONSE_FOURNISSEUR")
If rep.RecordCount <> 0 Then 'si la table n'est pas vide'
rep.MoveFirst 'se positionner sur le dernier enregistrement
End If
rep.AddNew 'on autorise un nouvel enregistrement
'on récupère les champs saisie dans le formulaire
rep![N°FAR] = Me![Text31]
rep![DEMANDEUR] = Me![Modifiable373]
rep![TRACKING_SUPPLIER] = Me![Texte363]
rep![DATEENVOI] = Me![Texte361]
rep![CONTACT] = Me![Modifiable371]
rep![COMMODITY] = Me![Modifiable365]
rep![QTEANALYSE] = Me![Texte378]



rst.Update 'mise à jour de la table
refu.Update 'mise à jour de la table
rep.Update 'mise à jour de la table

MsgBox ("Sauvegarde réussie")
flag = True
Me!Command6.Enabled = True
Me!Command7.Enabled = True
Me!Command8.Enabled = True
Me!Command9.Enabled = True
End If
End If

Exit_Command247_Click:
If defaut = False Then
rst.Close
refu.Close
rep.Close
End If
Exit Sub

Err_Command247_Click:
MsgBox Err.DESCRIPTION
Me.Text31 = ""
Resume Exit_Command247_Click

End Sub

Si tu peux regarder, peut être tu pourras me dire ce qu'il faut que je fasse. Encore merci pour ton aide
0
cs_DeathAngel Messages postés 117 Date d'inscription vendredi 12 avril 2002 Statut Membre Dernière intervention 13 avril 2007
20 août 2003 à 11:33
Bon, a première vue, je vois qu'il te manque un truc pour débogger :

sous ton Resume Exit_Command247_Click, rajoute
Resume
Puis, tu mets un point d'arrêt sur
Resume Exit_Command247_Click
Lorsque tu as ton erreur, le prog va se mettre en pause.
Là, tu mets ton curseur sur le Resume que l'on vient de rajouter, et tu fais CTRL+F9 (pour définir la ligne de commande suivante), ensuite tu tapes F8 pour exécuter un pas à pas, et tu vas te retrouver sur la ligne de code qui pose problème.

Parce que honnêtement, ne sachant pas avec exactitude sur quelle ligne ton appli plante, je peux pas t'aider.

Mais si je dois me fier à mon feeling, je pense que ça pète sur un Set.

Donne-moi la ligne qui te pose problème, on verra ce qu'on peut faire ^_^

@peluche
DA
0
cs_zazaclem Messages postés 5 Date d'inscription lundi 7 juillet 2003 Statut Membre Dernière intervention 20 août 2003
20 août 2003 à 11:36
Zazaclem Je te remercie pour ton aide. Je te tiens au courant
A +
0
Rejoignez-nous