Certificat sur macro

helene51

XLDnaute Junior
Bonjour le forum,

Je reviens vers vous car de nouveau j'ai quelques petits problèmes dans mes codes !
J'ai créé un certificat pour mes macros afin de ne plus avoir à valider l'activation des macros à l'ouverture de mon fichier. Cela fonctionne très bien.
Le problème est que j'ai plus de 30 fichiers auxquels je dois appliquer ce certificat.
Y a-t-il un moyen (un morceau de code à ajouter ou autre) pour que je n'ai pas à appliquer mon certificat à chacun des fichiers 1 à 1 mais le faire en "groupé" ?
Merci pour vos réponses.
 

helene51

XLDnaute Junior
Re : Certificat sur macro

Bonjour le forum,

Merci jeanpierre pour cette réponse même si elle m'embete un peu... le boulot risque d'être long.

Pour contourner ce problème ne puis-je pas, si l'utilisateur clique sur "Désactiver les macros" faire en sorte que le fichier ne s'ouvre pas ou qu'il y ait un message d'erreur qui apparaisse ou qu'une page vierge s'affiche ?

J'ai trouvé des choses dans ce genre mais je ne comprend pas le code pour l'adapter à mon cas :

Code:
Private Sub Workbook_BeforeClose (Cancel as Boolean)
Application.ScreenUpdating = False
Sheets(1).Visible = True

For i = Sheets.Count To 2 Step -1
Shhets(i).Visible = xlVeryHidden
Next i
End Sub

Private Sub Workbook_Open()
Application.ScreenUpdating = False
For Each sh In Sheets
sh.visible = True
Next sh

Sheets(1).Visible = xlVeryHidden
End Sub

Quelqu'un aurait-il une piste pour mes recherches ?
 

jeanpierre

Nous a quitté
Repose en paix
Re : Certificat sur macro

Bonjour helene51, le forum,

Essaie ceci :

Private Sub Workbook_beforesave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Application.ScreenUpdating = False
ActiveWorkbook.Worksheets("Feuil1").Activate

For i = 2 to Sheets.Count
Sheets(i).Visible = xlVeryHidden
Next i

End Sub

Ainsi, si les macros ne sont pas activées, seule la Feuil1 sera visible

et ton : Private Sub Workbook_Open(), inchangé. Macros activées, Feuil1 cachée et les autres visibles.

Je pense que ce doit être bon.

A nous dire et bonne journée.

Jean-Pierre
 

helene51

XLDnaute Junior
Re : Certificat sur macro

Merci jeanpierre pour cette réponse, j'ai un peu arrangé le code avec ce que j'avais déjà. Cela donne ceci :

Code avant fermeture :
Code:
Private Sub Workbook_beforeclose(Cancel As Boolean)
Dim i As Integer

Application.ScreenUpdating = False
Sheets(1).Visible = True
For i = 2 To Sheets.Count
    Sheets(i).Visible = xlVeryHidden
Next i

If ThisWorkbook.ReadOnly = True Then
    ThisWorkbook.Saved = True
End If

End Sub

Code avant sauvegarde :
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

If ThisWorkbook.ReadOnly = True Then
    Cancel = True
    MsgBox "Vos droits sur ce fichier ne vous permettent pas de le sauvegarder", vbExclamation
End If

End Sub

Code à l'ouverture :
Code:
Private Sub Workbook_Open()
Dim mdp As String

mdp = InputBox("Ce fichier va s'ouvrir en lecture seule, vous ne pourrez faire aucune modification. Entrez votre mot de passe pour déverrouiller l'accès.", "Mot de passe recquis")

If mdp = "mdp" Then
Application.ScreenUpdating = False
For Each sh In Sheets
    sh.Visible = True
Next sh
Else
    ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
End If
Application.ScreenUpdating = False
For Each sh In Sheets
    sh.Visible = True
Next sh
Sheets(1).Visible = xlVeryHidden

End Sub

Cependant, après de nombreux tests cela ne convient pas encore parfaitement et je suis à court d'idées.

