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

Message si...

5 réponses
Avatar
Isa
Bonjour tout le monde

Comment allez-vous par ce lundi matin ?

Bon, j'ai cr=E9e un formulaire qui s'ouvre en mode ajout avec un bouton
permettant de sauvegarder les donn=E9es saisies
J'aimerai
1) un message de confirmation avant sauvegarde
2) et si l'utilisateur n'a rien saisi et clique quand m=EAme sur le
bouton, avoir un message du genre "eh! pourquoi veux-tu enregistrer,
y'a rien =E0 enregistrer"

Voici le code g=E9n=E9r=E9 par Access suite =E0 l'utilisation de l'assistant=

pour cr=E9er mon bouton qui permet de sauvegarder
Private Sub Commande30_Click()
On Error GoTo Err_Commande30_Click


DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70

Exit_Commande30_Click:
Exit Sub

Err_Commande30_Click:
MsgBox Err.Description
Resume Exit_Commande30_Click

End Sub

3) et si ce n'est pas trop demand=E9, j'aimerai conna=EEtre le code qui
permet d'effacer tout ce que l'utilisateur vient de saisir sur un
enregistrement

Merci d'avance

5 réponses

Avatar
Thierry (ze Titi)
Hello Isa !

Comment allez-vous par ce lundi matin ?
Ce matin, j'étais un peu endormi mais là, ça va... Et toi ?


Bon, j'ai crée un formulaire qui s'ouvre en mode ajout avec un bouton
permettant de sauvegarder les données saisies
J'aimerai
1) un message de confirmation avant sauvegarde
Réponse pour 1) et 2):

Avant ton DoCmd.DoMenuItem:

If MsgBox("Voulez-vous sauvegarder ?",vbYesNo)=vbYes Then
If Not (IsNull(champ1) or IsNull(champ2) or IsNull(champ3)) Then
DoCmd.MenuItem....
Else
MsgBox "Pourquoi enregistrer"....
Exit Sub
End If
Else
Exit Sub
End If

2) et si l'utilisateur n'a rien saisi et clique quand même sur le
bouton, avoir un message du genre "eh! pourquoi veux-tu enregistrer,
y'a rien à enregistrer"

Voici le code généré par Access suite à l'utilisation de l'assistant
pour créer mon bouton qui permet de sauvegarder
Private Sub Commande30_Click()
On Error GoTo Err_Commande30_Click


DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70

Exit_Commande30_Click:
Exit Sub

Err_Commande30_Click:
MsgBox Err.Description
Resume Exit_Commande30_Click

End Sub

3) et si ce n'est pas trop demandé, j'aimerai connaître le code qui
permet d'effacer tout ce que l'utilisateur vient de saisir sur un
enregistrement


Private Sub viderControles()
On Error Resume Next
Dim Ctl As Control
For Each Ctl In Me.Controls
If Ctl.ControlType = acTextBox Or Ctl.ControlType = acComboBox Then Ctl.Value = ""
Next Ctl
End Sub

--
Cordialement,
Thierry

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

Avatar
Isa
Un grand merci

on doit être lundi, je suis encore dans le gaz, de plus cela fait
trois fois que je refais ce message

bon alors, j'ai bien une boîte de dialogue
si je clique sur non, il n'efface pas ce que je viens de saisir
si je clique sur oui, il m'affiche la deuxième boîte de dialogue
"Pourquoi enregistrer"

si non le code suivant ne fait rien du tout
Private Sub viderControles()
On Error Resume Next
Dim Ctl As Control
For Each Ctl In Me.Controls
If Ctl.ControlType = acTextBox Or Ctl.ControlType = acComb oBox Then Ctl.Value = ""
Next Ctl
End Sub


alors j'ai inséré à l'aide de l'assistant le code suivant
On Error GoTo Err_Commande36_Click


DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70

Exit_Commande36_Click:
Exit Sub

Err_Commande36_Click:
MsgBox Err.Description
Resume Exit_Commande36_Click

End Sub

Normalement, je pense que l'on peut cumuler non ?

du genre
Private Sub Confirm_sauvegarde_Click()

' demander oui ou non la sauvegarde
If MsgBox("Voulez-vous sauvegarder ?", vbYesNo) = vbYes Then
' si oui sauvegarder
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70
"si oui mais rien n'a sauvegarder, afficher message pourquoi
sauvegarder"
MsgBox "Pourquoi sauvegarder"
Else
"si non effacer le contenu de l'enregistrement
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
Exit Sub
End If
Else
Exit Sub
End If

