AntiCopy feuil protege ds autre feuille

a3lain

XLDnaute Junior
Bonjour,

J'ai le problème suivant (voir fichier exemple joint)
J'ai une feuille1 dont des colonnes sont masquées pour que l'utilisateur ne voit pas les données et les calculs intermédiaires que j'y fait. Je ne veux pas qu'il puisse voir ces colonnes. J'ai donc groupé ces colonnes et en VBA quand on ouvre le workbook, il protege la feuille1. De fait,l'utilisateur ne peut ecrire , copier , etc.. que dans les zones non masquées et là où les cellules sont non verouillées.

Il y a une feuille2 pour qu'il puisse faire librement ses propres manips.
J'ai remarqué cependant malgré cette protection que si on placait son pointeur de souris à l'intersection en haut à gauche ligne/colonne de la feuille1 (de fait on selectionne toutes les celulles de la feuille1, et qu'on fasse un Copy, puis un Coller dans la feuille2, on peut ensuite dans la feuille2 qui n'est pas protégée, demasquer les colonnes sans mot de passe et voir tout ce qu'il y avait comme contenu, ce qui est genant.

Est ce que quelqu'un a une idée pour que cela ne se produise pas.(PS : On doit quand meme avoir acces aux icones copy/paste bien entendu en feuille1 pour que l'utilisateur puisse travailler normalement ds les cellules autorisées.

Merci d'avance aux Pros.
J'ai mis un fichier exemple simplifié. [file name=AntiCopyColonnesCachees.zip size=6227]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/AntiCopyColonnesCachees.zip[/file]
 

Pièces jointes

  • AntiCopyColonnesCachees.zip
    6.1 KB · Affichages: 11

coco_lapin

XLDnaute Impliqué
Bonjour a3lain et le forum.

Ce code te permets de ne pas pouvoir réaliser un copier/coller d'une feuille à l'autre.

Code à placer dans ThisWorkbook

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Application.CutCopyMode = False
End Sub
 

a3lain

XLDnaute Junior
coco_lapin écrit:
Bonjour a3lain et le forum.

Ce code te permets de ne pas pouvoir réaliser un copier/coller d'une feuille à l'autre.

Code à placer dans ThisWorkbook

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Application.CutCopyMode = False
End Sub

Bonjour coco_lapin,
Merci, Effectivement, cela empeche de copier une feuille mais aussi des parties.
C'est trop de protection pour moi.

Je veux empecher de copier uniquement la zone masquée.

En gros, empecher un Cells.select ou un Range de toute les cellules qui tente de copier l'ensemble des cellules par exemple.

Mais si l'utilisateur selectionne une plage autre que les plages masquées par groupage l'autoriser à la copier quand même.

Une idée?
 

coco_lapin

XLDnaute Impliqué
Re

Si nous ne pouvons pas selectionner les colonnes masquées ou une partie des colonnes masquées alors c'est gagné, c'est ce que j'ai fais.

Dans le code en annexe j'ai pris l'hypothèse que les colonnes A et B étaient celles à protéger.

Ce code doit être mis dans le code de ta feuille à protéger.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range(Columns(1), Columns(2))) Is Nothing Then
Cells(1, 3).Select
MsgBox 'Vous ne pouvez pas sélectionner les colonnes ou une partie des colonnes A et B'
End If
End Sub

Message édité par: coco_lapin, à: 08/03/2006 15:53
 

a3lain

XLDnaute Junior
Merci,

J'ai l'impression qu'avec cela qu'il y a un début de piste. Je fais les essais plus poussés ce soir ou demain pour être sûr.

Je tiens au courant sur ce fil. ;)

Est ce que je peux modifier les chiffres 1,3 par une zone A à G par exemple plutot que travailler avec les chiffres ?

Message édité par: a3lain, à: 08/03/2006 16:41
 

a3lain

XLDnaute Junior
AVec le code car j'arrive pas a joindre le fichier :

Dans Feuil1 :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Columns('A:F')) Is Nothing Then
Range('G1').Select
MsgBox 'Vous ne pouvez pas sélectionner la totalité de la feuille- Sélectionnez une plage '
End If
End Sub

Message édité par: a3lain, à: 08/03/2006 20:36
 

Gérard DEZAMIS

XLDnaute Accro
Bonjour à tous
Je profite tranquillement de vos solutions qui évoluent de fil en fil.
Serait-il possible aussi de sélectionner des colonnes non contiguës, la A, les CD et F par exemple.
J'ai essayé avec
If Not Application.Intersect(Target, Range(Columns(1), Columns(3:4),Columns(6))Is Nothing Then
Cells(1, 3).Select

Mais vous vous doûtez du résultat !
:sick:

Merci d'avance
@+GD
 

coco_lapin

XLDnaute Impliqué
Bonjour Gérard DEZAMIS et le forum.

Une solution pas très élégante mais qui marche c'est de répéter plusieurs fois la condition du genre:

If Not Application.Intersect(Target, Range(Columns(1)))Is Nothing Then la suite

If Not Application.Intersect(Target, Range(Columns(3:4)))Is Nothing Then la suite

If Not Application.Intersect(Target, Range(Columns(6)))Is Nothing Then la suite
 

Discussions similaires

Réponses
6
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
314 017
Messages
2 104 583
Membres
109 084
dernier inscrit
mizab