Pop up avant fermeture du classeur

nicolasj

XLDnaute Nouveau
Bonjour à tous,
Je souhaiterais afficher en pop up un message du type "avez vous bien rempli la colonne D ? " au moment où l'utilisateur ferme un classeur excel.
Je pense que cela n'est possible que via VBA, que je ne connais malheureusement pas...
Quelqu'un serait il en mesure de m'aider sur ce point ?
D'avance merci,
Nicolas
 

Jack2

XLDnaute Occasionnel
Re : Pop up avant fermeture du classeur

Bonjour tout le monde,

Une piste. Faire Alt + F11 et dans placer le code suivant dans ThisWorkbook :
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Vérifie si les cellules de la colonne D (de 1 à 100) sont vides ou non
Dim Fermer As Boolean
With Worksheets("Feuil1")
Derlig = Range("D" & Rows.Count).End(xlUp).Row
If Derlig > 100 Then Fermer = False
End With
If Fermer Then
    'enregistre le classeur
    ThisWorkbook.Save
Else
    MsgBox "la colonne D ne contient aucune valeur"
    'Empêche la fermeture si la colonne D est vide
    Cancel = True
End If
End Sub
Si la colonne D ne contient aucune valeur (lignes de 1 à 100) un message s'affiche et pas de fermeture. A adapter pour une plage particulière.
A+ Jack2
 

bambi

XLDnaute Occasionnel
Re : Pop up avant fermeture du classeur

Ou BeforeClose toujours dans ThisWorkBook
mais sans contrainte, juste le pop up d'avertissement

VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
MsgBox "Avez vous bien rempli la colonne D ?"
End Sub
 

Pièces jointes

  • Classeur1.xlsm
    11.2 KB · Affichages: 90
  • Classeur1.xlsm
    11.2 KB · Affichages: 78
  • Classeur1.xlsm
    11.2 KB · Affichages: 84
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Pop up avant fermeture du classeur

salut

une question mérite réponse non ?

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  'oui pour quitter
  If MsgBox("Avez vous bien rempli la colonne D ?", 4, "Attention...") = 6 Then Exit Sub
  Cancel = -1
End Sub
 

bambi

XLDnaute Occasionnel
Re : Pop up avant fermeture du classeur

En reprenant ce que Si a fait, et en rajoutant une petite image

VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  'oui pour quitter
  If MsgBox("Avez-vous bien rempli la colonne D ?", 4 + 48, "Attention !!") = 6 Then Exit Sub
  Cancel = -1
End Sub

ça donne ça

22-02-2014 07-26-00.png
 

nicolasj

XLDnaute Nouveau
Re : Pop up avant fermeture du classeur

Merci à tous pour votre aide très précieuse ! En plus de répondre à ma question vous êtes allés plus loin en proposant la proposition de cliquer sur "oui" ou "non", c'est très bien vu.
J'ai maintenant un dernier problème de forme, sur l'un des classeurs où je dois entrer cette pop up de fermeture, le texte est très long.
"AVANT DE FERMER, VERIFIER QUE
- En cas de saisie de commande :
1. Les commandes ont bien été saisies en haut du tableau
2. La ligne total rouge a bien été ajoutée
3. Si nouveau client, création de son compte client et mise à jours des informations client dans la base client.
- En cas de création de pro forma ou de facture :
1. Le statut a bien été renseigné en OK dans la colonne 'Statut pro forma' ou 'Statut facture' ?
2. La pro forma ou la facture a bien été enregistrée dans le dossier compte pro du client (au format PDF) ?"

Savez vous comment il est possible d'aller à la ligne pour que dans la pop up le texte s'affiche tel que ci-dessus ?
Je n'arrive qu'à faire fonctionner la macro en mettant tout le texte à la suite, ce qui donne un rendu pas très lisible dans la pop up.

Merci encore!
Nicolas
 

Staple1600

XLDnaute Barbatruc
Re : Pop up avant fermeture du classeur

Bonjour à tous

nicolasj
Utilises le Chr(13) à chaque fin de ligne

Code vba:
Sub message()
Dim mli$
mli = "AVANT DE FERMER, VERIFIER QUE" & Chr(13)
mli = mli & "- En cas de saisie de commande :" & Chr(13)
mli = mli & "1. Les commandes ont bien été saisies en haut du tableau" & Chr(13)
'je te laisse continuer sur le même principe ;o)
MsgBox mli
End Sub
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Pop up avant fermeture du classeur