2 problèmes :
1/ Quand j'ouvre mon fichier avec mdp, et que je veux l'enregistrer, si je clique sur "Annuler" (Boite de dialogue : Oui / Non / Annuler pour l'enregistrement) je tombe sur la Feuil1 alors que je souhaite retourner à l'affichage de toutes les autres feuilles mais pas la Feuil1.

2/ A l'ouverture je souhaite ne rien avoir en fond d'écran de ma msgbox, alors que là la Feuil1 est affichée d'office.

Comment modifier mon code pour que cela soit conforme à ce que je souhaite avoir ?
 

jeanpierre

Nous a quitté
Repose en paix
Re : Certificat sur macro

Re,

Regarde si cela te convient. Pas très patient pour les test, moi.

J'ai commenté BeforeSave, double emploi et amalgame avec beforeclose, déplacé aussi quelques instructions.

Désolé de ne pas avoir fait plus vite, mais peu devant l'ordi. ce tantôt.

Bonne soirée

Jean-Pierre
 

Pièces jointes

  • Classeur pour essai.zip
    9 KB · Affichages: 35
  • Classeur pour essai.zip
    9 KB · Affichages: 33
  • Classeur pour essai.zip
    9 KB · Affichages: 32

helene51

XLDnaute Junior
Re : Certificat sur macro

Bonjour le forum, bonjour jeanpierre,

Merci pour la réponse et ta solution fonctionne très bien.

Juste une petite question, j'ai vu que tu utilises "Application.visible = false" pour éviter l'affichage comme je l'avais souhaité mais y-a-t-il un code pour avoir en fond Excel ouvert sans aucune feuille affichée ?

Merci.
 

jeanpierre

Nous a quitté
Repose en paix
Re : Certificat sur macro

Bonjour helene51, le fil,

Merci de ton retour.

Je viens de rentrer, et pour te répondre, je ne sais pas et vais y réfléchir.

Sauf à ouvrir une deuxième session d'Excel, première idée à froid, pas facile.....

Je reviens si j'ai une idée.

Bonne journée.

Jean-Pierre
 

jeanpierre

Nous a quitté
Repose en paix
Re : Certificat sur macro

Re,

A réfléchir, je viens de te dire une grosse boulette, engourdi de la route par trop de brouillard et semi-verglas...

Sauf à ce que d'autres prouvent le contraire, ce n'est pas possible.

Mais je continue à cogiter.

Edit : Ouvrir la première feuille avec un fond gris, par exemple, voire masquer lignes et colonnes.....
 
Dernière édition:

helene51

XLDnaute Junior
Re : Certificat sur macro

Bonjour le forum, jeanpierre, James007,

Merci pour vos réponses.

En re-testant mon fichier je me suis aperçue que, si le fichier est ouvert en écriture (mot de passe ok) et que je le ferme, là une boite de dialogue d'enregistrement s'affiche et mes feuilles se cachent, ne reste plus que la Feuil1.
Si dans cette boite de dialogue je choisi "Annuler", je reste bloquée sur la Feuil1 au lieu de faire ré-apparaître les autres feuilles cachées.
C'est un problème !

Donc soit il faut déactiver la possibilité de cocher "Annuler", soit faire réapparaître les autres feuilles quand on clique sur "Annuler".

Mais là je n'ai pas le code ....
Laquelle des 2 possibilités est la plus réalisable ?
 

helene51

XLDnaute Junior
Re : Certificat sur macro

Re,

Il y a beaucoup plus simple que ma demande finalement.
J'ai mis une msgbox demandant à l'utilisateur de choisir la sauvegarde ou non.
Mais un problème subsiste : je dois valider 2 fois "non" pour ne pas enregistrer. Je ne comprends pas pourquoi. Quelqu'un a-t-il une explication ?

Code:
Private Sub Workbook_beforeclose(Cancel As Boolean)
Dim choix
If ThisWorkbook.ReadOnly = True Then 'cette partie fonctionne
    MsgBox "Vos droits sur ce fichier ne vous permettent pas de le sauvegarder", vbExclamation
    Application.ScreenUpdating = False
    Sheets(1).Visible = True
    For i = 2 To Sheets.Count
        Sheets(i).Visible = xlVeryHidden
    Next i
    ThisWorkbook.Saved = True
Else
    [B]choix = MsgBox("Voulez-vous enregistrer vos modifications ?", vbYesNo, "Enregistrement")
    If choix = vbYes Then ThisWorkbook.Save
    If choix = vbNo Then ThisWorkbook.Close SaveChanges:=False[/B]
End If

End Sub

Merci d'avance.
 

James007

XLDnaute Barbatruc
Re : Certificat sur macro

Bonjour,

Tu as du oublier ...
Cancel = True
Code:
Private Sub Workbook_beforeclose(Cancel As Boolean)
Dim choix
If ThisWorkbook.ReadOnly = True Then 'cette partie fonctionne
    MsgBox "Vos droits sur ce fichier ne vous permettent pas de le sauvegarder", vbExclamation
    Application.ScreenUpdating = False
    Sheets(1).Visible = True
    For i = 2 To Sheets.Count
        Sheets(i).Visible = xlVeryHidden
    Next i
    ThisWorkbook.Saved = True
Else
    choix = MsgBox("Voulez-vous enregistrer vos modifications ?", vbYesNo, "Enregistrement")
    If choix = vbYes Then ThisWorkbook.Save
    If choix = vbNo Then ThisWorkbook.Close SaveChanges:=False
End If
[COLOR="Red"]Cancel = True[/COLOR]
End Sub

A +
 

helene51

XLDnaute Junior
Re : Certificat sur macro

Re James007,

Je ne l'avais pas mis. Mais en le mettant à "True", le fichier ne se ferme pas.
Je l'ai mis à "False" et là je suis toujours obligée de fermer 2 fois ma msgbox ("Non" 2 fois) pour que le fichier se ferme sans enregistrement.

Retour au début du problème !

Je désespère d'autant que c'est la dernière modif !
 

Discussions similaires

Statistiques des forums

Discussions
312 339
Messages
2 087 416
Membres
103 542
dernier inscrit
feenix