protection classeurs, feuilles et cellules

  • Initiateur de la discussion Hervé
  • Date de début
H

Hervé

Guest
Bsr, sur Excel 2000 je partage un fichier protegé en lecture seule, mais j'aimerai le protéger encore plus en enlevant les menus, en empechant le copier pour le coller ailleurs, et d'autres choses que j'ignore encore.
J'ai su faire des macros en excel 4 mais depuis l'arrivée du VB, je ne comprends plus rien.
Qui pourrait me proposer un systeme assez complet et pas trop trop dur a mettre en place.
Merci d'avance.
 
H

Hervé

Guest
Ok SYL'S, c'est ce que je pensais faire mais pareil pas trop le temps car je pars la semaine prochaine.

je crois avoir compris comment faire, va falloir adapter et paufiner.

en tout cas merci de tout.
Bonne vacances a tous

bye RV
 
P

phil

Guest
bonjour à tous , j'ai découvert se site il y a pas très longtemps et je crois que je peux t'aider hervé.

pour obliger quelqu'un à ouvrir tes macros j'ai un truc fort simple pour toi


si tu veux le savoir ou si quelqu'un d'autre veut le savoir, ecriver moi un message dans cette section et je prendrai le temps de tout t'écrire

bonjour phil

canada,quebec,st-jean
 
S

SYL'S

Guest
Bonsoir phil, Ti et le forum

c'est un vieu post qu'on remet sur le forum...il y avait eu des suites entre hervé et moi par email.

Donc j'en profite pour vous joindre le dernier jet de son fichier qui était basé sur le travai de @thierry(blague), Myta, schmail et d'autres...

Bonne soirée.

PS1 : Hervé est en vacances...
PS2 : le code est rv , le bouton est là pour sortir du pleine écran...
 

Pièces jointes

  • Rv.zip
    19.1 KB · Affichages: 15
  • Rv.zip
    19.1 KB · Affichages: 11
  • Rv.zip
    19.1 KB · Affichages: 13
P

phil

Guest
boujours à tous je ne suis pas le meilleur programmeur vb mais je me débrouille très bien

l'astuce est que vous créer une feuille inutile dans votre fichier et vous la placer à la dernière position. par la suite vous cacher les feuilles importantes et vous copier ce code dans "this woorkbook".
il ne reste qu'à adapter le code pour cacher et montrer les feuille voulues.

principe : si la personne n'active pas les macro celui verra la feuille inutile dans laquelle vous aurez inscrit :"vous devez activer les macro pour vous servir de ce programme". lorsque celui-ci active les macro les feuille importante apparaissent et celui peut travailler. bien sur il faut protéger les feuilles et code vb contre une attaque même si il existe une multitude de prog pour trouver les code mais seulement 5% de la populas le sait.
lorsque celui-ci ferme la feuille on cache les feuille importante et on save automatiquement c'est le principe le plus simple qui me vient en tête.



Option Explicit

'=====================================================================================
'procédure permettant de rendre les feuilles voulus visible et
'd'interdire copie_coller et short key
'=====================================================================================
Private Sub Workbook_Open()

Dim nom As String
nom = ActiveWorkbook.name

Windows(nom).Visible = True
Worksheets(2).Visible = True 'feuille importante à montrer une fois les macro activer
Worksheets(3).Visible = False
Worksheets(1).Visible = True 'feuille importante à montrer une fois les macro activer

On Error Resume Next
With Application
'disables shortcut keys
.OnKey "^c", ""
.OnKey "^v", ""
.OnKey "^x", ""
'Disables Copy
.CommandBars("Edit").FindControl(ID:=19).Enabled = False
.CommandBars("Edit").FindControl(ID:=848).Enabled = False
.CommandBars("Cell").FindControl(ID:=19).Enabled = False
.CommandBars("Column").FindControl(ID:=19).Enabled = False
.CommandBars("Row").FindControl(ID:=19).Enabled = False
.CommandBars("Button").FindControl(ID:=19).Enabled = False
.CommandBars("Formula Bar").FindControl(ID:=19).Enabled = False
.CommandBars("Worksheet Menu Bar").FindControl(ID:=19).Enabled = False
.CommandBars("Standard").FindControl(ID:=19).Enabled = False
.CommandBars("Button").FindControl(ID:=848).Enabled = False
.CommandBars("Formula Bar").FindControl(ID:=848).Enabled = False
.CommandBars("Worksheet Menu Bar").FindControl(ID:=848).Enabled = False
.CommandBars("Standard").FindControl(ID:=848).Enabled = False
.CommandBars("Ply").FindControl(ID:=848).Enabled = False
'Disables Cut
.CommandBars("Edit").FindControl(ID:=21).Enabled = False
.CommandBars("Cell").FindControl(ID:=21).Enabled = False
.CommandBars("Column").FindControl(ID:=21).Enabled = False
.CommandBars("Row").FindControl(ID:=21).Enabled = False
.CommandBars("Button").FindControl(ID:=21).Enabled = False
.CommandBars("Formula Bar").FindControl(ID:=21).Enabled = False
.CommandBars("Worksheet Menu Bar").FindControl(ID:=21).Enabled = False
.CommandBars("Standard").FindControl(ID:=21).Enabled = False

