Protection Format de cellule particulier

Bonjour à tous, long time no see

Je reviens pour une ptite question qui s'avère relativement gênante dans la pratique. Je m'explique. J'ai un classeur excel dont toutes les feuilles sont protégées avec certaines cellules dévérouillées. Il y a impossibilité de changer le format de cellule. Un utilisateur peut rentrer des données dans les cellules dévérouillées. Il fait en l'occurrence souvent des copier/coller (provenant d'excel ou non, de cellules avec formules ou non). Ou il fait des étirements.

Le problème dans tout ça, c'est que lorsqu'il fait ces manips, le copier/coller et les étirements insèrent aussi les propriétés de format de cellule (nouvelle bordure, couleur, etc...). Il copie aussi par ailleurs la formule si la cellule d'origine en est une. D'autant plus que la feuille étant protégée, l'utilisateur ne peut pas rechanger les formats à son souhait.

Je souhaiterais donc si possible:

1. Forcer le copier/coller par valeur, quand l'utilisateur fait un copier/coller normal

2. Empêcher la copie du format lors d'un copier/coller ou d'un étirement de cellule.

Pensez-vous que ce soit jouable? J'espère avoir bien expliquer mon problème, car je ne crois pas qu'une feuille en exemple aide beaucoup à comprendre le truc

Merchiiii beaucouchhh

Bonjour

La solution semble être d'interdire le collage et de faire en sorte que l'utilisateur entre ses données au clavier

(Frédéric Sigonneau)

Méthode radicale pour interdire le copier/coller (peut s'affiner en jouant sur les paramètres Target et Sh) :

dans le module ThisWorkbook de ton classeur

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

Application.CutCopyMode = False

End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _

ByVal Target As Range)

Application.CutCopyMode = False

End Sub

C'est une solution.

Cordialement,

Amadéus

Hello Amadéus,

Merci pour cette solution mais elle n'est malheureusement pas viable pour mon cas.

En revanche, serait-il possible d'exploiter ce genre de fonction pour forcer un copier/coller par valeur ?

Genre récupérer l'événement "si coller" et appliquer la fonction coller par valeur ? (Perso je ne sais pas comment récupérer un tel événement)

Re bonjour

Désolé, mais VBA n'étant pas mont fort, je passe le témoin à.....

J'espère pour toi que Mytå que je salue au passage fera un tour par ici..

Cordialement,

Amadéus

Salut Elftor, Amadéus et le forum

On pourrait pour le copier-coller supprimer toutes les commandes, voir le lien

https://www.excel-pratique.com/forum/viewtopic.php?t=1620

Et créer à la place son propre sous-menu Copier-Coller

Sub SupprimerCommande()
    On Error Resume Next
    Application.CommandBars("Edit").Controls("MonCopier").Delete
End Sub

Sub AjouterCommande()
Set Tools = Application.CommandBars("Edit")
    With Tools.Controls.Add(, , , , True)
        .BeginGroup = True 'Séparation avant le bouton de commande
        .Caption = "MonCopier"
        .OnAction = "Nom de la macro à exécuter"
    End With
End Sub

Pour le glisser-déposer je regarde si c'est possible...

Mytå

Re le forum

Pour empecher le glisser-déposer et le pinceau(Reproduire mise en forme)

Il y a surement mieux mais voila mon ébauche.

Dim PrevCel As Range
Dim Etat As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
If Application.CutCopyMode = xlCut Then Exit Sub
If Target.Address <> PrevCel.Address Then
  If Etat = True Then
    Etat = False: Exit Sub
  End If
Etat = True
Application.Undo
Application.CutCopyMode = False
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set PrevCel = Target
End Sub

Mytå

Mmmmmh ca a l'air pas mal tout ça !

Donc si je résume par rapport à mon problème.

Il est possible d'enlever juste la commande "coller" du menu edition, puis de rajouter une nouvelle commande coller "customisée".

Dans cette dernière fonction, on pourrait..

1. Si le copier provient d'une cellule excel (du meme classeur ou d'un autre), forcer le collage par valeur

2. Si le copier provient d'ailleurs, faire un copier de la chaine de caractère dans la cellule, sans aucune mise en forme quelconque

Sinon je ne comprends pas très bien l'emplacement de toutes ces fonctions dans le classeur.

Peux-tu m'aider ?

Salut le forum

Rien testé à toi de voir, j'ai juste regrouper les macros dans le fichier.

Le fichier

Mytå

Yes, merci Myta. Je comprends bien mieux le système maintenant.

J'ai pu relever quelques dysfonctionnements par des tests. Le premier est qu'il y a un bug dès la première action sur une feuille, que j'ai corrigé car PrevCel n'avait pas d'allocation de range (J'ai rajouté donc dans Worksheet_Change: If PrevCel Is Nothing Then Exit Sub)

Cependant le glisser-déposer ne fonctionne pas très bien, je crois que c'est du au fait que la ligne Application.Undo réappelle Worksheet_SelectionChange et Worksheet_Change mais je n'en suis pas sûr. Je ne sais pas trop comment le corriger.

Un autre problème subsiste aussi car les changements des commandBars et Cie sont appliqués sur l'application Excel entière, donc à tous les workbooks.

Je n'ai pas encore eu le temps d'essayer de coder ma fonction "coller" customisée mais je vais essayer de faire ça.

Rechercher des sujets similaires à "protection format particulier"