OVH Cloud OVH Cloud

fermeture form sous condition

7 réponses
Avatar
ghr
Bonjour à tous,

je démarre en VBA, et je démarre mal car je suis déjà bloqué sur une
question qui paraît pourtant simple. J'ai écrit :

Private Sub Form_BeforeUpdate(Cancel As Integer)
'contrôle que les champs du formulaire sont bien remplis.

If IsNull(RubNom) Then 'condition requise : nom de rubrique obligatoire.
MsgBox "un nom de rubrique est obligatoire.", vbCritical, conNomApp
'affiche avertissement.
Cancel = True
RubNom.SetFocus



End If
Exit Sub
End Sub

et

Private Sub OK_Click()

DoCmd.Close 'ferme le formulaire.

End Sub

Ce que je tente, c'est de fermer un Form sous la condition que le champ
RubNom soit rempli. C'est pas plus bête que ça, mais après le message, le
Form se ferme (certes la modification n'est pas sauvegardée, mais je voudrais
conserver le Form ouvert).

MERCI
--
Laurent

7 réponses

Avatar
Raymond [mvp]
Bonjour.

pour fermer le formulaire, laisse la fermeture par la croix de fermeture et
tu n'as rien à faire;
pour contrôler la bonne saisie:
Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(RubNom) Then
MsgBox "Rubnom est obligatoire.", vbCritical, conNomApp
RubNom.SetFocus
Cancel = True
End If
End Sub

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Bonjour à tous,

je démarre en VBA, et je démarre mal car je suis déjà bloqué sur une

Private Sub Form_BeforeUpdate(Cancel As Integer)
'contrôle que les champs du formulaire sont bien remplis.

If IsNull(RubNom) Then 'condition requise : nom de rubrique
obligatoire.
MsgBox "un nom de rubrique est obligatoire.", vbCritical, conNomApp
'affiche avertissement.
Cancel = True
RubNom.SetFocus



End If
Exit Sub
End Sub

et

Private Sub OK_Click()

DoCmd.Close 'ferme le formulaire.

End Sub

Ce que je tente, c'est de fermer un Form sous la condition que le champ
RubNom soit rempli. C'est pas plus bête que ça, mais après le message, le
Form se ferme (certes la modification n'est pas sauvegardée, mais je
voudrais
conserver le Form ouvert).

MERCI
--
Laurent


Avatar
ghr
Bonjour Raymond,

Merci du tuyau mais je ne veux pas que la fenêtre se ferme si la condition
n'est pas requise : je veux que la procédure de fermeture STOP et que le
curseur revienne sur le Focus RubNom




Bonjour.

pour fermer le formulaire, laisse la fermeture par la croix de fermeture et
tu n'as rien à faire;
pour contrôler la bonne saisie:
Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(RubNom) Then
MsgBox "Rubnom est obligatoire.", vbCritical, conNomApp
RubNom.SetFocus
Cancel = True
End If
End Sub

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Bonjour à tous,

je démarre en VBA, et je démarre mal car je suis déjà bloqué sur une

Private Sub Form_BeforeUpdate(Cancel As Integer)
'contrôle que les champs du formulaire sont bien remplis.

If IsNull(RubNom) Then 'condition requise : nom de rubrique
obligatoire.
MsgBox "un nom de rubrique est obligatoire.", vbCritical, conNomApp
'affiche avertissement.
Cancel = True
RubNom.SetFocus



End If
Exit Sub
End Sub

et

Private Sub OK_Click()

DoCmd.Close 'ferme le formulaire.

End Sub

Ce que je tente, c'est de fermer un Form sous la condition que le champ
RubNom soit rempli. C'est pas plus bête que ça, mais après le message, le
Form se ferme (certes la modification n'est pas sauvegardée, mais je
voudrais
conserver le Form ouvert).

MERCI
--
Laurent







Avatar
Raymond [mvp]
Avec le cancel = true la fenêtre ne se ferme pas et reste sur le champ;

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Bonjour Raymond,

Merci du tuyau mais je ne veux pas que la fenêtre se ferme si la condition
n'est pas requise : je veux que la procédure de fermeture STOP et que le
curseur revienne sur le Focus RubNom




Bonjour.

pour fermer le formulaire, laisse la fermeture par la croix de fermeture
et
tu n'as rien à faire;
pour contrôler la bonne saisie:
Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(RubNom) Then
MsgBox "Rubnom est obligatoire.", vbCritical, conNomApp
RubNom.SetFocus
Cancel = True
End If
End Sub

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Bonjour à tous,

