cs_pompoire
Messages postés8Date d'inscriptionlundi 14 mai 2007StatutMembreDernière intervention12 janvier 2010
-
7 déc. 2007 à 15:48
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 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.
cs_pompoire
Messages postés8Date d'inscriptionlundi 14 mai 2007StatutMembreDernière intervention12 janvier 20101 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.
cs_pompoire
Messages postés8Date d'inscriptionlundi 14 mai 2007StatutMembreDernière intervention12 janvier 20101 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 ?
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 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+
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_pompoire
Messages postés8Date d'inscriptionlundi 14 mai 2007StatutMembreDernière intervention12 janvier 20101 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