Forcer l'apparition d'une fenêtre à l'ouverture d'Excel...sans avoir activer les

Signaler
Messages postés
336
Date d'inscription
dimanche 3 avril 2011
Statut
Membre
Dernière intervention
12 juin 2012
-
Messages postés
336
Date d'inscription
dimanche 3 avril 2011
Statut
Membre
Dernière intervention
12 juin 2012
-
Bonjour le Forum, me revoici de nouveau pour améliorer mes capacités de programmations...


Au programme cette fois-ci : J'ai un fichier Excel (2007) qui contient des macros. Mon niveau de sécurité concernant les macros est faible. Ce qui a pour conséquence de forcer l'utilisateur à activer les macros sinon pas de macro lol.
Actuellement, à l'ouverture de mon fichier il y a un petit bouton nommé "option" et qui permet d'ouvrir une fenêtre pour choisir d'activer ou non les macros du fichier. Ce bouton je le connais, mais tous les utilisateurs ne le connaissent pas forcément. Du coup c'est contraignant de devoir cliquer sur ce minuscule bouton "option" pour avoir la fenêtre adéquate.

Je suis tombé sur un fichier Excel, uploadé par un utilisateur de ce site, qui fait cela très bien. Mais alors vraiment très bien. En fait trop bien pour mon niveau malheureusement. Je ne parviens donc pas à décrypter son code. Quand on ouvre son fichier Excel, la boite de dialogue permettant de choisir d'activer ou non les macros est directement mise en plein milieu de l'écran. Impossible de la louper !

Du coup j'aimerais reproduire le même effet...Mais je n'y parviens pas. Si quelqu'un à une idée ?
Je post le lien vers le code proposé par cette personne : http://www.vbfrance.com/codes/ASTUCE-AMELIORER-SECURITE-ACCES-DONNEES-CODE-FICHIER-EXCEL_48448.aspx


Je reste dans le coin pour plus d'infos si besoin est.

Je continue de chercher...

Cordialement,

André

15 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Bonjour,

Attends (je suis fatigué).
Est-ce que tout ceci pourrait se résumer à :
"Comment, dès l'ouverture de mon classeur", ne voir rien d'autre qu'un userform sur lequel se trouverait un bouton de comande ?"



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
294
Bonjour,

Pour une fois qu'un question est détaillée, on s'y perd en effet.

Dans la fenêtre d'affichage des macros, tu cliques sur ThisWorkbook et tu pourras écrire :


Private Sub Workbook_Open()
    Form1.show()
End Sub


Et ta forme s'affichera à l'ouverture de ta page.
Messages postés
336
Date d'inscription
dimanche 3 avril 2011
Statut
Membre
Dernière intervention
12 juin 2012
1
Une question, deux réponses me disant que ce n'est pas très clair...

Je ne suis pas très efficace niveau com^^

Un long discours étant moins imagé qu'un dessin, je vous ai mis en pièce jointe 3 photos de la situation. Je vais maintenant simplement commenter ces 3 photos. Ce seras plus simple je pense.

Dans ce qui suit, la sécurité relatives aux macros est sur moyenne (on a un message d’avertissement si le fichier contient des macros)

-PHOTO 1 : Je viens juste d'ouvrir un fichier Excel 2007 qui contient une macro faite par moi. A l'ouverture du classeur, je reçois un petit message d'alerte de la part d'Excel situé en haut à gauche. Les macros ne sont pas automatiquement activées et cela est normal.

-PHOTO 2 : Je viens juste de faire un clic sur le bouton option de la photo 1. Une deuxième fenêtre viens de s'ouvrir. Et c'est précisément cette fenêtre qui m’intéresse... La j'ai le choix d'activer ou non les macros.

-PHOTO 3 : Et la dernière... Il s'agit du fichier Excel posté par l'internaute dont je fait référence en début de post. Je viens juste d'ouvrir le fichier et hop la fenêtre est apparue toute seule en plein milieu de l'écran. Aucune action de ma part.


C'est ce comportement que j'aimerais reproduire moi aussi. C'est à dire qu'à l'ouverture du fichier Excel, je voie apparaitre directement la fenêtre de la photo 2 ou 3. A noter que la fenêtre de la photo 2 est légèrement différente de celle de la photo 3.

Je ne sais pas faire apparaitre cette fenêtre tout simplement^^

J'espère avoir été plus clair, et surtout j'espère que vous pourrez m'aider.

André

PS : Les liens pour les photos :

