Microsoft 365 Interdire le copier / coller sur certaines colonnes (VBA)

ALF75

XLDnaute Nouveau
Bonjour,
J'ai fait quelques recherches, mais étant totalement novice en VBA, je ne trouve pas exactement ce que je souhaite.
Je voudrais interdire le copier / coller sur certaines colonnes uniquement (sans avoir à devoir mettre en place la protection avec mdp).
J'ai des colonnes avec des listes (validation de données) et je voudrais que sur ces colonnes spécifiquement, les personnes ne puissent pas mettre autre chose que ce qui est dans cette liste.

Auriez vous des suggestions ?

Merci par avance et bon après-midi

Adrien
 

Phil69970

XLDnaute Barbatruc
Bonjour @ALF75

Sans fichier pour test je ferais comme ceci :

Pour par exemple interdire la copie dans les colonne A et B et E (à adapter à tes colonnes)

VB:
Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Range("A:B,E:E"), Target) Is Nothing Then
  If Application.CutCopyMode <> False Then Cancel = True
End If
End Sub

Sub Worksheet_Change(ByVal Target As Range)
If Flag Or Intersect(Target, Range("A:B,E:E")) Is Nothing Or Application.CutCopyMode = False Then
    Exit Sub
End If
Flag = True
Application.Undo
Flag = False
End Sub

Merci de ton retour

@Phil69970
 

ALF75

XLDnaute Nouveau
Bonjour @ALF75

Sans fichier pour test je ferais comme ceci :

Pour par exemple interdire la copie dans les colonne A et B et E (à adapter à tes colonnes)

VB:
Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Range("A:B,E:E"), Target) Is Nothing Then
  If Application.CutCopyMode <> False Then Cancel = True
End If
End Sub

Sub Worksheet_Change(ByVal Target As Range)
If Flag Or Intersect(Target, Range("A:B,E:E")) Is Nothing Or Application.CutCopyMode = False Then
    Exit Sub
End If
Flag = True
Application.Undo
Flag = False
End Sub

Merci de ton retour

@Phil69970
Bonjour,
Merci pour votre retour !
J'ai essayé avec mon fichier et je peux toujours écraser les données dans les colonnes stipulées dans la macro.
Mon fichier de travail étant confidentiel, j'ai fait un fichier un peu similaire avec une liste. J'ai cherché à bloquer les col A et B dans ce fichier. Mais dans l'idée, vous avez tout à fait saisi ma demande ! Une macro malléable me permettant de sélectionner les colonnes voulues.
Une idée sur ce qui bloque dans les lignes de macro ?
Merci par avance pour le temps passé et bon après-midi,

Adrien
 

Pièces jointes

  • TEST.xlsm
    13.4 KB · Affichages: 2

Phil69970

XLDnaute Barbatruc
Re

Comme c'est des procédures évènementielles il faut les mettre dans le module de la feuille et non dans Thisworkbook non pécisé certe mais me semblait évident au vu des nom de sub

1670338965338.png


1670339033155.png


Merci de ton retour

@Phil69970
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour
un autre exemple pour bloquer le copier /coller sur une cellule avec liste de validation par le menu click droit sans bloquer
Bloque aussi par la meme occasion le CTRL+V
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Target.Validation.Type = xlValidateList Then
    With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .SetText Target.Value: .PutInClipboard: End With
End If
End Sub
 

ALF75

XLDnaute Nouveau
re
Bonjour
un autre exemple pour bloquer le copier /coller sur une cellule avec liste de validation par le menu click droit sans bloquer
Bloque aussi par la meme occasion le CTRL+V
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Target.Validation.Type = xlValidateList Then
    With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .SetText Target.Value: .PutInClipboard: End With
End If
End Sub
Ca fonctionne également... Par contre, cela bloque bloque vraiment tout CTRL V, et pas uniquement sur une zone (colonnes) spécifique
 

Discussions similaires

Réponses
2
Affichages
114

Statistiques des forums

Discussions
311 737
Messages
2 082 036
Membres
101 878
dernier inscrit
1475214