Forcer activation Macro

Bonjour,

Comment etre sur que les macros d'un fichier soit toujours activés à l'ouverture du fichier, quelque soit l'ordinateur.

Est-ce la macro suivante suffit (Feuille Ouverture indique d'activer les macros).

Merci

Private Sub Workbook_Open()

Sheets("TABLEAU").Visible = -1

Sheets("OUVERTURE").Visible = 2

End Sub

Bonjour,

Un vieil exemple :

112macro-obligatoire.zip (81.49 Ko)

Bonjour Patrice33740,

Cela n'oblige pas l'activation des macros sur un classeur précis?

Bonjour Pierro1234,

Voici ce que j'utilise comme méthode

VBA Projest protégé par mot de passe

Toutes les feuilles sont masquées sauf accueil

A l'ouverture un texte t'indique d'activer les macros

A+

Merci bien à tous!

Bonjour Patrice33740,

Cela n'oblige pas l'activation des macros sur un classeur précis?

Le classeur joint dans mon précédent post est un classeur type qui peut servir de base de travail.

On ne peut pas obliger l'activation des macro (et heureusement).

On peut simplement préconiser l'activation pour utiliser un classeur, dans ce cas le code doit se situer dans le classeur.

Il est toujours possible de passer outre cette préconisation.

Bonjour Patrice,

Je comprends,

Merci

Bonjour Pierro1234,

Voici ce que j'utilise comme méthode

VBA Projest protégé par mot de passe

Toutes les feuilles sont masquées sauf accueil

A l'ouverture un texte t'indique d'activer les macros

A+

Bonjour bruno,

Dans la macro de ton fichier, il y a au début:

Option Explicit

Dim Sht As Worksheet

Cela sert à quelque chose?

Merci

Salut Pierro1234

Bonjour bruno,

Dans la macro de ton fichier, il y a au début:

Option Explicit

Dim Sht As Worksheet

Cela sert à quelque chose?

Non à rien c'était juste comme ça

Bien entendu que ça sert à quelque chose

Option Explicit

Oblige à déclarer ses variables et permet d'éviter bon nombre d'erreurs

Dim Sht as WorkSheet

C'est une variable objet pour définir une feuille

@+

Bonjour,

Bonjour bruno,

Dans la macro de ton fichier, il y a au début:

Option Explicit

Dim Sht As Worksheet

Cela sert à quelque chose?

A mon avis, Option Explicit devrait être employé systématiquement :

Dans le VBE / Outils / Options :

vba option explicit

Par contre, pour Dim Sht As Worksheet

1) Je ne cautionne pas, dans ce cas, le fait de déclarer une variable de portée module.

Je préconise de toujours limiter la portée des variables au strict minimum nécessaire.

Dans ce cas, il n'y a aucune raison valable pour laisser vivre la variable dans tout le module quand la procédure est terminée.

J'aurais donc déclaré cette variable dans chaque procédure où elle est utilisée.

2) Le typage n'est pas cohérent avec le code des procédures

En effet, une feuille ("sheet") doit être déclarée As Object car la collection des feuilles (Sheets) ne contient pas que des feuilles de calculs (Worksheet), mais aussi les graphiques (Chart).

J'aurais donc écrit :

Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Sht As Object
  ' Afficher la feuille d'Accueil
  With Sheets("Accueil")
    .Visible = xlSheetVisible
    .Activate
  End With
  ' Masquer les feuilles
  For Each Sht In ThisWorkbook.Sheets
    If Sht.Name <> "Accueil" Then Sht.Visible = xlSheetVeryHidden
  Next Sht
End Sub
Private Sub Workbook_Open()
Dim Sht As Object
  ' Afficher les feuilles
  For Each Sht In ThisWorkbook.Sheets
    If Sht.Name <> "Accueil" Then Sht.Visible = xlSheetVisible
  Next Sht
  ' Afficher la feuille d'Accueil
  With Sheets("Accueil")
    .Visible = xlSheetVeryHidden
    .Activate
  End With
End Sub

Ok,

Merci les Amis!!!!

Salut Patrice33740

Je ne te connais pas, mais tu sors le grand jeu pour un débutant

1) Je ne cautionne pas, dans ce cas, le fait de déclarer une variable de portée module.

Je préconise de toujours limiter la portée des variables au strict minimum nécessaire.

Dans ce cas, il n'y a aucune raison valable pour laisser vivre la variable dans tout le module quand la procédure est terminée.

J'aurais donc déclaré cette variable dans chaque procédure où elle est utilisée.

Toi qui semble si bien connaitre le codage...

cette variable est déclarée en entête juste pour les modules ou elle se trouve, je ne vois pas ce qu'il y a d'embêtant

Si on veut être puriste à l’extrême, je suis d'accord

2) Le typage n'est pas cohérent avec le code des procédures

En effet, une feuille ("sheet") doit être déclarée As Object car la collection des feuilles (Sheets) ne contient pas que des feuilles de calculs (Worksheet), mais aussi les graphiques (Chart).

Wouhaouu... merci monsieur le Master en développement, il est vrai que dans ce cas c'était très utile

.... tu sors le grand jeu pour un débutant ...

Quand un débutant pose une question, j'essaie de lui répondre avec précision.

Je pense que c'est dès le début qu'il faut prendre les bonnes habitudes, quand on a pris des mauvaises habitudes, c'est toujours plus difficile de s'en débarrasser !

Mon premier conseil aux débutants, c'est toujours Option Explicit.

Le second est la conséquence du premier : typer correctement les variables et limiter leur portée selon leur utilité.

Rechercher des sujets similaires à "forcer activation macro"