Interdire suppression objet mais pas déplacement

Chris401

XLDnaute Accro
Bonsoir à tous

J'ai effectué des recherches dans les anciens fils, mais je n'ai pas trouvé la solution.

Est-il possible d'empêcher la suppression d'un objet (image) tout en pouvant le déplacer ? La protection de la feuille empêche la suppression mais également le déplacement.

Merci de votre aide

Chris
 
Dernière édition:

PMO2

XLDnaute Accro
Re : Interdire suppression objet mais pas déplacement

Bonjour,

Une solution avec la démarche suivante

1) copiez le code suivant dans un module Standard
Code:
Public Pict As Picture
Public PictCount As Long

Sub PictureClick(Nom As String)
Dim W As Window
Dim x&
Dim y&
Dim i&
Dim j&
On Error GoTo Erreur
Set W = ActiveWindow
x& = W.ScrollRow
y& = W.ScrollColumn
With Application
  .ScreenUpdating = False
  .EnableEvents = False
  [iv65536].Activate
  W.ScrollRow = x&
  W.ScrollColumn = y&
  .ScreenUpdating = True
  .EnableEvents = True
End With
Set Pict = ActiveSheet.Pictures(Nom)
Pict.Select
Exit Sub
Erreur:
With Application
  .ScreenUpdating = True
  .EnableEvents = True
End With
End Sub

Sub LastActionUndo(Optional dummy As Byte)
Application.Undo
End Sub

Sub InitPictures(S As Worksheet)
Dim i&
PictCount = S.Pictures.Count
For i& = 1 To PictCount
  Set Pict = S.Pictures(i&)
  Pict.OnAction = "'PictureClick """ & Pict.Name & "'"
Next i&
End Sub

2) copiez le code suivant dans la fenêtre de code de la feuille contenant les images
Code:
Private Sub Worksheet_Activate()
Call InitPictures(ActiveSheet)
End Sub

Private Sub Worksheet_Deactivate()
PictCount = 0
If Not Pict Is Nothing Then Set Pict = Nothing
End Sub

Public Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveSheet.Pictures.Count < PictCount Then
  Call LastActionUndo
Else
  Call InitPictures(ActiveSheet)
End If
End Sub

3) enregistrez votre classeur, fermez-le et rouvrez-le OU changez de feuille et revenez sur la feuille concernée

L'astuce est d'utiliser les procédures évènementielles SelectionChange, Activate, Deactivate de la feuille ainsi que la méthode UnDo.
Si on supprime une image, celle-ci réapparaîtra au prochain changement de sélection.

Cordialement.

PMO
Patrick Morange
 

Chris401

XLDnaute Accro
Re : Interdire suppression objet mais pas déplacement

Bonsoir Patrick

Merci pour le code.

J'ai donc copié les macros, enregistré, fermé, réouvert mon fichier, mais je peux supprimer l'objet.

Je n'arrive pas à ouvrir votre fichier pour vérifier ce que je peux faire de faux.

Je joins un exemple de mon fichier.
Merci à vous de prendre le temps de m'aider.

SLTS
Chris
 
Dernière édition:

jeanpierre

Nous a quitté
Repose en paix
Re : Interdire suppression objet mais pas déplacement

Bonsoir Chris401 Patrick,

Je viens d'ouvrir ton fichier "TestNon SuprImage", je clique sur l'image, je la supprime et en cliquant sur une autre cellule elle revient.

Je ne vois pas ce que tu veux de plus.

Bonne soirée, en attendant d'autres explications.

Jean-Pierre
 

Chris401

XLDnaute Accro
Re : Interdire suppression objet mais pas déplacement

Bonsoir

Bon, puisque Jean Pierre dit que ça fonctionne, c'est que ça fonctionne.

Je viens de changer de portable, et j'ai 2007.

Dans le doute, j'ai allumé mon vieux PC qui est sous 2003, et là j'ai bien pu constater qu'effectivement ça fonctionnait.

Sur mon portable, j'avais coché d'activer automatiquement les macros, mais à priori ce n'est pas ça qui fallait. Je l'ai passé sur Désactiver avec notification, et là c'est bon.

Je suis désolé pour le post précédent, qui n'avait pas lieu d'être (j'espère que je m'habituerai à 2007)

Merci Jean Pierre et merci Patrick

SLTS
Chris
 

Discussions similaires

Statistiques des forums

Discussions
312 292
Messages
2 086 856
Membres
103 401
dernier inscrit
sibfil