Alerte fermeture classeur
Résolu/Fermé
Chicorette
Messages postés
84
Date d'inscription
mercredi 20 juin 2007
Statut
Membre
Dernière intervention
27 janvier 2016
-
Modifié par jordane45 le 8/12/2014 à 09:46
Chicorette Messages postés 84 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 27 janvier 2016 - 12 déc. 2014 à 01:28
Chicorette Messages postés 84 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 27 janvier 2016 - 12 déc. 2014 à 01:28
A voir également:
- Alerte fermeture classeur
- Fausse alerte mcafee - Accueil - Piratage
- Sytadin fermeture - Télécharger - Transports & Cartes
- Fausse alerte connexion facebook - Guide
- Forcer fermeture application windows - Guide
- Frais de fermeture compte paypal - Guide
6 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
8 déc. 2014 à 08:59
8 déc. 2014 à 08:59
jordane45
Messages postés
38441
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 février 2025
4 737
8 déc. 2014 à 09:50
8 déc. 2014 à 09:50
jordane45
Messages postés
38441
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 février 2025
4 737
8 déc. 2014 à 13:45
8 déc. 2014 à 13:45
Au passage .. tu as testé le code que tu as donné à l'utilisateur ??
Je pense qu'il risque d'avoir un souci.. non ??
Perso... pour tester si une plage est vide j'utiliserai plutôt :
Je pense qu'il risque d'avoir un souci.. non ??
Perso... pour tester si une plage est vide j'utiliserai plutôt :
Sub test() If isRangeEmpty(Range("M1:M300")) Then Debug.Print "vide" Else Debug.Print "non vide" End If End Sub Function isRangeEmpty(Rng As Range) As Boolean If WorksheetFunction.CountA(Rng) = 0 Then isRangeEmpty = True Else isRangeEmpty = False End If End Function
Chicorette
Messages postés
84
Date d'inscription
mercredi 20 juin 2007
Statut
Membre
Dernière intervention
27 janvier 2016
2
9 déc. 2014 à 22:11
9 déc. 2014 à 22:11
Bonjour,
désolée pour l'insertion du code sans les <>, je ne le savais pas. C'est noté à présent, merci.
Pour le code, je suis encore en phase test et justement il ne s'exécute pas.
Je souhaiterais avoir une MessageBox à la fermeture du classeur, si une des cellule(s) de la feuille en question est vide.
L'utilisateur est censé le voir car j'ai mis une mise en forme conditionnelle si vide = cellule rouge.
Mais avant de quitter je veux juste une alerte le lui rappelant.
Où se situe le problème dans mon code? Je ne vois pas l'erreur ou le manque d'info?. Pour moi il est correct.
Merci
Chicorette
désolée pour l'insertion du code sans les <>, je ne le savais pas. C'est noté à présent, merci.
Pour le code, je suis encore en phase test et justement il ne s'exécute pas.
Je souhaiterais avoir une MessageBox à la fermeture du classeur, si une des cellule(s) de la feuille en question est vide.
L'utilisateur est censé le voir car j'ai mis une mise en forme conditionnelle si vide = cellule rouge.
Mais avant de quitter je veux juste une alerte le lui rappelant.
Où se situe le problème dans mon code? Je ne vois pas l'erreur ou le manque d'info?. Pour moi il est correct.
Merci
Chicorette
jordane45
Messages postés
38441
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 février 2025
4 737
9 déc. 2014 à 22:21
9 déc. 2014 à 22:21
Tu as tenu compte de mon code ?
Montre nous ce que tu as écris.
Montre nous ce que tu as écris.
Chicorette
Messages postés
84
Date d'inscription
mercredi 20 juin 2007
Statut
Membre
Dernière intervention
27 janvier 2016
2
9 déc. 2014 à 22:40
9 déc. 2014 à 22:40
Mon code dans l'énoncé. (Je ne vois pas ce qui cloche)
Oui, j'ai testé ton code, mais malgré les cellules vides il ne m'alerte de rien et me laisse enregistrer le classeur tel quel. (même en ayant élargit la zone (A2:M300))
Oui, j'ai testé ton code, mais malgré les cellules vides il ne m'alerte de rien et me laisse enregistrer le classeur tel quel. (même en ayant élargit la zone (A2:M300))
jordane45
Messages postés
38441
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 février 2025
4 737
9 déc. 2014 à 23:10
9 déc. 2014 à 23:10
Tu sais ce que fait debug.print ?
Tu l'as remplacé par un msgbox bien sûr ?
Tu l'as remplacé par un msgbox bien sûr ?
Chicorette
Messages postés
84
Date d'inscription
mercredi 20 juin 2007
Statut
Membre
Dernière intervention
27 janvier 2016
2
9 déc. 2014 à 23:15
9 déc. 2014 à 23:15
Non je ne sais pas, mais oui j'ai remplacé ma zone de if par ta sub...
jordane45
Messages postés
38441
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 février 2025
4 737
>
Chicorette
Messages postés
84
Date d'inscription
mercredi 20 juin 2007
Statut
Membre
Dernière intervention
27 janvier 2016
9 déc. 2014 à 23:25
9 déc. 2014 à 23:25
Donc..ce code ainsi modifié. .montre le nous pour qu'on sache ce qui ne va pas dedans...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jordane45
Messages postés
38441
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 février 2025
4 737
10 déc. 2014 à 10:29
10 déc. 2014 à 10:29
Testes ça :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If isRangeEmpty(Range("A2:M300")) Then MsgBox "Attention! Cette feuille contient au moins une cellule rouge." & Chr(13) & "C'est-à-dire une cellule vide." & Chr(13) & "Veuillez saisir le chiffre zéro dans les cellules censées rester vides." & Chr(13) & "Merci." Cancel = True Else ActiveWorkbook.Save End If End Sub Function isRangeEmpty(Rng As Range) As Boolean isRangeEmpty = (WorksheetFunction.CountA(Rng) = 0) End Function
Chicorette
Messages postés
84
Date d'inscription
mercredi 20 juin 2007
Statut
Membre
Dernière intervention
27 janvier 2016
2
10 déc. 2014 à 23:28
10 déc. 2014 à 23:28
Je désespère!!
Cela fait 1h que je teste dans tous les sens et je n'y comprends plus rien.
Ta dernière proposition a marché tout de suite Nickel, j'ai bien lu la message box au ralenti et pendant quelques secondes avec délice, mais une seule fois seulement! J'ai beau tester sur d'autres classeurs rien! aucune réaction. Aucun message!
Je dois revoir certaines notions je pense aussi. (Je veux comprendre pour apprendre et pas seulement copier coller).
Je n'ai plus trop le temps là ce soir. Mais samedi nuit il faut que je trouve mon bug :-)
Je soupçonne un problème de versions (2010/2013: j'essaie sur les 2) (Il n'y aurait que moi je supprimerais 2013!!!!) ;-) mais bon...
Merci beaucoup de ton aide.
Je n'abandonne pas... si ça a marché une fois c'est que c'est pas loin!!!
Merci vraiment.
Vivement samedi!!! pffff
Cela fait 1h que je teste dans tous les sens et je n'y comprends plus rien.
Ta dernière proposition a marché tout de suite Nickel, j'ai bien lu la message box au ralenti et pendant quelques secondes avec délice, mais une seule fois seulement! J'ai beau tester sur d'autres classeurs rien! aucune réaction. Aucun message!
Je dois revoir certaines notions je pense aussi. (Je veux comprendre pour apprendre et pas seulement copier coller).
Je n'ai plus trop le temps là ce soir. Mais samedi nuit il faut que je trouve mon bug :-)
Je soupçonne un problème de versions (2010/2013: j'essaie sur les 2) (Il n'y aurait que moi je supprimerais 2013!!!!) ;-) mais bon...
Merci beaucoup de ton aide.
Je n'abandonne pas... si ça a marché une fois c'est que c'est pas loin!!!
Merci vraiment.
Vivement samedi!!! pffff
jordane45
Messages postés
38441
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 février 2025
4 737
10 déc. 2014 à 23:57
10 déc. 2014 à 23:57
On est bien d'accord que le message apparaît lorsque tu sauvegarde le classeur dans lequel se trouve ce code et qu'aucune des cellules de la plage indiquée nest rempli. . ??
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
>
jordane45
Messages postés
38441
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 février 2025
Modifié par pijaku le 11/12/2014 à 08:45
Modifié par pijaku le 11/12/2014 à 08:45
Bonjour tout le monde,
J'ai, certes, 2 feuilles mais seule la 2ème est concernée par l'évènement.
Ajoutez donc le nom de la feuille pour identifier correctement le Range concerné :
J'ai, certes, 2 feuilles mais seule la 2ème est concernée par l'évènement.
Ajoutez donc le nom de la feuille pour identifier correctement le Range concerné :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim rngPlage As Range Set rngPlage = Sheets("Feuil18").Range("A2:M300") If isRangeEmpty(rngPlage) Then MsgBox "Attention! Cette feuille contient au moins une cellule rouge." & Chr(13) & "C'est-à-dire une cellule vide." & Chr(13) & "Veuillez saisir le chiffre zéro dans les cellules censées rester vides." & Chr(13) & "Merci." Cancel = True Else ActiveWorkbook.Save End If End Sub Function isRangeEmpty(Rng As Range) As Boolean isRangeEmpty = (WorksheetFunction.CountA(Rng) = 0) End Function
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
11 déc. 2014 à 10:46
11 déc. 2014 à 10:46
Bonjour Frank
Ajoutez donc le nom de la feuille pour identifier correctement le Range concerné :
Tiens qu'est ce que je disais:
If Sheets("nomdelafeuilleutile").Range("A2:M300").Value <> ""
et je me suis fait envoyer boulé par ton collègue modérateur
Ajoutez donc le nom de la feuille pour identifier correctement le Range concerné :
Tiens qu'est ce que je disais:
If Sheets("nomdelafeuilleutile").Range("A2:M300").Value <> ""
et je me suis fait envoyer boulé par ton collègue modérateur
jordane45
Messages postés
38441
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 février 2025
4 737
>
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
11 déc. 2014 à 10:56
11 déc. 2014 à 10:56
Ajouter le nom de la feuille : OUI
Par contre :
Je peux me tromper ... mais pour moi.. cette ligne de code ne fonctionne pas... d'où l'utilisation de la fonction isRangeEmpty ...
Par contre.. je ne t'ai pas envoyé "boulé" ...ou alors il faudra m'expliquer où ....
Par contre :
Range("A2:M300").Value <> "".. NON
Je peux me tromper ... mais pour moi.. cette ligne de code ne fonctionne pas... d'où l'utilisation de la fonction isRangeEmpty ...
je me suis fait envoyer boulé par ton collègue modérateur
Par contre.. je ne t'ai pas envoyé "boulé" ...ou alors il faudra m'expliquer où ....
Chicorette
Messages postés
84
Date d'inscription
mercredi 20 juin 2007
Statut
Membre
Dernière intervention
27 janvier 2016
2
Modifié par Chicorette le 12/12/2014 à 00:30
Modifié par Chicorette le 12/12/2014 à 00:30
Bonjour tout le monde,
oh je suis désolée....
Ce n'est pas toujours facile oui, d'expliquer en long et en large nos souhaits. Donc on peut parfois aussi mal interpréter le besoin! Vous n'avez de plus pas le fichier pour mieux visualiser le cas. Vous êtes tout excusé tout le monde. et tout aussi bons les uns que les autres.
En fait j'ai 11 classeurs que je dois consolider, or une conso ne peut se faire que si des chiffres sont présents (donc j'ai partout des zéros au départ, les utilisateurs remplieront au fur et à mesure, mais ils ne maîtrisent pas tous l'outil. Et donc pour éviter qu'ils suppriment un zéro(qui est invisible car MFC police blanche) et donc me détruire la liaison en conso, je souhaitais au cas ou, leur rappeler à la fermeture, qu'ils sont censés ne pas laisser les cellules de la plage sans aucune valeur (et qu'ils doivent mettre au moins un Zéro.
Ils ont à l'ouverture un message qui donne déjà ces consignes!
Là j'ai trouvé ma solution: la voici:
Oui le nom de la feuille devait être mentionné.
Mes données sont en colonne A et la ligne d'en-tête en ligne 2; tout le reste jusqu'à M300 est la zone à saisir dans le temps...
Mais MERCI franchement! cela m'a permis de revoir deux, trois trucs, et de comprendre le sens de WorsheetFunction.Count...
Je suis désolée pour le quack...ça me gêne!
Merci Merci Jordane45
Chicorette
oh je suis désolée....
Ce n'est pas toujours facile oui, d'expliquer en long et en large nos souhaits. Donc on peut parfois aussi mal interpréter le besoin! Vous n'avez de plus pas le fichier pour mieux visualiser le cas. Vous êtes tout excusé tout le monde. et tout aussi bons les uns que les autres.
En fait j'ai 11 classeurs que je dois consolider, or une conso ne peut se faire que si des chiffres sont présents (donc j'ai partout des zéros au départ, les utilisateurs remplieront au fur et à mesure, mais ils ne maîtrisent pas tous l'outil. Et donc pour éviter qu'ils suppriment un zéro(qui est invisible car MFC police blanche) et donc me détruire la liaison en conso, je souhaitais au cas ou, leur rappeler à la fermeture, qu'ils sont censés ne pas laisser les cellules de la plage sans aucune valeur (et qu'ils doivent mettre au moins un Zéro.
Ils ont à l'ouverture un message qui donne déjà ces consignes!
Là j'ai trouvé ma solution: la voici:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If isRangeEmpty(Sheets(2).Range("B3:M300")) Then 'Range("A2:M300")) Then MsgBox "Attention! La feuille '" & Sheets(2).Name & "' contient au moins une cellule rouge." & Chr(13) & "C'est-à-dire une cellule vide." & Chr(13) & "Veuillez saisir le chiffre zéro dans les cellules censées rester vides." & Chr(13) & "Merci." Cancel = True Else ActiveWorkbook.Save End If End Sub Function isRangeEmpty(Rng As Range) As Boolean isRangeEmpty = (WorksheetFunction.CountA(Rng) <> 3576) End Function
Oui le nom de la feuille devait être mentionné.
Mes données sont en colonne A et la ligne d'en-tête en ligne 2; tout le reste jusqu'à M300 est la zone à saisir dans le temps...
Mais MERCI franchement! cela m'a permis de revoir deux, trois trucs, et de comprendre le sens de WorsheetFunction.Count...
Je suis désolée pour le quack...ça me gêne!
Merci Merci Jordane45
Chicorette
jordane45
Messages postés
38441
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 février 2025
4 737
12 déc. 2014 à 00:52
12 déc. 2014 à 00:52
Bonsoir chicorette.
ne t'en fais pas. ..le quack n'a rien à voir avec la discussion en elle même. ..
l'essentiel est que tu aies obtenu une solution à ton souci.
Bonne continuation.
Ps:pense à mettre le sujet en resolu.
merci.
ne t'en fais pas. ..le quack n'a rien à voir avec la discussion en elle même. ..
l'essentiel est que tu aies obtenu une solution à ton souci.
Bonne continuation.
Ps:pense à mettre le sujet en resolu.
merci.
Chicorette
Messages postés
84
Date d'inscription
mercredi 20 juin 2007
Statut
Membre
Dernière intervention
27 janvier 2016
2
12 déc. 2014 à 01:28
12 déc. 2014 à 01:28
;-) cool MERCI Bonne continuation aussi... et si je n'ai pas d'autres besoins entre temps... Nice fin d'année.