Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème mémoire suite à code répété

3 réponses
Avatar
Ben
Bonjour,
Je reviens sur ma demande du 2 mai pour laquelle on m'a donné des solutions
qui pourtant ne résolvent pas mon problème.
Auriez-vous une autre piste ? Voici ma question initiale :
"Sur une action qui se passe bien lorsque je la répète moins de 100 fois,
lorsque que j'atteinds environ 120 à 130 répétition, j'obtiens un message
"Erreur d'execution '2004' : Mémoire insuffisante pour exécuter cette
opération..."
Lorsque je quitte, ACCESS me demande si je veux enregistrer mon formulaire
comme si j'y avait effectué des modification et par la suite, plus moyen de
revenir sur ce formulaire. Il ne fonctionne plus ("Opération annulée"), je
n'ai plus alors d'autre choix que d'utiliser une sauvegarde.
Pourriez-vous m'aider s'il vous plait ?
Voici le code de cette action :
---------------------------------------------------------------------
If Me.Périodedébut > Me.PériodeFin Then
Msgbox "Périodes de début et de fin non chronologiques." & Chr(10) &
Chr(13), vbExclamation, "ATTENTION !"
Else
Commande171.SetFocus
Me!DateFacture = Date
Me!Type = "loyer"
Me![alerteappelBail].Form![Dernierloyerappelé] = Me!PériodeFin
Me.Texte156 = Me.RéfDepRec

DoCmd.GoToRecord , , acNewRec

' enregistrement des données dans la table "montants"
Dim Db As DAO.Database
Dim rs As DAO.Recordset
Set Db = CurrentDb
Set rs = Db.OpenRecordset("select * from montants")

If Texte146 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte146
rs("réfposte") = 1
rs("RéfDepRec") = Me.Texte156
rs.Update
End If

If Texte148 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte148
rs("réfposte") = 5
rs("RéfDepRec") = Me.Texte156
rs.Update
End If

If Texte150 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte150
rs("réfposte") = 6
rs("RéfDepRec") = Me.Texte156
rs.Update
End If

If Texte152 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte152
rs("réfposte") = 7
rs("RéfDepRec") = Me.Texte156
rs.Update
End If

Set rs = Nothing
Set Db = Nothing