End Sub

Avec le code ci-dessus, si je dis non, il efface le contenu de mes
zones de texte mais si je dis oui ben il il ne veut pas et m'afficher
"pourquoi enregistrer"

bref c'est la cata

Avatar
Isa
Un grand merci

on doit être lundi, je suis encore dans le gaz, de plus cela fait
trois fois que je refais ce message

bon alors, j'ai bien une boîte de dialogue
si je clique sur non, il n'efface pas ce que je viens de saisir
si je clique sur oui, il m'affiche la deuxième boîte de dialogue
"Pourquoi enregistrer"

si non le code suivant ne fait rien du tout
Private Sub viderControles()
On Error Resume Next
Dim Ctl As Control
For Each Ctl In Me.Controls
If Ctl.ControlType = acTextBox Or Ctl.ControlType = acComb oBox Then Ctl.Value = ""
Next Ctl
End Sub


alors j'ai inséré à l'aide de l'assistant le code suivant
On Error GoTo Err_Commande36_Click


DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70

Exit_Commande36_Click:
Exit Sub

Err_Commande36_Click:
MsgBox Err.Description
Resume Exit_Commande36_Click

End Sub

Normalement, je pense que l'on peut cumuler non ?

du genre
Private Sub Confirm_sauvegarde_Click()

' demander oui ou non la sauvegarde
If MsgBox("Voulez-vous sauvegarder ?", vbYesNo) = vbYes Then
' si oui sauvegarder
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70
"si oui mais rien n'a sauvegarder, afficher message pourquoi
sauvegarder"
MsgBox "Pourquoi sauvegarder"
Else
"si non effacer le contenu de l'enregistrement
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
Exit Sub
End If
Else
Exit Sub
End If

End Sub

Avec le code ci-dessus, si je dis non, il efface le contenu de mes
zones de texte mais si je dis oui ben il il ne veut pas et m'afficher
"pourquoi enregistrer"

bref c'est la cata

Avatar
Thierry (ze Titi)
Un grand merci
Si ça ne fonctionne pas, tu n'as pas à me remercier... :o)


on doit être lundi, je suis encore dans le gaz, de plus cela fait
trois fois que je refais ce message
Private Sub Commande36_Click()

If MsgBox("Voulez-vous sauvegarder ?",vbYesNo)=vbYes Then
If nz(champ1,"")<>"" and Nz(champ2,"")<>"" And Nz(champ3,"")<>"" Then 'Permet de tester si tes champs sont remplis
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Else
MsgBox "Pourquoi enregistrer", vbOkOnly
Exit Sub
End If
Else
viderControles 'Implique que tu as copié la procédure que je t'ai donnée plus tôt qui ne "faisait rien du tout" pour reprendre tes mots ;-) Je l'ai remise en dessous
Exit Sub
End If
End Sub

Private Sub viderControles()
'Cette procédure permet de vider les contrôles textes du formulaire en cours lorsqu'elle est appelée
On Error Resume Next
Dim Ctl As Control
For Each Ctl In Me.Controls
If Ctl.ControlType = acTextBox Or Ctl.ControlType = acComboBox Then Ctl.Value = ""
Next Ctl
End Sub

Le code du bouton est bien sûr à adapter, notamment au niveau des noms des champs

--
Cordialement,
Thierry

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

Avatar
Isa
bon je ne te dis donc pas merci ;-)

j'ai modifié le nom des champs et ajouter tous les autres champs du
formulaire pour tester si les champs sont remplis

5/10 : si je remplis tous les champs puis un clic sur le bouton puis
oui ok çà marche mais le contenu reste je ne passe pas à un
enregistrement vierge sniff!!

10/10 : si je remplis quelques champs puis un clic sur le bouton puis
oui il me dit que tous les champs ne sont pas remplis ok c'est ce que
je veux

0/10 : par contre parfois ce n'est pas systématique si je remplis
quelques champs puis un clic sur le bouton puis oui ou non il me dit
que le champ mel ne peut pas être une chaîne vide késako ? idem
lorsque je veux passer du mode formulaire au mode création puis
erreur impossible d'enregistrer

voili