J'ai un formulaire comportant deux boutons. Le premier est un "Exit" qui
effectue la commande 'DoCmd.Close acForm, "TerrBati"'. Pas de problème,
le formulaire disparait de l'écran.
Le deuxième bouton effectue un certain traitement avant d'exécuter la
même commande de fermeture mais le formulaire ne se ferme pas. En
débogage, je passe bien sur l'instruction de fermeture.
-----Message d'origine----- J'ai un formulaire comportant deux boutons. Le premier est un "Exit" qui
effectue la commande 'DoCmd.Close acForm, "TerrBati"'. Pas de problème,
le formulaire disparait de l'écran. Le deuxième bouton effectue un certain traitement avant d'exécuter la
même commande de fermeture mais le formulaire ne se ferme pas. En
débogage, je passe bien sur l'instruction de fermeture.
Quelle peut-être la raison de cette anomalie ?
Merci d'avance pour toute suggestion.
Pour t'aider, il faudrait connaître le code de ton 2nd bouton. Met le en ligne, que je puisse le regarder, et
joint également le code de ton bouton de fermeture. (Pour le cas ou...) @+
defluc
'Voici le code du bouton qui ne ferme pas le formulaire
Private Sub ConfirmBtn_Click() Dim Db As Database, Rst As Recordset NonBatiYear = NonBatiYearTxt PuYear = PuYearTxt ConstrYear = ConstrYearTxt PlanSect = PlanSectList Set Db = CurrentDb Set Rst = Db.OpenRecordset("TableBienNonBati") Rst.Index = "RefCadStrClef" RefCadStrBuild Rst.Seek "=", RefCadStrClef If Rst.NoMatch Then 'Not : 'Le numéro d'enregistrement contenant la donnée à écrire ' n'existe pas il faut donc l'ajouter Rst.AddNew Rst![Div] = Div Rst![Sect] = Sect Rst![Radical] = Radical Rst![ExposLet] = ExposLet Rst![ExposDigit] = ExposDigit Rst![Indice] = Indice Rst![AnnTerrNonBati] = NonBatiYear If ConstrYear <> "" Then Rst![AnnConstr] = ConstrYear Rst![PlanSect] = PlanSect Rst![CodeProprio] = CodeProprio Rst![Article] = Article Rst![NoOrdre] = NoOrdre Rst![Contenance] = Contenance Rst![RefCadStrClef] = RefCadStrClef Rst.Update Rst.Bookmark = Rst.LastModified Else 'Le numéro d'enregistrement contenant les données à écrire existe Rst.Edit Rst.Fields![AnnTerrNonBati] = NonBatiYear If PuYear <> "" Then Rst![AnnPu] = PuYear If ConstrYear <> "" Then Rst![AnnConstr] = ConstrYear Rst![PlanSect] = PlanSect Rst.Update MsgBox " Ce terrain est déjà enregistré." + Chr(13) + _ " La base de données va être mise à jour " + Chr(13) + _ "avec les modifications ou ajouts de données que vous auriez faites " End If Rst.Close Db.Close Set Db = Nothing Set Rst = Nothing
DoCmd.Close acForm, "TerrBati" End Sub
' et, pour être complet, la routine appelée
Public Sub RefCadStrBuild() RefCadStrClef = Trim(Str(Div)) + "/" + Sect + "/" + Trim(Str(Radical)) + "/" If ExposLet = "" Then RefCadStrClef = RefCadStrClef + " " Else RefCadStrClef = RefCadStrClef + ExposLet RefCadStrClef = RefCadStrClef + "/" If ExposDigit = "" Then RefCadStrClef = RefCadStrClef + " " Else RefCadStrClef = RefCadStrClef + ExposDigit RefCadStrClef = RefCadStrClef + "/" If Indice = "" Then RefCadStrClef = RefCadStrClef + " " Else RefCadStrClef = RefCadStrClef + Indice
End Sub
'Et enfin, le code du bouton "Exit" qui assure normalement 'son rôle de fermeture du formulaire
Private Sub AnnulBtn_Click()
If IsNull(RefCadListe.Column(0, 0)) Then DoCmd.Close acForm, "TerrBati" Exit Sub End If Form_ProprioParcelle.BatiCoche.Value = False If RecInList(RefCadStrClef) = False Then Form_ProprioParcelle.BatiCoche.Value = False If MsgBox("Les données en cours n'ont pas été enregistrées dans la liste des terrains non bâtis." & Chr(13) & _ "Elles ne figureront donc pas dans la liste d'impression si vous ne les sauvegardez pas maintenant." & Chr(13) & Chr(13) & _ "Voulez-vous les enregistrer ?", vbYesNo, "Avertissement") = vbYes Then ConfirmBtn_Click Form_ProprioParcelle.BatiCoche.Value = True
Else Form_ProprioParcelle.BatiCoche.Value = False End If End If DoCmd.Close acForm, "TerrBati"
End Sub
ChtiCoin a écrit:
-----Message d'origine----- J'ai un formulaire comportant deux boutons. Le premier
est un "Exit" qui
effectue la commande 'DoCmd.Close acForm, "TerrBati"'.
Pas de problème,
le formulaire disparait de l'écran. Le deuxième bouton effectue un certain traitement avant
d'exécuter la
même commande de fermeture mais le formulaire ne se ferme
pas. En
débogage, je passe bien sur l'instruction de fermeture.
Quelle peut-être la raison de cette anomalie ?
Merci d'avance pour toute suggestion.
Pour t'aider, il faudrait connaître le code de ton 2nd
bouton. Met le en ligne, que je puisse le regarder, et joint également le code de ton bouton de fermeture. (Pour le cas ou...) @+
'Voici le code du bouton qui ne ferme pas le formulaire
Private Sub ConfirmBtn_Click()
Dim Db As Database, Rst As Recordset
NonBatiYear = NonBatiYearTxt
PuYear = PuYearTxt
ConstrYear = ConstrYearTxt
PlanSect = PlanSectList
Set Db = CurrentDb
Set Rst = Db.OpenRecordset("TableBienNonBati")
Rst.Index = "RefCadStrClef"
RefCadStrBuild
Rst.Seek "=", RefCadStrClef
If Rst.NoMatch Then 'Not : 'Le numéro d'enregistrement contenant la
donnée à écrire
' n'existe pas il faut donc l'ajouter
Rst.AddNew
Rst![Div] = Div
Rst![Sect] = Sect
Rst![Radical] = Radical
Rst![ExposLet] = ExposLet
Rst![ExposDigit] = ExposDigit
Rst![Indice] = Indice
Rst![AnnTerrNonBati] = NonBatiYear
If ConstrYear <> "" Then Rst![AnnConstr] = ConstrYear
Rst![PlanSect] = PlanSect
Rst![CodeProprio] = CodeProprio
Rst![Article] = Article
Rst![NoOrdre] = NoOrdre
Rst![Contenance] = Contenance
Rst![RefCadStrClef] = RefCadStrClef
Rst.Update
Rst.Bookmark = Rst.LastModified
Else 'Le numéro d'enregistrement contenant
les données à écrire existe
Rst.Edit
Rst.Fields![AnnTerrNonBati] = NonBatiYear
If PuYear <> "" Then Rst![AnnPu] = PuYear
If ConstrYear <> "" Then Rst![AnnConstr] = ConstrYear
Rst![PlanSect] = PlanSect
Rst.Update
MsgBox " Ce terrain est déjà enregistré." +
Chr(13) + _
" La base de données va être mise à jour " +
Chr(13) + _
"avec les modifications ou ajouts de données que vous
auriez faites "
End If
Rst.Close
Db.Close
Set Db = Nothing
Set Rst = Nothing
DoCmd.Close acForm, "TerrBati"
End Sub
' et, pour être complet, la routine appelée
Public Sub RefCadStrBuild()
RefCadStrClef = Trim(Str(Div)) + "/" + Sect + "/" +
Trim(Str(Radical)) + "/"
If ExposLet = "" Then RefCadStrClef = RefCadStrClef + " "
Else RefCadStrClef = RefCadStrClef + ExposLet
RefCadStrClef = RefCadStrClef + "/"
If ExposDigit = "" Then RefCadStrClef = RefCadStrClef + "
" Else RefCadStrClef = RefCadStrClef + ExposDigit
RefCadStrClef = RefCadStrClef + "/"
If Indice = "" Then RefCadStrClef = RefCadStrClef + " "
Else RefCadStrClef = RefCadStrClef + Indice
End Sub
'Et enfin, le code du bouton "Exit" qui assure normalement
'son rôle de fermeture du formulaire
Private Sub AnnulBtn_Click()
If IsNull(RefCadListe.Column(0, 0)) Then
DoCmd.Close acForm, "TerrBati"
Exit Sub
End If
Form_ProprioParcelle.BatiCoche.Value = False
If RecInList(RefCadStrClef) = False Then
Form_ProprioParcelle.BatiCoche.Value = False
If MsgBox("Les données en cours n'ont pas été enregistrées dans la
liste des terrains non bâtis." & Chr(13) & _
"Elles ne figureront donc pas dans la liste d'impression si
vous ne les sauvegardez pas maintenant." & Chr(13) & Chr(13) & _
"Voulez-vous les enregistrer ?", vbYesNo, "Avertissement") =
vbYes Then
ConfirmBtn_Click
Form_ProprioParcelle.BatiCoche.Value = True
Else
Form_ProprioParcelle.BatiCoche.Value = False
End If
End If
DoCmd.Close acForm, "TerrBati"
End Sub
ChtiCoin a écrit:
-----Message d'origine-----
J'ai un formulaire comportant deux boutons. Le premier
est un "Exit" qui
effectue la commande 'DoCmd.Close acForm, "TerrBati"'.
Pas de problème,
le formulaire disparait de l'écran.
Le deuxième bouton effectue un certain traitement avant
d'exécuter la
même commande de fermeture mais le formulaire ne se ferme
pas. En
débogage, je passe bien sur l'instruction de fermeture.
Quelle peut-être la raison de cette anomalie ?
Merci d'avance pour toute suggestion.
Pour t'aider, il faudrait connaître le code de ton 2nd
bouton. Met le en ligne, que je puisse le regarder, et
joint également le code de ton bouton de fermeture. (Pour
le cas ou...) @+
'Voici le code du bouton qui ne ferme pas le formulaire
Private Sub ConfirmBtn_Click() Dim Db As Database, Rst As Recordset NonBatiYear = NonBatiYearTxt PuYear = PuYearTxt ConstrYear = ConstrYearTxt PlanSect = PlanSectList Set Db = CurrentDb Set Rst = Db.OpenRecordset("TableBienNonBati") Rst.Index = "RefCadStrClef" RefCadStrBuild Rst.Seek "=", RefCadStrClef If Rst.NoMatch Then 'Not : 'Le numéro d'enregistrement contenant la donnée à écrire ' n'existe pas il faut donc l'ajouter Rst.AddNew Rst![Div] = Div Rst![Sect] = Sect Rst![Radical] = Radical Rst![ExposLet] = ExposLet Rst![ExposDigit] = ExposDigit Rst![Indice] = Indice Rst![AnnTerrNonBati] = NonBatiYear If ConstrYear <> "" Then Rst![AnnConstr] = ConstrYear Rst![PlanSect] = PlanSect Rst![CodeProprio] = CodeProprio Rst![Article] = Article Rst![NoOrdre] = NoOrdre Rst![Contenance] = Contenance Rst![RefCadStrClef] = RefCadStrClef Rst.Update Rst.Bookmark = Rst.LastModified Else 'Le numéro d'enregistrement contenant les données à écrire existe Rst.Edit Rst.Fields![AnnTerrNonBati] = NonBatiYear If PuYear <> "" Then Rst![AnnPu] = PuYear If ConstrYear <> "" Then Rst![AnnConstr] = ConstrYear Rst![PlanSect] = PlanSect Rst.Update MsgBox " Ce terrain est déjà enregistré." + Chr(13) + _ " La base de données va être mise à jour " + Chr(13) + _ "avec les modifications ou ajouts de données que vous auriez faites " End If Rst.Close Db.Close Set Db = Nothing Set Rst = Nothing
DoCmd.Close acForm, "TerrBati" End Sub
' et, pour être complet, la routine appelée
Public Sub RefCadStrBuild() RefCadStrClef = Trim(Str(Div)) + "/" + Sect + "/" + Trim(Str(Radical)) + "/" If ExposLet = "" Then RefCadStrClef = RefCadStrClef + " " Else RefCadStrClef = RefCadStrClef + ExposLet RefCadStrClef = RefCadStrClef + "/" If ExposDigit = "" Then RefCadStrClef = RefCadStrClef + " " Else RefCadStrClef = RefCadStrClef + ExposDigit RefCadStrClef = RefCadStrClef + "/" If Indice = "" Then RefCadStrClef = RefCadStrClef + " " Else RefCadStrClef = RefCadStrClef + Indice
End Sub
'Et enfin, le code du bouton "Exit" qui assure normalement 'son rôle de fermeture du formulaire
Private Sub AnnulBtn_Click()
If IsNull(RefCadListe.Column(0, 0)) Then DoCmd.Close acForm, "TerrBati" Exit Sub End If Form_ProprioParcelle.BatiCoche.Value = False If RecInList(RefCadStrClef) = False Then Form_ProprioParcelle.BatiCoche.Value = False If MsgBox("Les données en cours n'ont pas été enregistrées dans la liste des terrains non bâtis." & Chr(13) & _ "Elles ne figureront donc pas dans la liste d'impression si vous ne les sauvegardez pas maintenant." & Chr(13) & Chr(13) & _ "Voulez-vous les enregistrer ?", vbYesNo, "Avertissement") = vbYes Then ConfirmBtn_Click Form_ProprioParcelle.BatiCoche.Value = True
Else Form_ProprioParcelle.BatiCoche.Value = False End If End If DoCmd.Close acForm, "TerrBati"
End Sub
ChtiCoin a écrit:
-----Message d'origine----- J'ai un formulaire comportant deux boutons. Le premier
est un "Exit" qui
effectue la commande 'DoCmd.Close acForm, "TerrBati"'.
Pas de problème,
le formulaire disparait de l'écran. Le deuxième bouton effectue un certain traitement avant
d'exécuter la
même commande de fermeture mais le formulaire ne se ferme
pas. En
débogage, je passe bien sur l'instruction de fermeture.
Quelle peut-être la raison de cette anomalie ?
Merci d'avance pour toute suggestion.
Pour t'aider, il faudrait connaître le code de ton 2nd
bouton. Met le en ligne, que je puisse le regarder, et joint également le code de ton bouton de fermeture. (Pour le cas ou...) @+