Afficher un message d'erreur avant enregistrement sous condition

MarieB

XLDnaute Nouveau
Bonjour à tous !

Tout d'abord je m'excuse je suis novice dans le post en forum et mon titre me paraît pas bien clair...
Je m'explique j'ai créée un formulaire sous Excel, et je souhaiterais qu'un message d'erreur s'affiche avant l'enregistrement par un utilisateur si
- une case autre est cochée
et
- la case qui permet de préciser est non remplie.

Je sais pas si je suis plus claire dans mon message ! N'hésitez pas à me faire précisez !

Merci par avance si vous pouvez m'aider !!!

Marie
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Afficher un message d'erreur avant enregistrement sous condition

Bonjour Marie, et bienvenue sur le forum

voici un code qui empêche la sauvegarde si la cellule A1 est vide
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If [A1] = "" Then
MsgBox (" la cellule A1 ne peut être vide")
Cancel = True
End If
End Sub

à+
Philippe

Edit:
je sais pas si je suis plus claire dans mon message ! N'hésitez pas à me faire précisez !
Peut-être qu'en voyant ton fichier je pourrais donner une réponse plus adaptée à tes besoins
 
Dernière édition:

MarieB

XLDnaute Nouveau
Re : Afficher un message d'erreur avant enregistrement sous condition

Bonjour et merci pour ta réponse rapide !

Merci pour ton code, seulement je souhaite que le message s'affiche uniquement si la cellule A1 est vide ET que la case à cocher correspondante est cochée !

J'ai fais une copie d'écran d'une partie de mon fichier ! Dans cet exemple, je souhaiterais qu'un message d'erreur s'affiche avant enregistrement par l'utilisateur s'il a coché "Autre" dans Type d'exploitation ET qu'il n'a pas rempli la case "Si autre précisez" !

Sans titre.jpg

Merci par avance !
 

Pièces jointes

  • Sans titre.jpg
    Sans titre.jpg
    15.8 KB · Affichages: 93
  • Sans titre.jpg
    Sans titre.jpg
    15.8 KB · Affichages: 95

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Afficher un message d'erreur avant enregistrement sous condition

Re,
J'ai fais une copie d'écran d'une partie de mon fichier !
j'aurais préféré voir le fichier plutôt qu'une "photo"
il est nécessaire de savoir si les cases à cocher sont de type "Formulaire" ou "ActiveX"

lors de la prochaine réponse, il faut cliquer sur "Aller en mode avancé"
et un peu plus bas dans la page sur "Gérer les pièces jointes"

à+
Philippe
 

MarieB

XLDnaute Nouveau
Re : Afficher un message d'erreur avant enregistrement sous condition

Voilà le classeur et les cases sont en mode formulaire...

Marie
 

Pièces jointes

  • Classeur1.xls
    21 KB · Affichages: 63
  • Classeur1.xls
    21 KB · Affichages: 56
  • Classeur1.xls
    21 KB · Affichages: 67

MarieB

XLDnaute Nouveau
Re : Afficher un message d'erreur avant enregistrement sous condition

Bonjour,

C'est encore moi, j'ai juste un léger problème avec la macro ! Je voudrais qu'elle s'applique à toutes les feuilles de mon classeur sauf la feuille d'intro et la feuille de synthèse qui ne sont pas sur le même modèle que les autres...

Pouvez-vous m'aider ?

Merci par avance,

Marie
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Afficher un message d'erreur avant enregistrement sous condition

Re bonjour Marie,

avec ce code:
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
For i = 1 To Sheets.Count
If (Sheets(i).Name <> "Intro" Or Sheets(i).Name <> "Synthèse") And Sheets(i).[A1] = True And Sheets(i).[B20] = "" Then
MsgBox ("La cellule B20 de la feuillle " & Sheets(i).Name & " ne peut être vide")
Cancel = True
Exit Sub
End If
Next i
End Sub


à+
Philippe
 

MarieB

XLDnaute Nouveau
Re : Afficher un message d'erreur avant enregistrement sous condition

Bonjour Philippe,

Et merci pour ta réponse ! L'application de ton code sur mon classeur ne semble pas fonctionner, quand je cherche à enregistrer (sans qu'il y ait d'erreur de remplissage), le message suivant s'affiche : "Erreur d’exécution 13, Incompatibilité de type". Si je clique sur débogage, c'est la ligne If (Sheets(i).Name <> "Intro" Or Sheets(i).Name <> "Synthèse") And Sheets(i).[C84] = True And Sheets(i).[B20] = "" Then qui est colorée en jaune. Je ne vois pas ce qui pose problème :-/

Encore merci pour ton aide,

Marie
 

MarieB

XLDnaute Nouveau
Re : Afficher un message d'erreur avant enregistrement sous condition

En fait, j'ai réussi à éviter le problème, j'ai simplifié la boucle ! En admettant que ma feuille d'intro est ma première feuille et ma feuille de synthèse la dernière :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

For i = 2 To (Sheets.Count - 1)

If Sheets(i).[A1] = True And Sheets(i).[B20] = "" Then
MsgBox ("Veuillez précisez le type d'exploitation sur la feuillle " & Sheets(i).Name)
Cancel = True
End If
Next i
End Sub

Et ça fonctionne !

Merci Philippe, je n'aurais pas réussi sans ton code ! Et voilà mon premier fichier Excel avec macro terminé :D

A+

Marie
 

Discussions similaires

Statistiques des forums

Discussions
312 202
Messages
2 086 178
Membres
103 152
dernier inscrit
Karibu