Macro dans une feuille protégée

Fanny -  
 fanny -
Bonjour,

Je souhaiterais savoir si il y a une macro qui permet d'autoriser la suppression 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.

je veux que ma feuille se dévérouile seulement quand une ligne entière est selectionner. Autrement je veux qu'elle reste verrouiller et je souhaiterais que pouvoir activer cette macro seulement dans le cas ou la ligne entière est selectionné, dans la plage donnée

Merci
A voir également:

6 réponses

danielc0 Messages postés 1859 Date d'inscription   Statut Membre Dernière intervention   231
 
Bonjour,

Essaie :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Count = Columns.Count And Target.Rows.Count = 1 Then
    ActiveSheet.Unprotect
  End If
End Sub


Cordialement.

Daniel
0
fanny
 
Bonjour Daniel,

Ca ne fonctionne pas, lorsque je sélectionne la ligne à supprimer j'ai un message me demandant d'ôter la protection de la feuille alors que je veux que celle-ci reste protégée

Cordialement
0
danielc0 Messages postés 1859 Date d'inscription   Statut Membre Dernière intervention   231
 
Tu dois mettre le code dans le module de la feuille en question. Fais un clic droit sur l'onglet et clique sur "Visualiser le code". Colle alors celui-ci.

Daniel
0
JCB40 Messages postés 3013 Date d'inscription   Statut Membre Dernière intervention   463
 
Bonjour fanny

Ta feuille est protégée avec un mot de passe?
Cordialement
0
fanny
 
Bonjour JCB40,

Actuellement non mais en fonction de ce qui est possible comme solution pourquoi pas

Cordialement
0
fanny
 
Ca fonctionne néamoins une fois la suppression de la ligne sélectionnée faite l"ensemble des cellules restent dévérouillées et la feuille n'est plus protégée alors que je voudrais que la feuille entière reste protégée

Cordialement
0

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

Posez votre question
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour à tous,

il suffit de compléter le code :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count = Columns.Count And Target.Rows.Count = 1 Then
        If MsgBox("Supprimer la ligne ?", vbYesNo + vbQuestion) = vbYes Then
            ActiveSheet.Unprotect Password:="123"
            Target.EntireRow.Delete
            ActiveSheet.Protect Password:="123"
        End If
    End If
End Sub

J'ai ajouté également une demande de confirmation.
Si tu veux sans mot de passe supprimer Password:="123"
eric


0
fanny
 
Bonjour,
Merci beaucoup ça fonctionne mais je souhaiterais aussi en cas de besoin pouvoir aussi insérer des lignes
Comment dois je faire ?
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Re,

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count = Columns.Count And Target.Rows.Count = 1 Then
        ActiveSheet.Unprotect Password:="123"
        If MsgBox("Voulez-vous supprimer la ligne ?", vbYesNo + vbQuestion) = vbYes Then
            Target.EntireRow.Delete
        ElseIf MsgBox("Voulez-vous insérer une ligne ?", vbYesNo + vbQuestion) = vbYes Then
            Target.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        End If
        ActiveSheet.Protect Password:="123"
    End If
End Sub

eric

Edit : ou avec une seule boite de dialogue :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim msg As String
    If Target.Count = Columns.Count And Target.Rows.Count = 1 Then
        ActiveSheet.Unprotect Password:="123"
        msg = "Voulez-vous :" & vbLf & vbLf
        msg = msg & "- insérer une ligne (Oui)," & vbLf
        msg = msg & "- supprimer la ligne (Non)," & vbLf
        msg = msg & "- annuler"
        Select Case MsgBox(msg, vbYesNoCancel + vbQuestion)
        Case vbYes
            Target.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Case vbNo
            Target.EntireRow.Delete
        End Select
        ActiveSheet.Protect Password:="123"
    End If
End Sub
0
fanny
 
Eric ça fonctionne, c'est génial merci mille fois
0
fanny
 
Bonjour Eric,

Dans le prolongement de ma question je souhaiterai également qu'en plus de supprimer et d'insérer une ligne, la macro puisse aussi me proposer de couper, copier et coller

Comment faire ?

Merci de votre aide

Cordialement
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Dis plutôt ce que tu souhaites protéger, ça sera peut-être plus simple (?)
0
fanny
 
Je vous remercie tous pour l'aide apporter

Bonne soirée
0