PHOTO 1 http://www.packupload.com/XZ9I1X2T1IB

PHOTO 2 http://www.packupload.com/17MCU7UJWZ9

PHOTO 3 http://www.packupload.com/17MCU7UJWZ9
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
294
Peux tu en une phrase nous dire ce dont tu as besoin ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Peux tu en une phrase nous dire ce dont tu as besoin ?

Bonjou, Julien39,

Je vais essayer de le faire à la place de SERIEUXETCOOL

A l'ouverture d'un classeur dont les macros sont désactivées et alors que, sur sa machine, le niveau de sécurité est bas, il souhaite afficher directement la boite de dialogue de Excel permettant à l'utilisateur final de choisir s'il veut ou non activer les macros.
Un adverbe mérite explication : "directement". Car, dans l'état actuel des choses, Excel n'affiche cette boîte qu'après avoir cliqué sur un onglet "options" qui accompagne une barre qui s'affiche en dessous du ruban pour signaler la désactivation des macros.
Dur, en effet, d'expliquer cela en peu de mots.


============================================================

A SERIEUXETCOOL.

1) J'ai d'abord cru que la chose pouvait se "régler" à partir d'une configuration de Excel ===>> Non
2) Alors ? Par VBA ? ===>> non plus, par définition, si les macros sont désactivées. !

Reste une seule possibilité, après ce double questionnement ===>>
Les macros du classeurs ne sont pas désactivées d'entrée de jeu ===>> la première qui s'exécute (Workbook_open) , affiche ta fenêtre de dialogue PUIS désactive les macros...
J'ai cherché à connaître l'index de cette boîte dans la collection dialogs j'ai abandonné car plus de 1000 index !)

Je pense toutefois que mon raisonnement n'est pas loin (voire très près) de la réalité.
Alors : ouvre donc un classeur qui aboutit directement à cette boîte ===>> active les macros ===>> regarde ce qu'il y a dans Workbook_open et dis-le nous.
Si pas ça, j'abdique, personnellement .



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Ayé ! Trouvé !
Lorsque tu sauvegardes un xlsm avec macros désactivées ===>>
- Si tu le rouvres sur TA machine === >> l'onglet que tu veux éviter, puis la boîte de dialogue
MAIS :
1) - si tu l'ouvres la toute première fois depuis une autre machine === >> directement la boîte de dialogue.
2) - mais une fois sauvegardé sur son disque dur (avec remise des protection) ===>> situation 1) précédente

C'est Excel qui le gère ainsi et l'a voulu délibérément ainsi et tu ne peux modifier ce comportement. Je suppose que Microsoft à voulu distinguer un cas de l'autre, considérant que la toute première ouverture devait faire l'objet d'une attention partriculière, mais qu'ensuite, le propriétaire du disque restait seul à savoir s'il devait ou non faire un geste de plus (car ainsi, s'il ne veut pas activer, il n'a rien à faire. Alors qu'il lui faudrait répondre que NON si l'affichage de la boîte était forcé).
Microsoft a probablement considéré par ailleurs que :
- si l'utilisateur veut "profiter" des macros ===>> il libère une fois pour toutes de cette inhibition
- si au contraire, il a décidé de ne pas "profiter" des macxros de ce classeur, il n'a pas à subir à chaque ouverture une boîte de dialogue inutile

C'est là, me semble-t-il une décision plutôt raisonnable.

Voilà voilà !
Bon week-end


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
336
Date d'inscription
dimanche 3 avril 2011
Statut
Membre
Dernière intervention
12 juin 2012
1
Voilà Ucfoutu à très bien cerné la problématique que j'essayais d'exposer initialement. C'est exactement cela. J'espère que ma demande seras maintenant plus explicite aux yeux de tous.

Ceci étant fait, Ucfoutu on est bien d'accord sur le fait que cela ne peut se faire par macro car justement elles n'ont pas encore été activées par l'utilisateur. Cette fenêtre apparait donc par un autre moyen.

la première qui s'exécute (Workbook_open) , affiche ta fenêtre de dialogue PUIS désactive les macros


ouvre donc un classeur qui aboutit directement à cette boîte ===>> active les macros ===>> regarde ce qu'il y a dans Workbook_open


J'ai également pensé au WorkBook_open mais je ne suis pas parvenu à isoler les lignes responsables. Je poste tout de même le contenu du WorkBook_open. (il fait référence à des procédures qui sont placées dans un module...)

Voici le code original