End With

Application.DisplayFormulaBar = False
Application.DisplayStatusBar = False

Application.CommandBars(1).Enabled = False

Application.CommandBars("Cell").Enabled = False
Worksheets(1).Select

End Sub

'=====================================================================================
'procédure permettant de cacher les feuille à la sortie du fichier et d'enregistrer
'automatiquement le fichier pour continuer à garder l'obligation d'ouvrir les macro
'=====================================================================================


Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim nom As String
nom = ActiveWorkbook.name

Windows(nom).Visible = True
Worksheets(2).Visible = False ' feuille importante à cacher
Worksheets(3).Visible = True 'feuille vierge
Worksheets(1).Visible = False ' feuille importante à cacher

Call redo_copi_coller


ActiveWorkbook.Save


End Sub

'=====================================================================================
'procédure permettant de reactiver le copie coller et les short key
'
'=====================================================================================

Private Sub redo_copi_coller()
On Error Resume Next
With Application
.OnKey "^c"
.OnKey "^v"
.OnKey "^x"

'Enables Copy
.CommandBars("Edit").FindControl(ID:=19).Enabled = True
.CommandBars("Edit").FindControl(ID:=848).Enabled = True
.CommandBars("Cell").FindControl(ID:=19).Enabled = True
.CommandBars("Column").FindControl(ID:=19).Enabled = True
.CommandBars("Row").FindControl(ID:=19).Enabled = True
.CommandBars("Button").FindControl(ID:=19).Enabled = True
.CommandBars("Formula Bar").FindControl(ID:=19).Enabled = True
.CommandBars("Worksheet Menu Bar").FindControl(ID:=19).Enabled = True
.CommandBars("Standard").FindControl(ID:=19).Enabled = True
.CommandBars("Button").FindControl(ID:=848).Enabled = True
.CommandBars("Formula Bar").FindControl(ID:=848).Enabled = True
.CommandBars("Worksheet Menu Bar").FindControl(ID:=848).Enabled = True
.CommandBars("Standard").FindControl(ID:=848).Enabled = True
.CommandBars("Ply").FindControl(ID:=848).Enabled = True
' Enables Cut
.CommandBars("Edit").FindControl(ID:=21).Enabled = True
.CommandBars("Cell").FindControl(ID:=21).Enabled = True
.CommandBars("Column").FindControl(ID:=21).Enabled = True
.CommandBars("Row").FindControl(ID:=21).Enabled = True
.CommandBars("Button").FindControl(ID:=21).Enabled = True
.CommandBars("Formula Bar").FindControl(ID:=21).Enabled = True
.CommandBars("Worksheet Menu Bar").FindControl(ID:=21).Enabled = True
.CommandBars("Standard").FindControl(ID:=21).Enabled = True

End With

Application.DisplayFormulaBar = True
Application.DisplayStatusBar = True

Application.CommandBars(1).Enabled = True

Application.CommandBars("Cell").Enabled = True


End Sub
 
P

phil

Guest
dans quelle pays vous ête pour moi il est 15:40 et pour vous il est 21:30

excuser moi de prendre cette espace avec ce commentaire inutile' c'étais par curiosité.
phil bonne nuit à vous, moi je finit bientôt de travailler et je vais prendre une bonne petite bière au soleil
 

Discussions similaires

Statistiques des forums

Discussions
312 361
Messages
2 087 603
Membres
103 604
dernier inscrit
CAROETALEX59