OVH Cloud OVH Cloud

empêcher la fonction supprimer

14 réponses
Avatar
Papou
Bonsoir a tous et toutes.

J'ai un classeur dans lequel on ne peut complêter une cellule qu'une fois.
Le but ? empêcher toute modification une fois la cellule complété. Ça
fonctionne très bien mais voila que certaines personnes utilisent la fonction
supprimer, décaler les cellules vers le haut. Je voudrais interdire cette
fonction.
Des suggestions??
Merci de votre aide

4 réponses

1 2
Avatar
AV
...., une suggestion sérieuse peut être


C'en est une et je dirais même que c'est la "bonne" !
Quant à ne saisir qu'une seule fois une cellule, une proc évènementielle fera ça
très bien mais bon...... comme tout ça n'est pas sérieux, on évitera les
développements

AV

Avatar
claudy
Hello,
je ne voudrais pas voler ce que d'autres ont fait,
va faire un tour de ce côté (à majorité anglophone...)
http://groups.google.be/groups?sourceid=navclient&aq=%22CommandBars.FindControl(ID%3A%3D478)%22&hl=fr&ie=UTF-8&rls=GGLG,GGLG:2006-14,GGLG:fr&q=%22CommandBars.FindControl(ID:%3D478)%22&oe=UTF-8&sa=N&tab=wg

Justement, ils y parlent de Excel97
A+
Claudy

"Papou" a écrit dans le message de news:

Merci Claudy pour la suggestion
Malheureusement ça ne fonctionne pas peut être que je n'ai pas la bonne
version ( Office 97 ). Mais je vais essayer de développer ton idée.

Pour la suggestion de bloquer la feuille ( qui vient d'autres réponses )
c'est bien évident que j'y ai pensé. Mais je ne peux utiliser cette
option.

Merci encore


Ok, pour être complet:
Sub Menu_Disable()

Dim Ctrl As Office.CommandBarControl
For Each Ctrl In Application.CommandBars.FindControls(ID:G8)
Ctrl.Enabled = False
Next Ctrl
Application.CommandBars.FindControl(ID:)2).Enabled = False
Application.CommandBars.FindControl(ID:)3).Enabled = False
Application.CommandBars.FindControl(ID:)4).Enabled = False
'Application.CommandBars.FindControl(ID:G8).Enabled = False

End Sub

A+
Claudy
"Michel Pierron" a écrit dans le message de
news:
eZZr7ro$
Bonjour claudy;
C'est sans compter avec le click droit ou Personnaliser / Rétablir !
MP

"claudy" a écrit dans le
message
de news: 4549b29b$0$5519$
Re bonjour, en cherchant un peu...
Sub office_2000_uit()
Dim Ctrl As Office.CommandBarControl
For Each Ctrl In Application.CommandBars.FindControls(ID:G8)
Ctrl.Enabled = False
Next Ctrl
End Sub

Et pour rétablir:
Sub office_2000_aan()
Dim Ctrl As Office.CommandBarControl
For Each Ctrl In Application.CommandBars.FindControls(ID:G8)
Ctrl.Enabled = True
Next Ctrl
End Sub

Bonne journée
Claudy



"claudy" a écrit dans le
message de news: 4549a6bb$0$1136$

"claudy" a écrit dans le
message de news: 4549a388$0$30037$

"Papou" a écrit dans le message de
news:
Bonsoir a tous et toutes.

J'ai un classeur dans lequel on ne peut complêter une cellule
qu'une
fois.


Bonjour, pourrais tu me dire comment tu fais?
Merci


Le but ? empêcher toute modification une fois la cellule complété.
Ça
fonctionne très bien mais voila que certaines personnes utilisent
la
fonction
supprimer, décaler les cellules vers le haut. Je voudrais interdire
cette
fonction.
Des suggestions??
J'avais pensé à ceci:


Application.CommandBars.FindControl(ID:G8).Enabled = False
Mais assez bizzarement, ça ne marche pas chez moi!
A+

Merci de votre aide


























Avatar
MichDenis
P.S. Je n'ai pas vérifié s'il y avait des raccourcis clavier à cette
commande.... sinon, il faudrait les désactiver.... si tu en trouves
tu pourrais assurer le suivi sur tes trouvaillles.

Devrait fonctionner sur toutes les versions Excel à partir de 97


Ce qui suit dans le ThisWorkbook de ton classeur

'-----------------------
Private Sub Worksheet_Activate()
EnleverLaFonctionSupprimerLignesEtColonnes
End Sub
'-----------------------
Private Sub Worksheet_Deactivate()
RemettreLaFonctionSupprimerCommeAvant
End Sub
'-----------------------