Private Sub Workbook_Open()
    Dim CmdBs As CommandBar
    'si les macros on ete activées les feuilles cachées seront affichées
    'dans le cas contraire elle resteront cachées et un message d'erreur apparaitra.
    'j'ai laissé cette option qui fonctionne si ce fichier n'est pas enregistré avec
    'l'option IsAddin a vrai. Dans le cas contraire cela ne sert a rien
    Application.Run ("Opening")
    'desactive la barre "Boîte à outils Contrôles"
    For Each CmdBs In Application.CommandBars
        Select Case CmdBs.Name
            Case "Control Toolbox", "Boîte à outils Contrôles" 'cas Anglais ou Français
                CmdBs.Enabled = False
        End Select
    Next
    'initialisation de la classe
    Set XlAppli.XL = Excel.Application
    Call XlAppli.InitClass
    'on interdit l'utilisation des racourcis Alt+F11 et Alt+F8
    Application.OnKey "%{F11}", "MessageDeLimitation"
    Application.OnKey "%{F8}", "MessageDeLimitation"
    DoEvents
    'ce fichier a été sauvé avec l'option IsAddin a vrai donc on le passe a false
    'pour lui redonner toutes ses fonctions de Workbook classic
    If ThisWorkbook.IsAddin True Then ThisWorkbook.IsAddin False
    'si le VBE est ouvert on le ferme mais pour que cela fonctionne l'option
    'de securite "Faire confiance au projet Visual Basic" doit etre cochée
    On Local Error Resume Next
    If Application.VBE.MainWindow.Visible True Then Application.VBE.MainWindow.Visible False
    If Not Err = 0 And CLng(Application.Version) > 9 Then ModifSLevel
    MyFileIsOpen = True
End Sub


Ainsi que la procédure placée dans le module

Sub Opening()
    Dim MySheet As Worksheet
    'Affiche toute les feuilles a l'exception de la feuille starting notice
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    ThisWorkbook.IsAddin = False
    For Each MySheet In ThisWorkbook.Worksheets
        If Not MySheet.Name = "starting notice" Then
            MySheet.Visible = True
        End If
    Next
    If Sheets("starting notice").Visible True Then Sheets("starting notice").Visible xlVeryHidden
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Application.EnableEvents = True
    ThisWorkbook.Saved = True
End Sub


Voila les éléments du classeurs. Je rappel que l'intégralité du code est visible à cet adresse "http://www.vbfrance.com/codes/ASTUCE-AMELIORER-SECURITE-ACCES-DONNEES-CODE-FICHIER-EXCEL_48448.aspx" et que le fichier Excel est également téléchargeable si besoin est.


En ce qui concerne le dernier post d'Ucfoutu, il y a une chose que je ne comprends pas encore. J'ai téléchargé le fichier Excel qui contient tout le code. Je l'ai enregistrer sur mon dur. A chaque fois que je le lance, le comportement est TOUJOURS le même. C'est à dire qu'à chaque ouverture j'ai la fenêtre directement en plein milieu de l'écran qui m'invite à faire le choix d'activer ou non les macros. Même si j'enregistre le fichier sous un autre nom, si je le modifie et enregistre ensuite. Bref à son ouverture c'est toujours pareil. Et c'est tant mieux car j'aimerais en faire de même personnellement. Sauf que moi j'ai toujours le petit bouton "option" puis ensuite la boîte de dialogue.

Je ne comprends toujours pas pourquoi avec son code ça fonctionne. Je ne trouve pas les lignes qui sont en rapport avec ce phénomène. Et je ne peux pas utiliser la macro en mode pas à pas détaillé ni même l'enregistreur de macro car justement cette fenêtre arrive en tout premier lieu.


Il y a un truc logique derrière tout ça c'est sur^^ Ne reste plus qu'à trouver la cause.

André

