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

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

6 réponses
Avatar
Ben
Bonjour,
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
------------------------------------------------

Merci d'avance.

Cordialement,
Ben.

6 réponses

Avatar
ze Titi
Hello Ben !

Ne pas oublier de fermer tes recordset à la fin d'une procédure et de
vider tes variables

rs.Close
set rs=Nothing

Sans cela, ta base se corromp très vite (c'est ce qui t'arrive). Un
début de corruption peut être corrigé en compactant la base
régulièrement.
Une corruption avancée peut éventuellement se résoudre en ouvrant une
base vierge et en y important tous les objets de la base existante.


En ce jour mémorable du mercredi 02/05/2007, tu as entrepris la lourde
tâche de taper sur ton clavier :
Bonjour,
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
------------------------------------------------

Merci d'avance.

Cordialement,
Ben.


--
Cordialement,
Ze Titi

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

Avatar
Ben
Merci beaucoup pour votre réponse.
Juste une petite précision encore s'il vous plait, afin de m'éviter des
phases de test fastidieuses : où dois-je placer "rs.Close" & "set rs=Nothing"
dans mon code ?

Cordialement,
Ben.



Hello Ben !

Ne pas oublier de fermer tes recordset à la fin d'une procédure et de
vider tes variables

rs.Close
set rs=Nothing

Sans cela, ta base se corromp très vite (c'est ce qui t'arrive). Un
début de corruption peut être corrigé en compactant la base
régulièrement.
Une corruption avancée peut éventuellement se résoudre en ouvrant une
base vierge et en y important tous les objets de la base existante.


En ce jour mémorable du mercredi 02/05/2007, tu as entrepris la lourde
tâche de taper sur ton clavier :
Bonjour,
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
------------------------------------------------

Merci d'avance.

Cordialement,
Ben.


--
Cordialement,
Ze Titi

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






Avatar
Raymond [mvp]
Bonjour.

une simple remarque mais utile:
Au lieu d'utiliser la méthode Close, on peut affecter la valeur Nothing à la
variable objet (Set db = Nothing, Set rs = Nothing par exemple).
en ce qui concerne l'endroit où il faut placer les set...nothing, je dirais
qu'il faut les exécuter dès qu'on n'utilise plus l'objet.

j'ai lu ton message mais je ne vois pas où se situe la boucle pour faire 200
passages.
--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413


"Ben" a écrit dans le message de news:

| Merci beaucoup pour votre réponse.
| Juste une petite précision encore s'il vous plait, afin de m'éviter des
| phases de test fastidieuses : où dois-je placer "rs.Close" & "set
rs=Nothing"
| dans mon code ?
|
| Cordialement,
| Ben.
|
|
|
| > Hello Ben !
| >
| > Ne pas oublier de fermer tes recordset à la fin d'une procédure et de
| > vider tes variables
| >
| > rs.Close
| > set rs=Nothing
| >
| > Sans cela, ta base se corromp très vite (c'est ce qui t'arrive). Un
| > début de corruption peut être corrigé en compactant la base
| > régulièrement.
| > Une corruption avancée peut éventuellement se résoudre en ouvrant une
| > base vierge et en y important tous les objets de la base existante.
| >
| >
| > En ce jour mémorable du mercredi 02/05/2007, tu as entrepris la lourde
| > tâche de taper sur ton clavier :
| > > Bonjour,
| > > 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
| > > ------------------------------------------------
| > >
| > > Merci d'avance.
| > >
| > > Cordialement,
| > > Ben.
| >
| > --
| > Cordialement,
| > Ze Titi
| >
| > Tout pour réussir avec Access :
| > http://www.mpfa.info
| >
| >
| >
Avatar
ze Titi
Merci beaucoup pour votre réponse.


De rien, c'est fait pour ça. Par contre, un truc pour la convivialité, ça n'est pas une obligation mais c'est plus sympa: le tutoiement simplifie les relations...

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

rs.Close

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
rs.Close
Set rs=Nothing
Set db=Nothing
End If

--
Cordialement,
Ze Titi

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

Avatar
Ben
Je n'ai pas encore mis de boucle.
Cette action répétée est manuelle car doit être vérifiée avant chaque
validation.

Cordialement,
Ben.



Bonjour.

une simple remarque mais utile:
Au lieu d'utiliser la méthode Close, on peut affecter la valeur Nothing à la
variable objet (Set db = Nothing, Set rs = Nothing par exemple).
en ce qui concerne l'endroit où il faut placer les set...nothing, je dirais
qu'il faut les exécuter dès qu'on n'utilise plus l'objet.

j'ai lu ton message mais je ne vois pas où se situe la boucle pour faire 200
passages.
--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413


"Ben" a écrit dans le message de news:

| Merci beaucoup pour votre réponse.
| Juste une petite précision encore s'il vous plait, afin de m'éviter des
| phases de test fastidieuses : où dois-je placer "rs.Close" & "set
rs=Nothing"
| dans mon code ?
|
| Cordialement,
| Ben.
|
|
|
| > Hello Ben !
| >
| > Ne pas oublier de fermer tes recordset à la fin d'une procédure et de
| > vider tes variables
| >
| > rs.Close
| > set rs=Nothing
| >
| > Sans cela, ta base se corromp très vite (c'est ce qui t'arrive). Un
| > début de corruption peut être corrigé en compactant la base
| > régulièrement.
| > Une corruption avancée peut éventuellement se résoudre en ouvrant une
| > base vierge et en y important tous les objets de la base existante.
| >
| >
| > En ce jour mémorable du mercredi 02/05/2007, tu as entrepris la lourde
| > tâche de taper sur ton clavier :
| > > Bonjour,
| > > 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
| > > ------------------------------------------------
| > >
| > > Merci d'avance.
| > >
| > > Cordialement,
| > > Ben.
| >
| > --
| > Cordialement,
| > Ze Titi
| >
| > Tout pour réussir avec Access :
| > http://www.mpfa.info
| >
| >
| >





Avatar
Ben
Merci, tu es très cool.

Cordialement,
Ben.



Merci beaucoup pour votre réponse.


De rien, c'est fait pour ça. Par contre, un truc pour la convivialité, ça n'est pas une obligation mais c'est plus sympa: le tutoiement simplifie les relations...

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

rs.Close

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
rs.Close
Set rs=Nothing
Set db=Nothing
End If

--
Cordialement,
Ze Titi

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