Interdire le copier/coller ou couper/coller

NatachaD

XLDnaute Nouveau
Bonjour à tous,

Je travaille sur un fichier Excel sur lequel je souhaite interdire le copier/coller ou couper/coller par les utilisateurs. Jusque là pas de problème avec les codes suivants (déjà trouvé sur internet) :

Code:
Private Sub Workbook_Activate()

'Interdit le collage sur la même feuille que celle qui a servi à faire la copie
Application.CutCopyMode = False

End Sub

Private Sub Workbook_open()

'Interdit le tirage des formules dans les 4 directions et le glisser déplacer
Application.CellDragAndDrop = False

End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

'Interdit le collage suite à une copie venant d'une autre feuille du même classeur
Application.CutCopyMode = False

End Sub


Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

'Interdit le collage sur la même feuille que celle qui a servi à faire la copie
Application.CutCopyMode = False

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

'Active le tirage des formules dans les 4 directions et
'la technique du glisser-déplacer pour les cellules.
Application.CellDragAndDrop = True
  
'Active la possibilité de collage
Application.CutCopyMode = True

End Sub

Mon problème vient du fait que, sur ce même fichier, j'utilise une macro qui utilise la fonction copier/coller. Il faudrait donc que je puisse désactiver cette interdiction avant d'exécuter la macro en question mais là je coince...

Quelqu'un peu m'aider parmis les experts que vous êtes ;-)

Merci beaucoup !

Natacha
 

Staple1600

XLDnaute Barbatruc
Re : Interdire le copier/coller ou couper/coller

Bonjour à tous


Un biais tout simple:
Quand c'est toi l'utilisateur du fichier, mets en commentaire le code présent dans ThisWorkBook
(et/ou partout ou est le code qui empêche le copier/coller)
(CTRL+A puis clic sur l’icône Commenter Bloc , cf copie d'écran ci-dessous)

Copies/colles ensuite ce qui te chante puis avant de fermer le fichier, décommentes la procédure précédemment commentée.

(Avec le bouton adéquat sur la barre d'outils Edition de VBE, cela est très rapide)
01BOEDIT.png
 
Dernière édition:

NatachaD

XLDnaute Nouveau
Re : Interdire le copier/coller ou couper/coller

Merci pour ta réponse mais les utilisateurs sont également amenés à utiliser la macro en question avec l'utilisation du copier/coller.
C'est juste qu'en dehors de cette macro, je veux interdire cette fonction.
 

NatachaD

XLDnaute Nouveau
Re : Interdire le copier/coller ou couper/coller

Voici le fichier test (effectivement ce sera plus parlant !)
 

Pièces jointes

  • TEST interdire copier coller.xlsm
    19.2 KB · Affichages: 76
  • TEST interdire copier coller.xlsm
    19.2 KB · Affichages: 78
  • TEST interdire copier coller.xlsm
    19.2 KB · Affichages: 82

Staple1600

XLDnaute Barbatruc
Re : Interdire le copier/coller ou couper/coller

Re


Utiles cette macro en lieu et place de l'originale
Code:
Sub CopieII()
Dim x&, y&
With Range("CLIENTS")
x = .Rows.Count
y = .Columns.Count
Sheets("PLANN1").[A1].Resize(x, y).Value = .Value
Sheets("PLANN2").[A1].Resize(x, y).Value = .Value
End With
End Sub

PS: test OK sur ta PJ.
 

NatachaD

XLDnaute Nouveau
Re : Interdire le copier/coller ou couper/coller

Ca marche nikel effectivement.

Bravo et merci !!!

Est-ce que je peux abuser de votre aide car j'ai un autre soucis que je n'arrive pas à résoudre et en cherchant sur le forum, je vois que vous avez déjà traité le sujet :
https://www.excel-downloads.com/threads/verrouiller-la-mise-en-page.89960/

J'ai essayé la méthode que vous indiquiez mais cela n'a pas l'air de fonctionner sur mon fichier, j'utilise le même que précédemment pour les tests. Je le remets en pièce jointe avec l'insertion du code que vous aviez donné.
Bien sur j'ai fait un stupide copier/coller sans vraiment comprendre donc il y a surement quelque chose que je fais mal...

Merci encore ;-)
 

Pièces jointes

  • TEST interdire copier coller.xlsm
    22.5 KB · Affichages: 44
  • TEST interdire copier coller.xlsm
    22.5 KB · Affichages: 59
  • TEST interdire copier coller.xlsm
    22.5 KB · Affichages: 64
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Interdire le copier/coller ou couper/coller

Re


A l'époque le code fut testé sur XL2000
Or depuis le ruban est apparu ;)
Et comme tu es sous XL 2010 et moi 2013, c'est normal que le code fournit ne fonctionne plus en l'état.

PS: Enfin un nouveau membre du forum qui pense à cliquer sur la loupe ;)
Ça fait plaisir ;)
 

Staple1600

XLDnaute Barbatruc
Re : Interdire le copier/coller ou couper/coller

Re


Oui.
Une idée: Mettre les mains dans le cambouis du ruban

Et là c'est pas de la tarte comparé aux barres d'outils manipulées par VBA ;)
Voir Ce lien n'existe plus pour commencer

PS1: Personnellement, j'aime bien le bel ouvrage de Ron de Bruin
(et pas seulement celui qui touche au Ruban)

PS2: Je répare ici mon fâcheux oubli de mon premier message dans ton fil
NatachaS:
Bienvenue sur le forum XLD ;)
 

MichD

XLDnaute Impliqué
Re : Interdire le copier/coller ou couper/coller

Bonjour,

Je ne vois pas où est la difficulté...

Pour copier une plage de cellule d'une feuille à l'autre, il y a ceci :

VB:
Sub test()
With Worksheets("Liste")
    .Range("A1:B5").Copy Worksheets("PLANN1").Range("A1") 'La plage à copier
End With
End Sub


Tu peux utiliser ceci pour copier seulement les données, la couleur du texte et la couleur du texte
séparément au besoin...en respectant la restreindre!

VB:
Sub test1()
With Worksheets("Liste")
    With .Range("A1:B5")
        'Copie les données seulement
        Worksheets("PLANN1").Range("A1").Resize(.Rows.Count, .Columns.Count) = .Value
        'Copie la couleur de la plage source
        'cela fonctionne si tu as une couleur uniforme sur la plage
        Worksheets("PLANN1").Range("A1").Resize _
            (.Rows.Count, .Columns.Count).Interior.Color = .Interior.Color
        'copie la couleur du texte avec la même restriction que précédent.
        Worksheets("PLANN1").Range("A1").Resize _
            (.Rows.Count, .Columns.Count).Font.Color = .Font.Color
    End With
End With

End Sub


Si tu préfères effectuer une sélection avec une souris, il y a ceci :

VB:
Sub test2()
Dim Source As Range, Dest As Range
On Error Resume Next
Set Source = Application.InputBox(Prompt:="Sélection de la plage de la plage source.", Type:=8)
If Err = 0 Then
    Set Dest = Application.InputBox(Prompt:="Sélection de la cellule de destination.", Type:=8)
    If Not Dest Is Nothing Then
        Dest(1, 1).Resize(Source.Rows.Count, Source.Columns.Count).Value = Source.Value
    Else
        Err = 0
    End If
Else
    Err = 0
End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 176
Messages
2 085 962
Membres
103 067
dernier inscrit
el_privach