VBA : If Taget.count >1, ne pas effacer les valeurs

Bonsoir,

Dans le fichier ci-joint, je désirerais que si plusieurs cellules sont sélectionnées dans la plage E4:I6 de la feuille "Saisie" et que l'utilisateur tente de les effacer par "Delete", un message apparaisse afin d'informer l'utilisateur que c'est impossible (jusque là, je suis arrivé à résoudre mon problème tout seul) mais qu'en plus les valeurs des cellules sélectionnées ne soient pas effacées.

Le passage de mon code qui réalise déjà mon premier souhait indiqué ci-dessus se situe passablement au début de la macro de la feuille "Saisie" :

Private Sub Worksheet_Change(ByVal Target As Range)

Il s'agit du code :

If Target.Count > 1 Then
    MsgBox ("Il n'est pas possible de traiter plus d'une cellule à la fois")
    Exit Sub
End If

Après le message, la macro est bien quittée, mais les cellules sont également effacées, ce que je ne désirerais pas.

Pouvez-vous m'aider ?

Bonsoir

A essayer

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then
        With Application
          .EnableEvents = False
          .Undo
          .EnableEvents = True
        End With
        MsgBox ("Il n'est pas possible de traiter plus d'une cellule à la fois")
        Exit Sub
    End If
End Sub

Bonsoir Banzai, forum,

bien que ce n'était pas dans la demande,

intéressant ce "Application.Undo"

dommage que çà permette quand même le déplacement de plusieurs cellules,

aurais-tu une combine pour çà aussi ?

Amicalement

Claude

Bonsoir

Bonsoir Claude

pas de solution pour le couper

Le copier est gérée (pourquoi ?????)

Quelqu'un à peut-être la solution

Interdire le menu Couper + le raccourci clavier

Bonsoir,

Effectivement que le code de Banzai répond exactement à ma demande, mais qu'il serait intéressant de couvrir encore d'autres possibilités d'erreurs. Je ne clôture donc pas ce fil immédiatement.

De toute façon un tout grand merci à Banzai pour sa solution

Rendez-vous sur mon prochain fil - d'ici quelques minutes - avec mon problème suivant ?

Cordialement.

Salut le forum

Un façon pour interdire le couper.

Code à mettre dans le module ThisWorkbook

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

With Application
  If .CutCopyMode = xlCut Then
    MsgBox "Action interdite"
    .CutCopyMode = False
  End If
End With

End Sub

Mytå

Salut Mytå ,

Merci pour ton intervention.

J'ai fait des essais avec ta proposition et ça semble bien fonctionner avec toutes les options couper ou copier-coller.

Mais si je sélectionne par exemple la plage E4:F5 et que je glisse le cadre entourant ces cellules vers une autre plage, par exemple en F5:G6, je reçois deux fois de suite mon message d'erreur "Il n'est pas possible de traiter plus d'une cellule à la fois" puis les cellules sont finalement déplacées.

Serait-il possible d'également empêcher cela ?

Cordialement.

J'ai utilisé cette macro sur un de mes classeurs, elle a fonctionné.

Ensuite, comme un autre classeur qui était lié à celui-ci me refusait les accès en raison (je suppose) de l'interdiction de couper/copier/coller, j'ai carrément du relocaliser l'emplacement sur le C:

Ensuite, je suis retourné dans le classeur où cette macro fonctionnait et la retester et là, depuis elle ne va plus, pourtant je n'ai rien changé à ce fichier... étrange ou normal ? Cela viendrait-il d'une modif du programme excel en lui-même ?

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

With Application
  If .CutCopyMode = xlCut Then
    MsgBox "Action interdite"
    .CutCopyMode = False
  End If
End With

End Sub

Les deux feuilles du classeur sont protégées

bonjour tout le monde, je m'incruste.

Si je me réfère à la toute première question :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Count > 1 Then

Target(1, 1).Select

MsgBox ("Il n'est pas possible de traiter plus d'une cellule à la fois")

Exit Sub

End If

End Sub

Tout est possible, mais que sur une cellule..

Si on utilise ce genre de macro (interdire le couper/copier/coller) sur un classeur X et que dans le classeur Y on fait appel à des données reprises dans X, cela plante chez vous ?

Rechercher des sujets similaires à "vba taget count pas effacer valeurs"