Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 Forcer les utilisateurs à l'activation des macros

  • Initiateur de la discussion Initiateur de la discussion roopih
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

roopih

XLDnaute Nouveau
Bonjour,

But : Je veux forcer les utilisateurs du classeur à activer les macros (via Activer le contenu), si non le classeur se ferme automatiquement.
A l'ouverture du classeur Onglet "MACROS" s'affiche, rappelons que l'activation des macros est indispensable.
Si l'utilisateur "active le contenu" l'onglet "MENU" s'affiche, si non le classeur les onglets deviennent inaccessibles.
A la clôture du classeur et après saisie sur les onglets DATA1, DATA2, DATA3, ces onglets ne doivent pas être masqués en "veryhidden", du fait que je ne peut pas importer les tables de ces onglets via power query.

NB: L'utilisation du Xlveryhidden sur l'ensemble des onglets fonglets DATA1, DATA2, DATA3 altère l'importation des données via powerquery.

Merci d'avance pour votre aide
 
Dernière édition:
Bonjour roopih, job75, le forum

Je veux forcer les utilisateurs du classeur à activer les macros (via Activer le contenu), si non le classeur se ferme automatiquement.
C'est antinomique, si les macros ne sont pas activées, le classeur ne peut pas se fermer automatiquement.
Vous pouvez le rendre inutilisable en cas de macros désactivées mais pas le fermer.

Cordialement,
Bernard_XLD
 
Bonjour,
La réponse est dans la question.
Peut on écrire une macro qui oblige l'utilisateur à activer les macros ?

Par définition une telle macro ne pourrait fonctionner qui si les macros sont activées et en conséquence inutile.

En revanche masqué les onglets et verrouillé le classeur obligerait l'utilisateur à te demander pourquoi il ne peut pas utiliser ton fichier.

Une explication te permettra de l'informer qu'il faut obligatoirement activer les macros. Tu peux même écrire un petit laïus l'expliquant sur la page d'accueil.
 
Dernière édition:
Bonjour à tous,
@roopih
Il est bien évident qu'il ne soit pas possible d'activer les macros, ce serait la porte ouverte à tout.
Par contre vous avez la possibilité de sécuriser un emplacement qu'il soit sur le réseau ou non, pour se faire vous devez aller dans Fichier/Options/Centre de gestion de la confidentialité/Paramètres du Centre de gestion de la confidentialité.
Dans le menu de gauche :
  • Sélectionnez Emplacements approuvés
  • Si sur le réseau. Cliquez sur Autorisez les emplacements approuvés sur mon réseau.
  • Cliquez sur Ajouter un emplacement.
Voilà Les fichiers qui seront dans le répertoire seront approuvé et s'ouvriront directement.
 
Si la sécurisation du fichier me semble une bonne façon d'obliger l'utilisateur à activer les macros, l'utilisateur ne demandait pas comment sécuriser son fichier mais comment obliger l'utilisateur à activer les macros.

Il est évident que dans la solution que je propose, seule une macro pourra déverrouiller le fichier si l'utilisateur autorise les macros.

Sur la page d'accueil tu préviens l'utilisateur qu'il ne pourra rien tirer de ce fichier s'il n'active pas les macros.

Idéalement tu lui expliques ce qu'il faut faire pour activer les macros ou de ce tourner vers son administrateur système.
 
Dernière édition:
Bonjour,
je ne veux pas le fermer mais le rendre inaccessible.
Merci
 
Bonjour,

Je vous serai reconnaissant si j'arrive à le rendre inaccessible, mais
Bonjour roopih, le forum,

Fichier .xlsx, il n'y a pas de macros à activer...

A+
Bonjour,

c'est vrai, juste un exemple.
le fichier peut être enregistré sous .xlsm.

Merci.
 
Trop de demandes sur ce forum n'ont ni queue ni tête, c'est de pire en pire et vraiment pénible.
Bonjour,
Mes respects Monsieur.
J'ai créer un fichier "volumineux" pour le suivi des réalisations budgétaires, intégrant des macros et des tables de données, le problème est apparu quand l'utilisateur, ne veut pas activer les macros, les codes vba ne fonctionnent pas.

La solution trouvé sur les forums de masquer touts les onglets en "propriété XlsveryHidden" ne m'aide pas, parce que je consolide lesdites tables dans le classeur de plusieurs utilisateurs via power query, ce dernier ne fonctionne pas si les onglets sont masquées.

