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.
Chatgpt à dit:

Note d’Explication aux Utilisateurs


Objet : Activation des Macros pour l’Utilisation de ce Fichier Excel


Cher(e) utilisateur(trice),


Ce fichier Excel contient des fonctionnalités automatisées qui nécessitent l'activation des macros pour fonctionner correctement. Il a été conçu de manière sécurisée et ne présente aucun risque pour votre poste de travail.


Pourquoi activer les macros ?


Les macros permettent d'exécuter des tâches automatisées, comme le remplissage automatique de données, la génération de rapports ou l'exécution de calculs avancés. Sans leur activation, certaines fonctionnalités du fichier seront inaccessibles ou limitées.


Comment activer les macros ?


Lorsque vous ouvrez ce fichier, un bandeau jaune s'affiche en haut de l'écran avec un message indiquant que des macros ont été désactivées.


  • Étape 1 : Cliquez sur le bouton "Activer le contenu" pour débloquer les macros et permettre au fichier de fonctionner normalement.

Si ce bandeau n’apparaît pas ou si les macros restent désactivées, suivez ces étapes :


  1. Ouvrir Excel sans ouvrir le fichier.
  2. Aller dans Fichier > Options > Centre de gestion de la confidentialité.
  3. Cliquer sur Paramètres du Centre de gestion de la confidentialité.
  4. Sélectionner Paramètres des macros.
  5. Choisir "Activer toutes les macros avec notification" (option recommandée).
  6. Valider avec OK et rouvrir le fichier.

Que faire si l’option est bloquée ?


Si vous ne pouvez pas modifier ces paramètres, cela signifie que des restrictions sont en place sur votre ordinateur. Dans ce cas, merci de contacter votre administrateur informatique afin d'autoriser l’exécution des macros pour ce fichier.


Pour toute question, n’hésitez pas à nous contacter.


Cordialement,
[Votre Nom / Service]
[Votre Contact]
 
Dernière édition:
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.
Bonjour,
je ne veux pas le fermer mais le rendre inaccessible.
Merci
 
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.
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 :
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.
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

Retour