Ce qui suit dans un module standard :
'-------------------------------------------------
Sub EnleverLaFonctionSupprimerLignesEtColonnes()

'déclaration des variables
Dim Cbar As CommandBar, D As CommandBarControl
Dim C As CommandBarControl

On Error Resume Next
For Each Cbar In Application.CommandBars
For Each C In Cbar.Controls
If C.Caption = "&Supprimer..." Then
C.OnAction = "Bonjour"
End If
Err = 0
For Each D In C.Controls
Err = 0
If D.Caption = "&Supprimer..." Then
D.OnAction = "Bonjour"
End If
Next
Next
Next
End Sub
'-------------------------------------------------
Sub Bonjour()

'Chaque fois que tu vas cliquer sur le bouton
'supprimer, c'est cette macro qui va s'excécuter
'Tu peux inscrire le code que tu veux.
MsgBox "Cette commande n'est pas disponible"

End Sub
'-------------------------------------------------

Sub RemettreLaFonctionSupprimerCommeAvante()

'déclaration des variables
Dim Cbar As CommandBar, D As CommandBarControl
Dim C As CommandBarControl

On Error Resume Next
For Each Cbar In Application.CommandBars
For Each C In Cbar.Controls
If C.Caption = "&Supprimer..." Then
C.OnAction = ""
End If
Err = 0
For Each D In C.Controls
Err = 0
If D.Caption = "&Supprimer..." Then
D.OnAction = ""
End If
Next
Next
Next
End Sub
'-------------------------------------------------








"Papou" a écrit dans le message de news:

Bonsoir a tous et toutes.

J'ai un classeur dans lequel on ne peut complêter une cellule qu'une fois.
Le but ? empêcher toute modification une fois la cellule complété. Ça
fonctionne très bien mais voila que certaines personnes utilisent la fonction
supprimer, décaler les cellules vers le haut. Je voudrais interdire cette
fonction.
Des suggestions??
Merci de votre aide
Avatar
Papou
Fantastique voilà ce que je cherchais. Un gros merci.


P.S. Je n'ai pas vérifié s'il y avait des raccourcis clavier à cette
commande.... sinon, il faudrait les désactiver.... si tu en trouves
tu pourrais assurer le suivi sur tes trouvaillles.

Devrait fonctionner sur toutes les versions Excel à partir de 97


Ce qui suit dans le ThisWorkbook de ton classeur

'-----------------------
Private Sub Worksheet_Activate()
EnleverLaFonctionSupprimerLignesEtColonnes
End Sub
'-----------------------
Private Sub Worksheet_Deactivate()
RemettreLaFonctionSupprimerCommeAvant
End Sub
'-----------------------

Ce qui suit dans un module standard :
'-------------------------------------------------
Sub EnleverLaFonctionSupprimerLignesEtColonnes()

'déclaration des variables
Dim Cbar As CommandBar, D As CommandBarControl
Dim C As CommandBarControl

On Error Resume Next
For Each Cbar In Application.CommandBars
For Each C In Cbar.Controls
If C.Caption = "&Supprimer..." Then
C.OnAction = "Bonjour"
End If
Err = 0
For Each D In C.Controls
Err = 0
If D.Caption = "&Supprimer..." Then
D.OnAction = "Bonjour"
End If
Next
Next
Next
End Sub
'-------------------------------------------------
Sub Bonjour()

'Chaque fois que tu vas cliquer sur le bouton
'supprimer, c'est cette macro qui va s'excécuter
'Tu peux inscrire le code que tu veux.
MsgBox "Cette commande n'est pas disponible"

End Sub
'-------------------------------------------------

Sub RemettreLaFonctionSupprimerCommeAvante()

'déclaration des variables
Dim Cbar As CommandBar, D As CommandBarControl
Dim C As CommandBarControl

On Error Resume Next
For Each Cbar In Application.CommandBars
For Each C In Cbar.Controls
If C.Caption = "&Supprimer..." Then
C.OnAction = ""
End If
Err = 0
For Each D In C.Controls
Err = 0
If D.Caption = "&Supprimer..." Then
D.OnAction = ""
End If
Next
Next
Next
End Sub
'-------------------------------------------------








"Papou" a écrit dans le message de news:

Bonsoir a tous et toutes.

J'ai un classeur dans lequel on ne peut complêter une cellule qu'une fois.
Le but ? empêcher toute modification une fois la cellule complété. Ça
fonctionne très bien mais voila que certaines personnes utilisent la fonction
supprimer, décaler les cellules vers le haut. Je voudrais interdire cette
fonction.
Des suggestions??
Merci de votre aide





1 2