Microsoft 365 Créer bouton qui désactiver ou active deux codes qui se trouve dans ThisWorkbook

odohe

XLDnaute Occasionnel
Bonjour,
Je sollicite vôtres aides pour la création d'un code VBA afin que je puisse l’intégrer à un bouton ou je pourrais l’activer ou le désactiver en y cliquant dessus
cela afin d’éviter que j'aille le désactiver manuellement sur les lignes de code de Visual Basic

Voici mes deux codes VBA qui se trouvent dans ThisWorkbook que j'aimerai activer et désactiver via un bouton qui se trouvera sur l'une de mes feuilles du classeur

VB:
'Informe Excel que le fichier a déjà été enregistré (cela évite d'avoir une demande d'enregistrement à la fermeture)
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.ThisWorkbook.Saved = True
End Sub
'Empêche les demandes d'enregistrement
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Cancel = True
End Sub

Merci d'avance.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

C'est vous qui avez écrit ce code ?

Ce que vous pouvez faire en autres :
Déclarer dans un module normal une Variable booléenne (ci-dessous MaVariable) et écrire une Sub qui inversera sa valeur (Vrai/Faux) et que vous attribuerez à vos boutons
VB:
Option Explicit

Public MaVariable As Boolean

Public Sub Bascule()
'inverse la valeur true/false de la variable
MaVariable = Not MaVariable
End Sub

Et rajouter " And MaVariable" en fin de lignes existantes, sachant que
True And True = True,
True And False = False

Code:
'Informe Excel que le fichier a déjà été enregistré (cela évite d'avoir une demande d'enregistrement à la fermeture)
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.ThisWorkbook.Saved = True And MaVariable
End Sub
'Empêche les demandes d'enregistrement
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Cancel = True And MaVariable
End Sub
 

odohe

XLDnaute Occasionnel
J'ai bien introduis le code dans un nouveau module et remplacé le code existant de ThiWorkbook par celui que vous m'avez modifié.
Votre astuce fonctionne bien par contre lorsque je ferme le fichier et que je le ré-ouvre il est de nouveau possible d'enregistrer.
J'aimerai que d'origine lors de l'ouverture du fichier il ne soit pas possible l'enregistrement mais seulement une fois que j'aurai cliquer sur le module que vous m'aviez fournit.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Et bien Dans l'évènement Workbook_Open, initialisez MaVariable à Faux.
Dans le module de ThisWorkbook, au-dessus du code vous devez avoir deux listes comme sur l'image ci-dessous ,dans celle de droite vous avez tous les noms est procédure évènementielles du classeur.
Dans celle de gauche, choisissez "Workbook" et celle de Droite "Workbook_Open"
Dans la procédure immédiatement et automatiquement écrite mettez :
VB:
MaVariable = False

1682872444374.png
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 300
Membres
103 173
dernier inscrit
Cerba95