If Me![alerteappelloyersactuels].Form![Appelloyer] = -1 Then
If Msgbox("Vous devriez envoyer par courrier cet avis d'échéance à
payer. Voulez-vous l'imprimer ?", vbYesNo, "RAPPEL !") = vbYes Then
Dim stDocName As String
stDocName = "appelloyer"
DoCmd.OpenReport stDocName, acNormal
DoCmd.Close acForm, "appelloyers"
Else
DoCmd.Close acForm, "appelloyers"
End If
Else
DoCmd.Close acForm, "appelloyers"
End If

Dim maRequete As String
Dim monForm As String
maRequete = "appel loyers loyers actuels2"
monForm = "formalerteappel"
Set rs = CurrentDb.OpenRecordset(maRequete, dbOpenDynaset)

If rs.RecordCount > 0 Then
DoCmd.OpenForm "appelloyers", acNormal, "", "", , acNormal
DoCmd.GoToRecord acForm, "appelloyers", acNewRec
End If

End If
"
Cordialement,
Ben.

3 réponses

Avatar
ze Titi
Salut Ben !

Vu ton code, tu n'as pas appliqué les solutions proposées...
Un autre conseil: si tu as une version récente, coche la case
"Compacter lors de la fermeture" dans les options de la base de données
(Outils | Options=)

En ce jour exceptionnel du lundi 07/05/2007, tu nous as très
généreusement gratifié du message suivant:

Bonjour,
Je reviens sur ma demande du 2 mai pour laquelle on m'a donné des solutions
qui pourtant ne résolvent pas mon problème.
Auriez-vous une autre piste ? Voici ma question initiale :
"Sur une action qui se passe bien lorsque je la répète moins de 100 fois,
lorsque que j'atteinds environ 120 à 130 répétition, j'obtiens un message
"Erreur d'execution '2004' : Mémoire insuffisante pour exécuter cette
opération..."
Lorsque je quitte, ACCESS me demande si je veux enregistrer mon formulaire
comme si j'y avait effectué des modification et par la suite, plus moyen de
revenir sur ce formulaire. Il ne fonctionne plus ("Opération annulée"), je
n'ai plus alors d'autre choix que d'utiliser une sauvegarde.
Pourriez-vous m'aider s'il vous plait ?
Voici le code de cette action :
---------------------------------------------------------------------
If Me.Périodedébut > Me.PériodeFin Then
Msgbox "Périodes de début et de fin non chronologiques." & Chr(10) &
Chr(13), vbExclamation, "ATTENTION !"
Else
Commande171.SetFocus
Me!DateFacture = Date
Me!Type = "loyer"
Me![alerteappelBail].Form![Dernierloyerappelé] = Me!PériodeFin
Me.Texte156 = Me.RéfDepRec

DoCmd.GoToRecord , , acNewRec

' enregistrement des données dans la table "montants"
Dim Db As DAO.Database
Dim rs As DAO.Recordset
Set Db = CurrentDb
Set rs = Db.OpenRecordset("select * from montants")

If Texte146 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte146
rs("réfposte") = 1
rs("RéfDepRec") = Me.Texte156
rs.Update
End If

If Texte148 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte148
rs("réfposte") = 5
rs("RéfDepRec") = Me.Texte156
rs.Update
End If

If Texte150 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte150
rs("réfposte") = 6
rs("RéfDepRec") = Me.Texte156
rs.Update
End If

If Texte152 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte152
rs("réfposte") = 7
rs("RéfDepRec") = Me.Texte156
rs.Update
End If

Set rs = Nothing
Set Db = Nothing

If Me![alerteappelloyersactuels].Form![Appelloyer] = -1 Then
If Msgbox("Vous devriez envoyer par courrier cet avis d'échéance à
payer. Voulez-vous l'imprimer ?", vbYesNo, "RAPPEL !") = vbYes Then
Dim stDocName As String
stDocName = "appelloyer"
DoCmd.OpenReport stDocName, acNormal
DoCmd.Close acForm, "appelloyers"
Else
DoCmd.Close acForm, "appelloyers"
End If
Else
DoCmd.Close acForm, "appelloyers"
End If

Dim maRequete As String
Dim monForm As String
maRequete = "appel loyers loyers actuels2"
monForm = "formalerteappel"
Set rs = CurrentDb.OpenRecordset(maRequete, dbOpenDynaset)

If rs.RecordCount > 0 Then
DoCmd.OpenForm "appelloyers", acNormal, "", "", , acNormal
DoCmd.GoToRecord acForm, "appelloyers", acNewRec
End If

End If
"
Cordialement,
Ben.


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
Ben
Si j'ai bien ajouté dans mon code ce que tu préconisais (simplement là, j'ai
juste fait un copier coller de ma demande initiale) et je compacte
systématiquement ma base à la fermeture.

Cordialement,
Ben.



Salut Ben !

Vu ton code, tu n'as pas appliqué les solutions proposées...
Un autre conseil: si tu as une version récente, coche la case
"Compacter lors de la fermeture" dans les options de la base de données
(Outils | Options=)

En ce jour exceptionnel du lundi 07/05/2007, tu nous as très
généreusement gratifié du message suivant:

Bonjour,
Je reviens sur ma demande du 2 mai pour laquelle on m'a donné des solutions
qui pourtant ne résolvent pas mon problème.
Auriez-vous une autre piste ? Voici ma question initiale :
"Sur une action qui se passe bien lorsque je la répète moins de 100 fois,
lorsque que j'atteinds environ 120 à 130 répétition, j'obtiens un message
"Erreur d'execution '2004' : Mémoire insuffisante pour exécuter cette
opération..."
Lorsque je quitte, ACCESS me demande si je veux enregistrer mon formulaire
comme si j'y avait effectué des modification et par la suite, plus moyen de
revenir sur ce formulaire. Il ne fonctionne plus ("Opération annulée"), je
n'ai plus alors d'autre choix que d'utiliser une sauvegarde.
Pourriez-vous m'aider s'il vous plait ?
Voici le code de cette action :
---------------------------------------------------------------------
If Me.Périodedébut > Me.PériodeFin Then
Msgbox "Périodes de début et de fin non chronologiques." & Chr(10) &
Chr(13), vbExclamation, "ATTENTION !"
Else
Commande171.SetFocus
Me!DateFacture = Date
Me!Type = "loyer"
Me![alerteappelBail].Form![Dernierloyerappelé] = Me!PériodeFin
Me.Texte156 = Me.RéfDepRec

DoCmd.GoToRecord , , acNewRec

' enregistrement des données dans la table "montants"
Dim Db As DAO.Database
Dim rs As DAO.Recordset
Set Db = CurrentDb
Set rs = Db.OpenRecordset("select * from montants")

If Texte146 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte146
rs("réfposte") = 1
rs("RéfDepRec") = Me.Texte156
rs.Update
End If

If Texte148 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte148
rs("réfposte") = 5
rs("RéfDepRec") = Me.Texte156
rs.Update
End If

If Texte150 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte150
rs("réfposte") = 6
rs("RéfDepRec") = Me.Texte156
rs.Update
End If

If Texte152 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte152
rs("réfposte") = 7
rs("RéfDepRec") = Me.Texte156
rs.Update
End If

Set rs = Nothing
Set Db = Nothing

If Me![alerteappelloyersactuels].Form![Appelloyer] = -1 Then
If Msgbox("Vous devriez envoyer par courrier cet avis d'échéance à
payer. Voulez-vous l'imprimer ?", vbYesNo, "RAPPEL !") = vbYes Then
Dim stDocName As String
stDocName = "appelloyer"
DoCmd.OpenReport stDocName, acNormal
DoCmd.Close acForm, "appelloyers"
Else
DoCmd.Close acForm, "appelloyers"
End If
Else
DoCmd.Close acForm, "appelloyers"
End If

Dim maRequete As String
Dim monForm As String
maRequete = "appel loyers loyers actuels2"
monForm = "formalerteappel"
Set rs = CurrentDb.OpenRecordset(maRequete, dbOpenDynaset)

If rs.RecordCount > 0 Then
DoCmd.OpenForm "appelloyers", acNormal, "", "", , acNormal
DoCmd.GoToRecord acForm, "appelloyers", acNewRec
End If

End If
"
Cordialement,
Ben.


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






Avatar
pgz
Bonjour,

Il ne serait pas inutile alors que tu montres le code tel qu'il est
aujourd'hui.

--
pgz
_____________________________




Si j'ai bien ajouté dans mon code ce que tu préconisais (simplement là, j'ai
juste fait un copier coller de ma demande initiale) et je compacte
systématiquement ma base à la fermeture.

Cordialement,
Ben.