je démarre en VBA, et je démarre mal car je suis déjà bloqué sur une

Private Sub Form_BeforeUpdate(Cancel As Integer)
'contrôle que les champs du formulaire sont bien remplis.

If IsNull(RubNom) Then 'condition requise : nom de rubrique
obligatoire.
MsgBox "un nom de rubrique est obligatoire.", vbCritical,
conNomApp
'affiche avertissement.
Cancel = True
RubNom.SetFocus



End If
Exit Sub
End Sub

et

Private Sub OK_Click()

DoCmd.Close 'ferme le formulaire.

End Sub

Ce que je tente, c'est de fermer un Form sous la condition que le champ
RubNom soit rempli. C'est pas plus bête que ça, mais après le message,
le
Form se ferme (certes la modification n'est pas sauvegardée, mais je
voudrais
conserver le Form ouvert).

MERCI
--
Laurent









Avatar
ghr
Bonjour Raymond,

Merci pour les infos, mais ça ne marche pas, j'obtiens le message suivant :

Impossible d'enregistrer cet objet pour l'instant.
Le programme a peut-être rencontré une erreur en essayant de sauvegarder un
enregistrement. Si vous fermez cet objet maintennant, les modifications
seront perdues.
Voulez vous toujour ferner l'objet base de données ?
Flag : OUI NON

J'aimerai ne pas donner le choix.

Merci.

Laurent




Avec le cancel = true la fenêtre ne se ferme pas et reste sur le champ;

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Bonjour Raymond,

Merci du tuyau mais je ne veux pas que la fenêtre se ferme si la condition
n'est pas requise : je veux que la procédure de fermeture STOP et que le
curseur revienne sur le Focus RubNom




Bonjour.

pour fermer le formulaire, laisse la fermeture par la croix de fermeture
et
tu n'as rien à faire;
pour contrôler la bonne saisie:
Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(RubNom) Then
MsgBox "Rubnom est obligatoire.", vbCritical, conNomApp
RubNom.SetFocus
Cancel = True
End If
End Sub

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Bonjour à tous,

je démarre en VBA, et je démarre mal car je suis déjà bloqué sur une

Private Sub Form_BeforeUpdate(Cancel As Integer)
'contrôle que les champs du formulaire sont bien remplis.

If IsNull(RubNom) Then 'condition requise : nom de rubrique
obligatoire.
MsgBox "un nom de rubrique est obligatoire.", vbCritical,
conNomApp
'affiche avertissement.
Cancel = True
RubNom.SetFocus



End If
Exit Sub
End Sub

et

Private Sub OK_Click()

DoCmd.Close 'ferme le formulaire.

End Sub

Ce que je tente, c'est de fermer un Form sous la condition que le champ
RubNom soit rempli. C'est pas plus bête que ça, mais après le message,
le
Form se ferme (certes la modification n'est pas sauvegardée, mais je
voudrais
conserver le Form ouvert).

MERCI
--
Laurent














Avatar
Raymond [mvp]
Bonjour.

ce message apparaît lorsque le formulaire est modifié et non lorsque les
données sont modifiées. l'enregistrement des modifs reste du ressort du
développeur;
lorsque les données sont modifiées, access suit les fonctions et les arrêts
de fonctions; si cancel est chargé à True sur form_unload, l'opération
form-Unload est annulée.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Bonjour Raymond,

Merci pour les infos, mais ça ne marche pas, j'obtiens le message suivant
:

Impossible d'enregistrer cet objet pour l'instant.
Le programme a peut-être rencontré une erreur en essayant de sauvegarder
un
enregistrement. Si vous fermez cet objet maintennant, les modifications
seront perdues.
Voulez vous toujour ferner l'objet base de données ?
Flag : OUI NON

J'aimerai ne pas donner le choix.

Merci.

Laurent




Avec le cancel = true la fenêtre ne se ferme pas et reste sur le champ;

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Bonjour Raymond,

Merci du tuyau mais je ne veux pas que la fenêtre se ferme si la
condition
n'est pas requise : je veux que la procédure de fermeture STOP et que
le
curseur revienne sur le Focus RubNom




Bonjour.

pour fermer le formulaire, laisse la fermeture par la croix de
fermeture
et
tu n'as rien à faire;
pour contrôler la bonne saisie:
Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(RubNom) Then
MsgBox "Rubnom est obligatoire.", vbCritical, conNomApp
RubNom.SetFocus
Cancel = True
End If
End Sub

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Bonjour à tous,