salut

vbLf (4 caractères) pour Chr(13) (7 caractères) ;)

Si-joint 2 exemples,
le premier sans variable et avec le retour à la ligne dans une macro (_),
le second plus élaboré, pour le fun : Userform à la place de MsgBox pour se permettre, en plus, des fantaisies de présentation.
Il faut cocher toutes les cases d'option (sans tricher) pour quitter l'application.
 

Pièces jointes

  • Quitter ou pas.xls
    45 KB · Affichages: 81
  • Burn After Reading (PopUp UsF).xls
    110 KB · Affichages: 94

Staple1600

XLDnaute Barbatruc
Re : Pop up avant fermeture du classeur

Bonsoir Si...

Si...
Tu as raison vbLf c'est mieux ;)
J'ai failli sur ce coup-là. Désolé :eek:

Edition: Ceci dit, si j'avais 3 caractères en plus, toi tu en as au moins un de trop!
. Si nouveau client, création de son compte client et mise à jours

(gnark,gnark... oui je sais c'est petit, mais ça me fait rire)
 
Dernière édition:

nicolasj

XLDnaute Nouveau
Re : Pop up avant fermeture du classeur

Merci beaucoup pour vos contributions !
L'exemple "élaboré" de Si... est très intéressant, j'ai essayé de le reproduire et je suis quasiment au bout mais il reste un petit bug que je n'arrive pas à résoudre :

Quand en fermant mon fichier je coche toutes les cases puis clique sur "Valider", le message suivant apparaît :

"Erreur d'exécution 400 :
Feuille déjà affichée ; affichage modal impossible"

Puis quand je clique sur "Déboggage", je me retrouve dans "ThisWorkBook" avec le texte "UserForm1.Show" surligné en jaune.

Décelez-vous la cause de ce bug ?
Encore merci,
Nicolas
 

Staple1600

XLDnaute Barbatruc
Re : Pop up avant fermeture du classeur

Bonjour à tous

nicolasj
J'ai testé la PJ de Si... (sous Excel 2013), et je n'ai réussi à reproduire le bug que tu décris.
Test OK sur mon PC pour le moment.

EDITION: Tu as bien copié au bons endroits ?
•la déclaration publique de Fin dans un module standard
le code VBA dans la feuille (clic-droit -> Visualiser le code)
•et le code VBA dans l'userform dont le fichier dans lequel tu tentes de reproduire la PJ de Si...?

--> Tu dois donc avoir du code VBA dans trois endroits distincts: Est-ce bien le cas ?

Ci-dessous les consignes de Si... tel qu'elles apparaissent sur la feuille 1
(avec mes 3 rajouts pour être que ce qui doit être fait a été fait ;)
(voir-ci dessous)
consignesSI.png
 
Dernière édition:

nicolasj

XLDnaute Nouveau
Re : Pop up avant fermeture du classeur

Bonjour à tous,
Je pense avoir bien respecté les étapes que tu décris Staple 1600.
J'ai supprimé tous onglets de mon classeur mais je vous joins le fichier avec le code VBA tel quel, je pense que ça peut être plus pratique :)
 

Pièces jointes

  • 0-Commandes & Stock_1902 V2.xlsm
    157.6 KB · Affichages: 104

Si...

XLDnaute Barbatruc
Re : Pop up avant fermeture du classeur

salut

Edition: Ceci dit, si j'avais 3 caractères en plus, toi tu en as au moins un de trop!

(gnark,gnark... oui je sais c'est petit, mais ça me fait rire) moi aussi et ce n'est pas fini

Hé oui les joies et méfaits du Copier/Coller !
N'est-ce pas Si... : il y a une erreur dans la première explication copiée avant modification mais pas dans le code ;).

J'aurais dû écrire ShowModal = False :eek:.

C'est cela qui permet de faire des allers-retours du formulaire à la feuille !

Voici une autre version avec le complément sauvegarde éventuelle avant de quitter.
 

Pièces jointes

  • Burn After Reading (PopUp UsF Save & Quit).xlsm
    378.8 KB · Affichages: 75

Discussions similaires

Statistiques des forums

Discussions
312 398
Messages
2 088 076
Membres
103 700
dernier inscrit
amin Saadaoui