Alors, j'essaie de trouver une solution de l'obliger à "activer le contenu" donc activer les macros ou rendre les onglets inaccessibles.

Désole, si je me suis fais mal exprimé ma demande.

Respectueusement.
 
Bonjour,
je ne veux pas le fermer mais le rendre inaccessible.
Merci
Désolé, mais je ne vois pas où j'ai parlé de le fermer !

Il me semblait parler de le rendre inaccessible 😝

Tu te noie dans un verre d'eau.

Si ton classeur doit impérativement utiliser des macros, quelle importance que power query fonctionne ou pas.

1 Si l'utilisateur n'active pas les macros pas de power query.
2 l'utilisateur activite les macros ce qui lance la macro Open qui:
A déverrouille le classeur
B active les onglets
C actualise Power query
D exécute la ou les macros initialement prévu a l'ouverture de classe.
Bien évidemment sur l'événement close du classeur on masque les onglets et on verrouille le classeur.
 
Dernière édition:
Vous continuez, croyez-vous que ceci ait un sens :
Car justement si l'on active les macros les feuilles masquées s'affichent lors de l'exécution de la macro.
 
Vous continuez, croyez-vous que ceci ait un sens :

Car justement si l'on active les macros les feuilles masquées s'affichent lors de l'exécution de la macro.
Bonjour,
Mon but :
1- Obliger à activer les macros à l'ouverture du classeur et afficher les feuilles pour la saisie, si non le rendre inaccessible ;
2- A la fermeture du classeur les onglets (contiennent des tables de données) seront démasqués du fait que la consolidation des différents classeurs via power query nécessite que les onglets restent affichés.
Comment faire pour obliger l'activation des macros et en même temps permettre la consolidation via power query (onglets démasqués)?
Merci
 
Voici le code complet avec la gestion des onglets, Power Query et la sécurité du classeur.




Fonctionnement


  • Si les macros ne sont pas activées → Les onglets restent cachés et Power Query ne s'actualise pas.
  • Quand tu ouvres le fichier avec macros activées(Workbook_Open) :
    1. Déverrouille le classeur.
    2. Affiche tous les onglets.
    3. Actualise Power Query.
    4. Exécute les macros prévues.
  • Quand tu fermes le fichier(Workbook_BeforeClose) :
    1. Masque tous les onglets sauf "Accueil".
    2. Verrouille le classeur.
    3. Sauvegarde avant fermeture.



Code VBA (À mettre dans ThisWorkbook)

Code:
Option Explicit

' ==> À l'ouverture du classeur
Private Sub Workbook_Open()
    ' 1. Déverrouille le classeur
    Me.Unprotect "mot_de_passe" ' Remplace "mot_de_passe" par ton mot de passe

    ' 2. Affiche tous les onglets
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.Visible = xlSheetVisible
    Next ws

    ' 3. Actualise toutes les requêtes Power Query
    Dim qt As QueryTable
    Dim cn As WorkbookConnection

    ' Ancienne méthode (QueryTables)
    For Each qt In ThisWorkbook.Sheets(1).QueryTables
        qt.Refresh
    Next qt

    ' Nouvelle méthode (Connections Power Query)
    For Each cn In ThisWorkbook.Connections
        cn.Refresh
    Next cn

    ' 4. Exécute les macros initiales
    Call MacrosInitiales
End Sub

' ==> Avant la fermeture du classeur
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ' 1. Masque tous les onglets sauf "Accueil"
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> "Accueil" Then
            ws.Visible = xlSheetVeryHidden
        End If
    Next ws

    ' 2. Verrouille le classeur
    Me.Protect "mot_de_passe", True, True

    ' 3. Sauvegarde avant fermeture (optionnel)
    ThisWorkbook.Save
End Sub

' ==> Macro pour exécuter les actions initiales
Sub MacrosInitiales()
    ' Mets ici les macros à exécuter à l’ouverture
    MsgBox "Les macros initiales sont exécutées.", vbInformation, "Information"
End Sub




Explication


Sécurisation :


  • Si les macros ne sont pas activées → Seul "Accueil" reste visible.
  • Protection automatique du classeur à la fermeture.

Onglets et Power Query :


  • Tous les onglets sont affichés à l'ouverture.
  • Power Query s'actualise.
  • Tous les onglets sauf "Accueil" sont masqués à la fermeture.

Sauvegarde automatique :


  • ThisWorkbook.Save → Sauvegarde avant fermeture (modifiable si besoin).


 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…