je démarre en VBA, et je démarre mal car je suis déjà bloqué sur une

Private Sub Form_BeforeUpdate(Cancel As Integer)
'contrôle que les champs du formulaire sont bien remplis.

If IsNull(RubNom) Then 'condition requise : nom de rubrique
obligatoire.
MsgBox "un nom de rubrique est obligatoire.", vbCritical,
conNomApp
'affiche avertissement.
Cancel = True
RubNom.SetFocus



End If
Exit Sub
End Sub

et

Private Sub OK_Click()

DoCmd.Close 'ferme le formulaire.

End Sub

Ce que je tente, c'est de fermer un Form sous la condition que le
champ
RubNom soit rempli. C'est pas plus bête que ça, mais après le
message,
le
Form se ferme (certes la modification n'est pas sauvegardée, mais je
voudrais
conserver le Form ouvert).

MERCI
--
Laurent
















Avatar
ghr
Bonjour Raymond,

Jer ne comprend donc pas la raison du message : j'ai fermé Access, tout
enregistré, n'ai fait aucune nouvelle modif sur le formulaire, l'ai ouvert en
mode formulaire, opéré mes modif sur enregistrement et le message apparaît
encore !!!

Si j'ai compris ton message, seul le fait de modifier la structure du form
me donnerait l'avertissement de Access ?

Merci

Laurent


Bonjour.

ce message apparaît lorsque le formulaire est modifié et non lorsque les
données sont modifiées. l'enregistrement des modifs reste du ressort du
développeur;
lorsque les données sont modifiées, access suit les fonctions et les arrêts
de fonctions; si cancel est chargé à True sur form_unload, l'opération
form-Unload est annulée.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Bonjour Raymond,

Merci pour les infos, mais ça ne marche pas, j'obtiens le message suivant
:

Impossible d'enregistrer cet objet pour l'instant.
Le programme a peut-être rencontré une erreur en essayant de sauvegarder
un
enregistrement. Si vous fermez cet objet maintennant, les modifications
seront perdues.
Voulez vous toujour ferner l'objet base de données ?
Flag : OUI NON

J'aimerai ne pas donner le choix.

Merci.

Laurent




Avec le cancel = true la fenêtre ne se ferme pas et reste sur le champ;

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Bonjour Raymond,

Merci du tuyau mais je ne veux pas que la fenêtre se ferme si la
condition
n'est pas requise : je veux que la procédure de fermeture STOP et que
le
curseur revienne sur le Focus RubNom




Bonjour.

pour fermer le formulaire, laisse la fermeture par la croix de
fermeture
et
tu n'as rien à faire;
pour contrôler la bonne saisie:
Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(RubNom) Then
MsgBox "Rubnom est obligatoire.", vbCritical, conNomApp
RubNom.SetFocus
Cancel = True
End If
End Sub

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Bonjour à tous,

je démarre en VBA, et je démarre mal car je suis déjà bloqué sur une

Private Sub Form_BeforeUpdate(Cancel As Integer)
'contrôle que les champs du formulaire sont bien remplis.

If IsNull(RubNom) Then 'condition requise : nom de rubrique
obligatoire.
MsgBox "un nom de rubrique est obligatoire.", vbCritical,
conNomApp
'affiche avertissement.
Cancel = True
RubNom.SetFocus



End If
Exit Sub
End Sub

et

Private Sub OK_Click()

DoCmd.Close 'ferme le formulaire.

End Sub

Ce que je tente, c'est de fermer un Form sous la condition que le
champ
RubNom soit rempli. C'est pas plus bête que ça, mais après le
message,
le
Form se ferme (certes la modification n'est pas sauvegardée, mais je
voudrais
conserver le Form ouvert).

MERCI
--
Laurent





















Avatar
Raymond [mvp]
essaie de placer un msgbox dans l'événement beforeupdate et afterupdate du
champ en cours de modification, tu verras immédiatement où se situe le
message access. (je parle des modifs de données uniquement)

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Bonjour Raymond,

Jer ne comprend donc pas la raison du message : j'ai fermé Access, tout
enregistré, n'ai fait aucune nouvelle modif sur le formulaire, l'ai ouvert
en
mode formulaire, opéré mes modif sur enregistrement et le message apparaît
encore !!!

Si j'ai compris ton message, seul le fait de modifier la structure du form
me donnerait l'avertissement de Access ?

Merci

Laurent