empêcher glisser déplacer

C

cricri62

Guest
bonjour à tous

j'aimerais interdire le glisser déplacer dans certaines feuilles ou dans certaines zones de la feuille mais pas à travers outils /options. existe-il une solution
 

Laurent L

XLDnaute Nouveau
Bonjour,

Le code ci-dessous montre comment bloquer le glisser-déplacer pour une feuille de calcul particulère. A adapter si tu veux bloquer seulement certaines plages...

Code:
' *** Dans le module ThisWorkbook ***

Private Sub Workbook_Open()
  Dim Sht As Worksheet
  Set Sht = ActiveSheet
  With Application
    .ScreenUpdating = False
    .EnableEvents = False
    ' Remplacer Feuil1 par le nom de module de la feuille à bloquer
    Feuil1.Activate
    Feuil1.Init ActiveWindow.RangeSelection
    Sht.Activate
    .ScreenUpdating = True
    .EnableEvents = True
  End With
End Sub

' *** Dans le module de la feuille de calcul ***

Dim P As Range
Dim A As String

Private Sub Worksheet_Change(ByVal Target As Range)
   If P.Address <> A Then
      Application.EnableEvents = False
      Application.Undo
      Application.EnableEvents = True
   End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   Init Target
End Sub

Public Sub Init(T As Range)
   Set P = T
   A = P.Address
End Sub

Cordialement,

Laurent
 

tibel6

XLDnaute Nouveau
Re : empêcher glisser déplacer

Bonjour,
Je cherche à généraliser le code ci-dessus à toutes les feuilles de mon classeur. Quelqu'un voit-il un moyen pour y arriver ?

PS : je suis nul en VBA alors j'ai vraiment besoin de votre savoir-faire !
 

JNP

XLDnaute Barbatruc
Re : empêcher glisser déplacer

Bonjour Tibel6 :),
A priori :
Code:
' *** Dans le module ThisWorkbook ***
Private Sub Workbook_Open()
    Init Selection
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Init Selection
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
   If P.Address <> A Then
      Application.EnableEvents = False
      Application.Undo
      Application.EnableEvents = True
   End If
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
   Init Target
End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
    Init Selection
End Sub

' *** Dans un module standard ***
Public P As Range
Public A As String
Public Sub Init(T As Range)
   Set P = T
   A = P.Address
End Sub
semble fonctionner :p...
Bonne suite :cool:
 

tibel6

XLDnaute Nouveau
Re : empêcher glisser déplacer

J'ai trouvé une solution pas très élégante en enlevant "Feuill1" dans le module ThisWorkbook et en copiant le code de feuille dans chaque feuille. Etant donné que j'ai une centaine de feuilles c'est un peu fastidieux mais on y arrive ! Ca n'est néanmoins toujours pas idéal dans le sens où si on ajoute une nouvelle feuille il faut bien penser à rajouter le code.
Si quelqu'un a quelque chose de plus élégant je suis toujours preneur !!
Cordialement,
Tibel6
 

Tieum78

XLDnaute Occasionnel
Bonjour,

savez vous s'il est possible d'empêcher le glisser de cellule dans un fichier excel sans macro vba ?

J'envoie un fichier à différentes personnes. Le fichier contient des formules, mais pas de macro. Le fichier est protégé par mot de passe. Seules les cellules dans lesquelles l'utilisateur peut saisir quelque chose sont sélectionnables et saisissables.
Mais il arrive régulièrement qu'un utilisateur déplace le contenu d'une cellule a l'autre (via glisser de la souris), ce qui a pour conséquence de casser les formules, ça génère des #REF
 

Discussions similaires

Statistiques des forums

Discussions
314 636
Messages
2 111 460
Membres
111 151
dernier inscrit
KARIMTAPSO