Sauvegarde conditionnelle avec msgbox
#1
Débutant XLPages

Inscription: 23/09/2007

Messages: 11

Posté le : 30-05-2008 15h55
Bonjour à tous,


Je souhaiterais trouver une astuce pour empêcher l'utilisateur de fermer et donc d'enregistrer son travail s'il ne "défiltre" pas une certaine colonne.
En passant par une Msgbox lui demandant de le faire, et que s'il répond NON son travail ne sera pas sauvegardé et que les modifications seront perdues.

S'il répond NON : Message = "Le classeur va être fermé, votre travail ne sera pas sauvegardé et les modifications seront perdues."

S'il répond OUI: Vérifier qu'il à bien défiltré et sauvegarder s'il le souhaite.

J'ai réussi à afficher des msgbox mais je n'arrive pas à mettre la condition qui contrôle si le filtre à bien été enlevé.

Ps: J'ai également figer des cellules et je souhaiterais interdire toutes modifications au suppressions de ce réglage. (oui j'ai des collègues indisciplinés ^^)

Merci de l'aide que vous pourrez m'apporter

Cordialement,
Hors Ligne
Rapport   Haut 

Re: Sauvegarde conditionnelle avec msgbox
#2
Débutant XLPages

Inscription: 20/08/2007

Messages: 6

Système d'exploitation:
PC
Version Excel utilisée:
2003
Posté le : 30-05-2008 18h23
Bonsoir,

Tu nous dit avoir déjà travaillé sur un fichier.
Aussi, pourrais-tu joindre ton fichier zippé (80 ko maximum), exempt de données confidentielles et épuré à l'essentiel du présent problème STP ?
Ca serait sans aucun doute plus simple pour nous de te répondre ainsi.

Cordialement

PS : Vous avez vu, je fais du mDF...
Hors Ligne
Rapport   Haut 

Re: Sauvegarde conditionnelle avec msgbox
#3
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 30-05-2008 18h50
Bonjour Ghandra , spitnolan08, le Forum,
Citation :

Spitnolan08 a écrit:
...Aussi, pourrais-tu joindre ton fichier zippé (80 ko maximum), exempt de données confidentielles et épuré à l'essentiel du présent problème STP ?
Ca serait sans aucun doute plus simple pour nous de te répondre ainsi...

PS : Vous avez vu, je fais du mDF...
Je n'aurais pas dit mieux lol !

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Sauvegarde conditionnelle avec msgbox
#4
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 30-05-2008 20h37
Re,

Une piste toutefois pour notre ami Ghandra :
If Sheets("Feuil1").AutoFilter.Filters(3).On then ...
...teste si le 3ème filtre (3ème colonne ?) du filtre automatique de la feuille Feuil1 est actif ou non.

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Sauvegarde conditionnelle avec msgbox
#5
Débutant XLPages

Inscription: 23/09/2007

Messages: 11

Posté le : 31-05-2008 09h23
Merci pour l'intérêt que vous portez à mon cas ^^

En fait ce que j'ai fait n'a rien de terrible, j'ai juste mis une messagebox à l'ouverture du classeur demandant de ne pas fractionner et defiger les cellules. Et une messagebox en "beforesave" demandant de veiller a défiltrer avant de sauvegarder & quitter. Visiblement insuffisant car les utilisateur clic sur OK et je me demande même s'ils prennent la peine de lire le message ^^.


Citation :
If Sheets("Feuil1").AutoFilter.Filters(3).On then ...
est un bon début, c'est effectivement ce que je veux vérifier, j'ai essayé de le mettre dans le petit exemple joint, mais cela n'empèche pas de sauvegarder et quitter ^^

Encore merci pour votre aide ;)
Pièce jointe:
zip mDF_gestion artt 08v2.zip   [ Taille: 34.62 Ko - Téléchargements: 650 ]
Hors Ligne
Rapport   Haut 

Re: Sauvegarde conditionnelle avec msgbox
#6
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 31-05-2008 11h38
Bonjour Ghandra, spitnolan08, le Forum,

L'évènement Workbook_BeforeSave() possède un argument Cancel (de type Boolean). Tu devrais donc pouvoir faire comme ceci :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As BooleanCancel As Boolean)
    If 
Sheets("Janvier").AutoFilter.Filters(1).On Then
        MsgBox 
"Pas de sauvegarde possible sans avoir enlevé les filtres ^^"
        
Cancel True
    End 
If
End Sub

A noter que tu peux supprimer du même coup l'utilisation de l'évènement Workbook_BeforeClose() qui ne devrait plus servir dans ce cas.
Note également que ce code ne teste que le filtre en première colonne de la seule feuille "Janvier".

Par ailleurs, plutot que d'afficher un message et empêcher la sauvegarde, tu pourrais aussi imposer la désactivation du filtre par macro avant sauvegarde (bien sûr, cette dernière méthode risque fort de ne pas être très appréciée des utilisateurs lorsqu'ils sauvegardent le classeur en séance de travail sans le fermer pour autant).

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Sauvegarde conditionnelle avec msgbox
#7
Débutant XLPages

Inscription: 23/09/2007

Messages: 11

Posté le : 31-05-2008 19h31
Merci pour ce petit code qui devrait faire l'affaire et discipliner un peu les collègues

En revanche je n'ai pas réussi à le faire fonctionner sur toutes les feuilles !

J'ai mis
Citation :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Sheets(Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", _
"Septembre", "Octobre", "Novembre", "Décembre")).AutoFilter.Filters(1).On Then
MsgBox "Pas de sauvegarde possible sans avoir enlevé les filtres ^^"
Cancel = True
End If
End Sub


mais ça ne fonctionne pas :-L
Hors Ligne
Rapport   Haut 

Re: Sauvegarde conditionnelle avec msgbox
#8
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 01-06-2008 01h09
Bonsoir Ghandra,

Une façon de faire :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As BooleanCancel As Boolean)
Dim F As Byte
Dim Ko 
As Boolean
    
For 1 To 12
        
If Sheets(F).AutoFilter.Filters(1).On Then
            Ko 
True
            
Exit For
        
End If
    
Next F
    
If Ko Then
        MsgBox 
"Pas de sauvegarde possible sans avoir enlevé " _
                
"les filtres ^^ (Feuille """ Sheets(F).Name """)"
        
Cancel True
    End 
If
End Sub

Cordialement,
Edité par myDearFriend! le 01/06/2008 11:05:53

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Sauvegarde conditionnelle avec msgbox
#9
Débutant XLPages

Inscription: 23/09/2007

Messages: 11

Posté le : 01-06-2008 09h33
Super !!!

Merci beaucoup myDearFriend!

Cela répond parfaitement à mes besoins

Je suis une nouvelle fois impressionné par la réactivité et la pertinence des réponses.

J'ai juste rajouté un " qui manquait devant --> les filtres pour le msgbox

Je mets le sujet en résolu
Hors Ligne
Rapport   Haut 

Re: Sauvegarde conditionnelle avec msgbox
#10
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 01-06-2008 11h04
Bonjour Ghandra, le Forum,

Tu as tout à fait raison pour le guillemet manquant dans le code présenté, je corrige le message.

Merci de ton retour et pour le résolu

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes