Ma question est simple, sa mise en pratique beaucoup moins pour quelqu'un comme moi qui n'y comprend presque rien en VBA (Je m'y mettrai, mais, pour le moment, je n'ai pas vraiment le temps...) :
Est-il possible d'empêcher le collage d'une partie d'un fichier quelconque dans un autre ?
Re : Interdire le collage d'un fichier vers un autre
Bonjour
"Merci" mromain pour cette remarque.
En fait ce cas m'inquiète moins car je peux pièger les feuilles avec du texte caché, différent d'une feuille à l'autre (le nom écrit en blanc par exemple, sur des cellules protégée, hors du champ normal de travail). Si l'élève copie la feuille complète, il "transportera avec lui" le nom du propriétaire initial. Bon, après, il peut encore faire un copier coller d'une feuille vers une autre, tout en restant dans son fichier, puis supprimer la feuille intermédiaire...
Il y a un autre cas de "copier-coller" qui a mon avis ne sera pas facile à bloquer :
si on a 2 fichiers cote à cote, et qu'on fait glisser une cellule d'un fichier à l'autre avec la touche "Ctrl" appuyée.
Très bonne remarque, mais qui nous fait trouver une solution complète, un peu bourrin, mais efficace :
Code:
Private Sub Workbook_Activate()
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
WS.Unprotect
Next
End Sub
Private Sub Workbook_Deactivate()
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
WS.Protect
Next
End Sub
Re : Interdire le collage d'un fichier vers un autre
Re ,
Réflexion faite, pour tenir compte de la copie de feuille :
Code:
Private Sub Workbook_Activate()
ThisWorkbook.Unprotect
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
WS.Unprotect
Next
End Sub
Private Sub Workbook_Deactivate()
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
WS.Protect
Next
ThisWorkbook.Protect
End Sub
Re : Interdire le collage d'un fichier vers un autre
Re ,
Y en a toujours plus dans 2 têtes que dans une .
J'avais dit que pour le fun, je jetterais un oeil au ruban. En pièce jointe, un fichier test avec comme XML
J'ai mis des MsgBox, pour que tu puisse voir quelle est l'action déclencheuse. Ce qui est interressant, c'est que le clic-droit est affecté en même temps que le ruban, ce qui fait que c'est beaucoup plus subtil et moins bourrin.
Bonne journée
J'aime bien cette philosophie, mais je n'en suis pas encore là, ni en VBA (je n'y connais rien), et pas toujours avec les formules (cf les formules longuettes que je trouve ou les colonnes intermédiaires que je suis parfois obligé d'utiliser, et les propositions d'autres (abcd, Roger'Pataphysique, Monique, Brigitte... par ex), beaucoup plus astucieuses...).
Re : Interdire le collage d'un fichier vers un autre
Bonjour à tous,
Je reviens sur ce fil.
Cette macro doit aussi vider à tout coup le presse-papier rempli par un autre fichier :
Code:
Private Sub Workbook_Activate()
Dim S As Worksheet
On Error Resume Next
For Each S In ThisWorkbook.[COLOR="Red"]Sheets[/COLOR]
S.Range("A1").Copy S.Range("A1")
Next
End Sub
On Error Resume Next au cas où la feuille étudiée est protégée.
Edit : peut-être faut-il se préoccuper aussi des feuilles qui ne sont pas des Worksheets (graphique, feuille macro XL4...) ? Donc remplacé Worksheets par Sheets.