Supprimer une ligne dans feuille protégée

INFRA

XLDnaute Nouveau
Bonjour,

Je souhaiterais savoir si il n'y a pas un moyen d'autoriser la suppressio de ligne malgré la protection de la feuille.
Je m'explique: j'ai une feuille de saisie (un tableau) ou certaines colonnes sont protégées (celles ou il y a des formules). je souhaiterais néanmoins autoriser la suppression de ligne si nécessaire.
J'ai bien cocher la case autoriser spprimer ligne dans le menu de protection mais cela ne fonctionne pas.
J'ai ensuite essayé par macro:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Plage As Range

Plage = Range.Rows("1:500")


If Rows(Plage).Select Then
ActiveSheet.Unprotect
Else
ActiveSheet.Protect
End If

End Sub

même résultat.
Petite info supplémentaire, je souhaiterais pouvoir activer cette macro seulement dans le cas ou la ligne entière est selectionné, dans la plage donnée

Y a t il une solution?
 

Pierrot93

XLDnaute Barbatruc
Re : Supprimer une ligne dans feuille protégée

Bonjour,

pour que tu puisses supprimer la ligne, il faut que les toutes les cellules de cette même ligne soient déverouillées.... Par vba, il faut déprotéger ta feuille en début de procédure et le re-protéger à la fin... Autre solution, que la protection de la feuille soit faite par vba en utilisant l'argument "userinterfaceonly" de la méthode "protect" (F1 dans l'éditeur vba sur ce mot te donnera d'autres infos)...

bon après midi
@+
 

INFRA

XLDnaute Nouveau
Re : Supprimer une ligne dans feuille protégée

Bonjour et merci pour ta reponse Pierrot93,

concernant le fait de protégern et déproteger ma feuille, c'est ce que je fait dans ma macro avec ActiveSheet.Unprotect et ActiveSheet.Protect
car en fait je veux que ma feuille se dévérouile seulement quand une ligne entière est selectionner. Autrement je veux qu'elle reste vérouillé.

Je n'ai pas trouvé "userinterfaceonly" dans l'aide vba.

@+
 

INFRA

XLDnaute Nouveau
Re : Supprimer une ligne dans feuille protégée

J'ai le début d'un autre bout de code:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Plage As Range

Set Plage = Intersect(Target, Range("1:500"))

If Plage Is Nothing Then Exit Sub

For Each Target In Plage

If Plage.Rows.Select = True Then
ActiveSheet.Unprotect
Plage.Rows.Select
Selection.Locked = False
Selection.FormulaHidden = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowDeletingRows:=True
End If

Next

End Sub

Le probleme et que du coup il me déverouille toute la plage alors que je souhaitrais qu'il ne me dévérouille que la ligne selectionner pour que je puisse la supprimer.
 

Pierrot93

XLDnaute Barbatruc
Re : Supprimer une ligne dans feuille protégée

Re,

extrait de l'aide vba, sur l'argument "UserInterfaceOnly" de la méthode "protect" :
UserInterfaceOnly Argument de type Variant facultatif. Cet argument a la valeur True pour protéger l'interface utilisateur, mais pas les macros. Si cet argument n'est pas spécifié, la protection s'applique à la fois aux macros et à l'interface utilisateur.

exemple de code à placer dans le module "thisworkbook", se déclenche à l'ouverture du classeur :
Code:
Option Explicit
Private Sub Workbook_Open()
Feuil1.Protect "toto", userinterfaceonly:=True
End Sub
 

Discussions similaires

Réponses
2
Affichages
445

Membres actuellement en ligne

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 020
dernier inscrit
Mzghal