[Excel] intercepter suppression ligne

Résolu
cs_pompoire Messages postés 8 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 12 janvier 2010 - 7 déc. 2007 à 15:48
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 - 19 déc. 2007 à 18:41
Bonjour,

J'ai un fichier excel généré par une application externe. pour des raisons de sécurité, certaines colonnes sont vérouillées. L'utilisateur est suscepotible de supprimer des lignes mais dans ce cas, une message apparait indiquant que du fait de la protection de la feuille, l'opération ne peut pas être effectuée. Je précise que j'ai donné les droits de suppression.
Ma question est: Est il possible d'intercepter ce message d'erreur via un code VBA et ainsi de pouvoir désactiver ce message d'erreur, déprotéger la feuille, valider la suppresion de la ligne (même si cela doit être fait par code) puis reprotéger la feuille. Ainsi l'opération sera transparente pour l'utilisateur.

Merci de votre aide et bon week end

6 réponses

cs_pompoire Messages postés 8 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 12 janvier 2010 1
19 déc. 2007 à 16:57
Bonsoir,

apès recherche, voici la solution trouvée:

Private Sub WorkSheet_SelectionChange(ByVal Target As Range)
    If Target.Columns.Count > 1 Then
        Application.ActiveSheet.Unprotect
    Else
        Application.ActiveSheet.Protect AllowInsertingRows:=True, AllowDeletingRows:=True, AllowFormattingColumns:=True
    End If

End Sub

en fait a chaque sélection de cellule, je regarde le nombre de colonnes sélectionées. si plus de deux alors cela signifie que la ligne entière a été sélectionnée (On peut optimiser en définissant par avance le nombre de colonnes max possible). ainsi j'active ou non la protection de la feuille.

A+
3
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 13
18 déc. 2007 à 06:09
Bonjour,

Sub DelRow ()
   Application.DisplayAlerts = False 'tout les messages sont desactivés
   On Error Resume Next
   ActiveWorkbook.Unprotect

ici tu deletes ce que tu veux

   On Error Resume Next
   ActiveSheet.Protect DrawingObjects:=True, contents:=True, Scenarios:=True
   Application.DisplayAlerts = true
End Sub

A+

Philippe
0
cs_pompoire Messages postés 8 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 12 janvier 2010 1
18 déc. 2007 à 08:51
Bonjour et merci,

mon souci concerne le cas d''un utilisateur qui supprime des lignes par le biais du clavier ou via le mennu contextuel. je confirme que cette procédure serait ce qu'il faut faire mais la question est alors de savoir à quel moment j'appelle la procédure delrow puisqu'il n'y a pas a ma connaissance de fonction du type OnDelete.

je connais la fonction OnChange mais dans ce cas comment savoir qu'un utilisateur a supprimé une ligne ?
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 13
18 déc. 2007 à 18:16
il y 3 facons de delete une ligne dans excel :
- par le menu edit
- par la touche delete du clavier
- par un click droit sur la ligne

tu pourrais obliger l'utilisateur a n' utiliser que le click droit et utiliser l'evenement RightClick pour ne permetre de delete que ponctuelement par :

    If ActiveSheet.Protection.AllowDeletingRows = False Then
        ActiveSheet.Protect AllowDeletingRows:=True
    End If

j'en sais pas plus. A fouiller. Tient moi au courant

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_pompoire Messages postés 8 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 12 janvier 2010 1
19 déc. 2007 à 17:01
Aprés vérification, le nombre de colonnes excel est de 256 donc il faut remplacer la ligne
If Target.Columns.Count > 1 Then
par
If Target.Columns.Count = 256 Then

Bonne soirée
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 13
19 déc. 2007 à 18:41
Bonsoir,


BRAVO !!!

et merci de m'avoir tenu informé.
je le met de coté cela pourait me servire

A+

PS pour moi c'est plutot bonjour vu que je suis aux US
0
Rejoignez-nous