Ps : son fichier est enregistré en 97-2003. Et ne peux être enregistré que sous ce format la. Peut-être est ce une fonctionnalité proposée par Office 2003 et non reprise sous 2007 non ???
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Ben ... je ne sais pas quelles manoeuvres tu as faites, pour ton expérimentation de comportement, mais celles que j'ai faites personnellement n'aboutissent pas à ta constatation !
J'ai téléchargé par exemple encore cet après-midi un xlsm d'un site anglophone que je ne veux pas citer ici.
A son ouverture ===>> la boite en plein au centre.
J'ai autorisé les macros ===>> lu les macros
J'ai ensuite redéfini l'inhibition des macros
Puis j'ai enregistré
Depuis : plus de boîte au centre (uniquement l'avertissement dans le ruban).
Et cette philosophie Microsoft est on ne peut plus normale. Pourquoi ? ===>>
- l'inhibition des macros correspond à un souci de sécurité
- le destinataire du fichier décide, à sa première ouverture :
--- soit que le classeur est sans danger et il autorise les macros, puis enregistre sans les inhiber (pourquoi les inhiber ensuite ? Si un mal devait être généré par les macros, ce serait déjà trop tard !)
--- soit que le classeur est quelque peu suspect (pour telle ou telle autre raison, nptamment sa provenance) et qu'il ne convient pas d'ouvrir les macros.

Pourquoi, dans ce dernier cas de figure, lui "casser" ensuite systématiquement "les pieds" avec une fenêtre inutile, dès lors qu'il a déjà fait savoir qu'il ne voulait pas des macros ?
Je trouve que pour une fois, l'équipe de Bill a assez bien réfléchi, non ?



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
336
Date d'inscription
dimanche 3 avril 2011
Statut
Membre
Dernière intervention
12 juin 2012
1
Ben euh je suis assez d'accord avec toi pour le coup.

En effet, si on pouvait avoir ce message une seule et unique fois à l'ouverture du fichier Excel et que ensuite, après avoir accepté les macros on n'ai plus ce message je serai alors content.
Sauf que moi pour le moment j'ai cela :

Avec mes propres fichiers : J'ai systématiquement le bouton option, puis la fenêtre pour activer ou non les macros. Et ce à chaque ouverture de mon fichier.

Avec le fichier que je propose en téléchargement, à chaque ouverture j'ai toujours la fenêtre principale qui me demande d'activer ou non les macros.

Entre ces deux situations, je choisis allègrement la deuxième qui m'invite directement à choisir plutôt que la situation une qui demande plus de clics et qui est beaucoup moins visible pour le coup.

Je rappel que les deux situations aboutissent au même constat final, on est obligé d'activer les macros. C'est juste que la situation deux est moins casse pied et oblige à faire un choix d'entrée de jeu. Tendis que la situation une n'oblige à rien et n'est pas visible pour qui ne sait pas qu'il y a des macros à activer avant de démarrer.

Et évidement je ne sais pas reproduire la situation deux qui m’intéresse^^
Personnellement et c'est juste mon avis, si un fichier Excel possède des macros c'est qu'elles doivent servir. La vrai question est "Voulez vous activer les macros du fichier ?". Alors pour moi, inutile de mettre un minuscule bouton "option" mais directement la grande fenêtre pour faire son choix. C'est vraiment plus rapide et plus simple. Bref encore une fois ma logique semble bien différente de celle des autres

Sinon dans mes recherches je suis arrivé sur une solution alternative. Je ne l'ai pas encore testée mais vais le faire d'ici 30 min. L'objectif ? Certifier une bonne fois pour toute les macro. Comme ça un seul message pour activer les macros. Ainsi sur chaque machine, l'utilisateur accepte la première fois les macros et ensuite elles sont directement chargées. Sa parait simple faut que je teste pour voir si c'est valide.

André

Ps : Ucfoutu as tu une petite idée sur comment se fait il que le fichier propose toujours la fenêtre dès son ouverture ? Et cela sans même avoir accepté les macros. Je suis curieux de comprendre le truc.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Ps : Ucfoutu as tu une petite idée sur comment se fait il que le fichier propose toujours la fenêtre dès son ouverture ? Et cela sans même avoir accepté les macros. Je suis curieux de comprendre le truc.

Tout est dans ce que j'ai souligné.
Tant que tu n'as pas accepté veut dire que tu n'as pas encore accepté de courir le risque et Excel considère qu'il doit t'en informer.
Dès que tu as accepté, par contre, les choses sont différentes (puisque le mal aurait, si présent, déjà été fait). Dès lkors, plus de fenêtre nécessaire. Mais si toi-même, pour une raison x (peut-être pour l'envoyer à quelqu'un d'autre... qui, lui, aura droit à la boîte de dialogue ) tu inhibes à nouveau ===>> Excel se dit que :
- si tu l'as fait, tu le sais et sais pourquoi.
- si pour l'envoyer à un ami, tu le sais
- si parce-que tu ne veux plus permettre (pour une raison x) les macros. OK, mais inutile alors de t'embêter avec une fenêtre sur laquelle cliquer à chaque fois


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
336
Date d'inscription
dimanche 3 avril 2011
Statut
Membre
Dernière intervention
12 juin 2012
1
Dsl Ucfoutu mais malgré toutes tes explications (et elles sont claires crois moi) je ne parviens pas à comprendre.

Sur ce coup la je vraiment je reste perplexe.

Voila le truc qui me fait arracher les cheveux : J'ai un fichier qui fait une chose qui me séduis beaucoup. J'essaie donc de reproduire le même phénomène par moi même mais je n'y parviens pas. Pourquoi je n'y arrive pas alors que c'est visiblement possible puisque le fichier que j'ai téléchargé le fait très bien lui !

C'est vraiment ça que je ne capte pas. Comment diable se fait t'il que le fichier que j'ai téléchargé fasse un truc que ni moi ni toi ne soyons capable de reproduire ???

C'est sur ce point la que je ne suis pas très en accord avec toi.

Pour le reste je comprends bien.

Dans ce cas la, je me dis que peut être tout se passe dans le before_Close ??? L'astuce ne serait elle pas de changer un paramètre pour être sur qu'à la réouverture du fichier la boite de dialogue apparaisse à coup sur ???


Je n'ai rien compris sinon
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Aïe, André, Aïe ...
C'est tout simplement ainsi (et pour les raisons que je t'ai exposées) que l'a voulu Microtonton.
Si tu en veux la preuve, je vais t'envoyer un classeur qui, maintenant, n'ouvre pas spontanément la boîte de dialogue chez moi.
Quand toi, tu l'ouvriras ===>> il ne t'affichera (chez toi) !
Tu veux çà ?
Mieux encore : tu m'envoies un classeur qui "ne le fais pas". Je le renomme, te le renvoie ===>>> et il le fera sans aucune intervention de ma part.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
336
Date d'inscription
dimanche 3 avril 2011
Statut
Membre
Dernière intervention
12 juin 2012
1
Tu ne vas sans doute pas me croire mais je pense avoir trouvé comment faire afficher cette fameuse fenêtre au lancement d'exel !!!!!!

Je viens de trouver ça tout seul complètement par hasard lol. Bon rien n'est encore sur. Je termine mes mises au points mais maintenant je sais expliquer comment obtenir cette fenêtre au lancement d'Excel à chaque fois, sans activer les macros (enfin une solution parmi d'autre je pense)

C'est dingue et c'est surtout très simple en fait. Bon je ne préfère pas trop m'avancer sans avoir testé. Je termine d'orienter tous mes tests sur ma découverte et si ça fonctionne je viendrai en faire part. Et puis si ça ne fonctionne pas je dirai quand même ce que j'ai testé^^

A taleur et pourvu que ça fonctionne !

André

Ps : Je veux bien t'envoyer un fichier Excel 2007 qui contient une macro vide. Tu le modifie et me le renvoie en Excel 2007 de façon à ce que j'ai toujours la fenêtre en plein milieu de l'écran dès l'ouverture du fichier. J'avoue que ça m’intéresse BEAUCOUP ça. Voici le lien de téléchargement...

VERSION 2003 http://www.packupload.com/1H8K9FNFP8D

VERSION 2007 http://www.packupload.com/LC5CC1MBTQ1
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Ce ne sont pas des xlsm !
Bon, je vais chercher sur le net un fichier xlsm à télécharger et t'en donner le lien moi-même.
Ce sera plus facile que de m'inscrire (ce que je ne veux par ailleurs pas) à un site de dépôt.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
336
Date d'inscription
dimanche 3 avril 2011
Statut
Membre
Dernière intervention
12 juin 2012
1
Bon ben après avoir essayé de mettre au point mon code toute la soirée je jette l'éponge car je ne parviens pas à combler totalement mes attentes

Pourtant j'y suis presque. J'ai fait 95 % du boulot, et pour ça je suis content. Mais comme il me manque les 5 % ben je suis pas satisfait de moi.

Je dévoile ma stratégie car elle est plus que fonctionnelle. Je suis tombé par hasard sur cette solution en cherchant à masquer TOUTES les feuilles de mon classeur. Pour ce faire j'ai du masquer la fenêtre (Menu Fenêtres / Masquer). Et en faisant cela, quand on ferme le classeur puis que l'on l'ouvre de nouveau...et bien cette fameuse fenêtre s'ouvre elle aussi enfin !!!
J'ai mis du temps, mais moi aussi je suis parvenu à faire apparaitre cette fenêtre coup pour coup à l'ouverture du fichier excel. Bon j'avoue c'est un coup de chance de ma part la^^

Bref vous l'aurez compris, une manière simple de faire apparaitre cette fenêtre est de masquer le classeur avant de fermer le fichier. Ainsi à son ouverture il n'y a aucune feuille affichée, et la fenêtre pour activer les macros se déclenche d'elle même comme par enchantement. Ensuite une fois la macro acceptée, il suffit de réafficher la fenêtre pour retrouver le classeur dans son état initial. Un vrai jeu d'enfant. On gère les fenêtres comme les feuilles d'un classeur (je ne connaissais pas ce truc des fenêtres en plus^^) -> Cela répond donc en partie au post du coup.

Voici le code


Dans un module

Public admis As Boolean 'Variable publique pour gérer le masquage du classeur


Dans un UserForm

Private Sub CommandButton1_Click()

ThisWorkbook.Close 'Bouton qui permet de fermer le classeur ET le fichier Excel en un seul coup

End Sub


Enfin dans ThisWorkbook

Private Sub Workbook_Open()

admis =   True 'Variable publique

UserForm1.Show 'UserForm qui contient un bouton pour quitter Excel SANS enregistrer !!!

ThisWorkbook.Windows(1).Visible = True 'Pour afficher le classeur

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

ThisWorkbook.Windows(1).Visible = False 'Pour masquer le classeur

admis = False 'Variable publique

'DisplayAlerts = False
'ActiveWorkbook.Close 'savechanges:=False
'Application.Quit
'DisplayAlerts = True

End Sub

Private Sub Workbook_WindowActivate(ByVal Wn As Window)
 
If admis = False Then
    ThisWorkbook.Windows(1).Visible =  False 'Pour masquer le classeur en permanance une fois celui ci masqué
End If

End Sub



Mais, et il y encore un mais, le problème réside dans la fermeture du classeur et/ou du fichier Excel. Le fait de masquer le classeur avant de quitter Excel semble poser problème. Du coup Excel ferme le classeur mais laisse ouvert Excel.
C'est pénible. J'ai essayé pleins de choses pour parvenir à mes fains mais rien à faire. Pourtant ça doit être la partie la plus simple du problème je pense. Une solution que j'aimerais essayer et qui pourrais fonctionner serait d'utiliser une ligne de code pour fermer le fichier Excel. Un truc du genre "Kill "chemin du fichier.Xlsm". Mais je ne sais pas faire, et je ne sais pas si c'est une bonne idée. Dans le même genre je me dit qu'on pourrait tuer le processus peut-être ? Mais ça fait gros armement pour pas grand chose^^

Si quelqu'un aurait une idée pour faire en sorte de fermer Excel en une seule action, sans enregistrer, tout en masquant le classeur de sorte d'avoir la fenêtre pour activer les macros à chaque lancement ce serait cool.

Je me dois de rappeler un fait important, ce code s'inscrit dans la suite logique de mon projet personnel. C'est pourquoi pour fermer Excel il faut ABSOLUMENT passer par un bouton situé dans un UserForm et qui permet, en double cliquant dessus, de quitter Excel SANS enregistrer. On aura au préalable enregistré le classeur via un autre bouton. Donc si on fait quitter, c'est que l'on veut quitter sans enregistrer.

Ucfoutu tu reconnaitras ce code car c'est toi qui à l'origine me l'a proposé^^

Voici les morceaux principaux pour info

Un premier Userform contenant 2 boutons

Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'Quand on double-clic pour lancer

permis    = True
ThisWorkbook.Close savechanges:=False
DoEvents
permis = False



End Sub

Private Sub CommandButton2_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'Quand on double-clic pour enregistrer

permis = True
ThisWorkbook.Save
DoEvents
permis = False

End Sub



Et enfin dans ThisWorkBook,

Public Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  
  If Not permis Then
     Cancel = True
     UserForm9.Show 'Affiche l'UserForm9
  End If
  
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

  If Not permis Then
     Cancel = True
     UserForm9.Show 'Affiche l'UserForm9
  End If

Application.Quit

End Sub



Et voila, l'UserForm9 contient le message indiquant à l'utilisateur de bien vouloir enregistrer et/ou quitter via les deux boutons prévus à cet effet.

Voila vraiment dsl si c'est compliqué à suivre mais il faut bien tout ça pour comprendre. Ça devient une programmation qui demande un peu plus de rigueur qu'un simple dépannage. Mais en lisant tout bien, ce n'est pas si compliqué au fond.

Cordialement,

André. Bon je vais me coucher je suis HS