Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Enlever protection feuille dans macro

6 réponses
Avatar
Caroline L.
Bonjour à tous et toutes !

J'ai besoin de vos lumières pour ajuster le code de la macro qui suit. La
difficulté se trouve à la ligne qui enlève la protection de la feuille.
C'est qu'il peut arriver que la feuille soit protégée (avec mot de passe
1234) et il se peut également qu'elle ne le soit pas. Je désire qu'en
cliquant sur la macro "Sub testing" si la feuille est protégée, la
protection s'enlève (ok, je crois que cela fonctionne avec mon code actuel)
ET JE DÉSIRE que si la feuille n'est pas protégé, la macro suit son cours
normal (c'est là que ma macro ne fonctionne pas).

--------------------------------------
Sub testing()

If ActiveWorkbook.ProtectStructure = True Then
Exit Sub
Else


'enlever la protection Feuille si tel est le cas

Dim ws As Worksheet
Set ws = ActiveSheet
If ws.ProtectContents Then <---------------------------------
ws.Unprotect "1234" <---------------------------------

Else <---------------------------------


'la reste de ma macro
bla bla bla

End if
End sub

Merci pour votre aide

Caroline

6 réponses

Avatar
michdenis
Bonjour Caroline,

En supposant que j'ai compris la donne,

'------------------------
Sub test()

Dim ws As Worksheet

If ActiveWorkbook.ProtectStructure = True Then
Exit Sub
Else
Set ws = ActiveSheet
If ws.ProtectContents Then
On Error Resume Next
ws.Unprotect "1234"
Err = 0
ws.Unprotect
Else

End If

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


Salutations!



"Caroline L." a écrit dans le message de news: %
Bonjour à tous et toutes !

J'ai besoin de vos lumières pour ajuster le code de la macro qui suit. La
difficulté se trouve à la ligne qui enlève la protection de la feuille.
C'est qu'il peut arriver que la feuille soit protégée (avec mot de passe
1234) et il se peut également qu'elle ne le soit pas. Je désire qu'en
cliquant sur la macro "Sub testing" si la feuille est protégée, la
protection s'enlève (ok, je crois que cela fonctionne avec mon code actuel)
ET JE DÉSIRE que si la feuille n'est pas protégé, la macro suit son cours
normal (c'est là que ma macro ne fonctionne pas).

--------------------------------------
Sub testing()

If ActiveWorkbook.ProtectStructure = True Then
Exit Sub
Else


'enlever la protection Feuille si tel est le cas

Dim ws As Worksheet
Set ws = ActiveSheet
If ws.ProtectContents Then <---------------------------------
ws.Unprotect "1234" <---------------------------------

Else <---------------------------------


'la reste de ma macro
bla bla bla

End if
End sub

Merci pour votre aide

Caroline
Avatar
Caroline L.
Bonjour michdenis,

j'ai essayé ton code et le résultat est le même que le mien, c'est-à-dire
que si la feuille est protégée et que je clique sur ma macro, la seule
action que la macro va exécuter c'est d'enlever la protection de la feuille
mais ma macro ne poursuit pas son cours (elle arrête après avoir enlevé la
protection). Je dois alors re-cliquer sur ma macro et là c'est correct (le
reste de la macro est effectuée).

Faudrait pouvoir dire en vb :
si la feuille est protégée : enlève la protection avec "1234" et continue
la macro
si la feuille n'est pas protégée : parfait !, continue la macro


Merci michdenis

Caroline


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

Bonjour Caroline,

En supposant que j'ai compris la donne,

'------------------------
Sub test()

Dim ws As Worksheet

If ActiveWorkbook.ProtectStructure = True Then
Exit Sub
Else
Set ws = ActiveSheet
If ws.ProtectContents Then
On Error Resume Next
ws.Unprotect "1234"
Err = 0
ws.Unprotect
Else

End If

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


Salutations!



"Caroline L." a écrit dans le message de news:
%

Bonjour à tous et toutes !

J'ai besoin de vos lumières pour ajuster le code de la macro qui suit. La
difficulté se trouve à la ligne qui enlève la protection de la feuille.
C'est qu'il peut arriver que la feuille soit protégée (avec mot de passe
1234) et il se peut également qu'elle ne le soit pas. Je désire qu'en
cliquant sur la macro "Sub testing" si la feuille est protégée, la
protection s'enlève (ok, je crois que cela fonctionne avec mon code
actuel)

ET JE DÉSIRE que si la feuille n'est pas protégé, la macro suit son cours
normal (c'est là que ma macro ne fonctionne pas).

--------------------------------------
Sub testing()

If ActiveWorkbook.ProtectStructure = True Then
Exit Sub
Else


'enlever la protection Feuille si tel est le cas

Dim ws As Worksheet
Set ws = ActiveSheet
If ws.ProtectContents Then <---------------------------------
ws.Unprotect "1234" <---------------------------------

Else <---------------------------------


'la reste de ma macro
bla bla bla

End if
End sub

Merci pour votre aide

Caroline






Avatar
Érico
Pourquoi pas, Voici un exemple....

__________________________________________________________
MsgBox " Salut Paul! "
MsgBox " Voici une nouvelle macro; "

Dim A As Variant, B As Range, C As Integer
A = Application.InputBox(Prompt:="Combien de lignes faut-il insérer?",
Type:=1)
MsgBox " La ligne ou les lignes seront insérées par dessus. "
If A = "Faux" Then Exit Sub
If A <= 0 Then Exit Sub
'-----------------------
Rem rajouter
ActiveSheet.Protect password:="thepass", userinterfaceonly:=True
'-----------------------

On Error Resume Next
Set B = Application.InputBox(Prompt:="Sélectionner la cellule.", Type:=8)
If Err <> 0 Then
Err = 0
Exit Sub
Else
For C = 1 To A
B.EntireRow.Insert
Range("c" & B.Row & ":" & "d" & B.Row).Copy Range("c" & B.Row - 1 &
":" & "d" & B.Row - 1)
Range("h" & B.Row & ":" & "i" & B.Row).Copy Range("h" & B.Row - 1 &
":" & "i" & B.Row - 1)
Range("A" & B.Row - 1 & ":j" & B.Row - 1).Interior.ColorIndex = 12
'Range("A" & B.Row - 1 & ":j" & B.Row - 1).Interior.ColorIndex = 4
'****rouge***

Next
End If
Range("A7:A8").Select
Selection.AutoFill Destination:=Range("A7:A60")
Range("A7:A60").Select
________________________________________________________
"Caroline L." a écrit dans le message de news:

Bonjour michdenis,

j'ai essayé ton code et le résultat est le même que le mien, c'est-à-dire
que si la feuille est protégée et que je clique sur ma macro, la seule
action que la macro va exécuter c'est d'enlever la protection de la
feuille
mais ma macro ne poursuit pas son cours (elle arrête après avoir enlevé la
protection). Je dois alors re-cliquer sur ma macro et là c'est correct (le
reste de la macro est effectuée).

Faudrait pouvoir dire en vb :
si la feuille est protégée : enlève la protection avec "1234" et continue
la macro
si la feuille n'est pas protégée : parfait !, continue la macro


Merci michdenis

Caroline


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

Bonjour Caroline,

En supposant que j'ai compris la donne,

'------------------------
Sub test()

Dim ws As Worksheet

If ActiveWorkbook.ProtectStructure = True Then
Exit Sub
Else
Set ws = ActiveSheet
If ws.ProtectContents Then
On Error Resume Next
ws.Unprotect "1234"
Err = 0
ws.Unprotect
Else

End If

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


Salutations!



"Caroline L." a écrit dans le message de news:
%

Bonjour à tous et toutes !

J'ai besoin de vos lumières pour ajuster le code de la macro qui suit. La
difficulté se trouve à la ligne qui enlève la protection de la feuille.
C'est qu'il peut arriver que la feuille soit protégée (avec mot de passe
1234) et il se peut également qu'elle ne le soit pas. Je désire qu'en
cliquant sur la macro "Sub testing" si la feuille est protégée, la
protection s'enlève (ok, je crois que cela fonctionne avec mon code
actuel)

ET JE DÉSIRE que si la feuille n'est pas protégé, la macro suit son cours
normal (c'est là que ma macro ne fonctionne pas).

--------------------------------------
Sub testing()

If ActiveWorkbook.ProtectStructure = True Then
Exit Sub
Else


'enlever la protection Feuille si tel est le cas

Dim ws As Worksheet
Set ws = ActiveSheet
If ws.ProtectContents Then <---------------------------------
ws.Unprotect "1234" <---------------------------------

Else <---------------------------------


'la reste de ma macro
bla bla bla

End if
End sub

Merci pour votre aide

Caroline










Avatar
michdenis
bonjour Caroline,

J'ai seulement tenté de réécrire un bout de code en fonction de ce que je comprenais de ta demande.

Dans la procédure suivante, tu n'as aucune ligne de code à exécuter après que la feuille a été déprotégée...Que puis-je faire
d'autre ?

'-------------------------------------
Sub test()

Dim ws As Worksheet

If ActiveWorkbook.ProtectStructure = True Then
Exit Sub
Else
Set ws = ActiveSheet
If ws.ProtectContents Then
On Error Resume Next
ws.Unprotect "1234"
Err = 0
ws.Unprotect
Else

End If

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


Salutations!



"Caroline L." a écrit dans le message de news:
Bonjour michdenis,

j'ai essayé ton code et le résultat est le même que le mien, c'est-à-dire
que si la feuille est protégée et que je clique sur ma macro, la seule
action que la macro va exécuter c'est d'enlever la protection de la feuille
mais ma macro ne poursuit pas son cours (elle arrête après avoir enlevé la
protection). Je dois alors re-cliquer sur ma macro et là c'est correct (le
reste de la macro est effectuée).

Faudrait pouvoir dire en vb :
si la feuille est protégée : enlève la protection avec "1234" et continue
la macro
si la feuille n'est pas protégée : parfait !, continue la macro


Merci michdenis

Caroline


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

Bonjour Caroline,

En supposant que j'ai compris la donne,

'------------------------
Sub test()

Dim ws As Worksheet

If ActiveWorkbook.ProtectStructure = True Then
Exit Sub
Else
Set ws = ActiveSheet
If ws.ProtectContents Then
On Error Resume Next
ws.Unprotect "1234"
Err = 0
ws.Unprotect
Else

End If

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


Salutations!



"Caroline L." a écrit dans le message de news:
%

Bonjour à tous et toutes !

J'ai besoin de vos lumières pour ajuster le code de la macro qui suit. La
difficulté se trouve à la ligne qui enlève la protection de la feuille.
C'est qu'il peut arriver que la feuille soit protégée (avec mot de passe
1234) et il se peut également qu'elle ne le soit pas. Je désire qu'en
cliquant sur la macro "Sub testing" si la feuille est protégée, la
protection s'enlève (ok, je crois que cela fonctionne avec mon code
actuel)

ET JE DÉSIRE que si la feuille n'est pas protégé, la macro suit son cours
normal (c'est là que ma macro ne fonctionne pas).

--------------------------------------
Sub testing()

If ActiveWorkbook.ProtectStructure = True Then
Exit Sub
Else


'enlever la protection Feuille si tel est le cas

Dim ws As Worksheet
Set ws = ActiveSheet
If ws.ProtectContents Then <---------------------------------
ws.Unprotect "1234" <---------------------------------

Else <---------------------------------


'la reste de ma macro
bla bla bla

End if
End sub

Merci pour votre aide

Caroline






Avatar
Caroline L.
Bonjour michdenis,

oui je sais qu'il n'y a aucune ligne de code dans l'exemple que j'ai posté
mais j'ai adapté ce que tu m'as fourni et je vois que la macro "arrête"
après avoir enlevé la protection de la feuille.
Je peux quand même te fournir le code en entier :


Sub test()

If ActiveWorkbook.ProtectStructure = True Then
Exit Sub
Else

Set ws = ActiveSheet
If ws.ProtectContents Then
On Error Resume Next
ws.Unprotect "1234"
Err = 0
ws.Unprotect
Else

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

Columns("B:D").SelectSelection.EntireColumn.Hidden = False

Range("e11").Select
Selection.Interior.ColorIndex = 30

Range("K50, K52, K54").Activate
With Selection.Interior
.ColorIndex = 15
.Pattern = xlGray50
.PatternColorIndex = 42
End With

End If

End If
End sub


Voilà. Est-il possible pour toi de dire ce qui cloche dans mon code ?

Merci pour ton aide

Caroline


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

bonjour Caroline,

J'ai seulement tenté de réécrire un bout de code en fonction de ce que je
comprenais de ta demande.


Dans la procédure suivante, tu n'as aucune ligne de code à exécuter après
que la feuille a été déprotégée...Que puis-je faire

d'autre ?

'-------------------------------------
Sub test()

Dim ws As Worksheet

If ActiveWorkbook.ProtectStructure = True Then
Exit Sub
Else
Set ws = ActiveSheet
If ws.ProtectContents Then
On Error Resume Next
ws.Unprotect "1234"
Err = 0
ws.Unprotect
Else

End If

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


Salutations!



"Caroline L." a écrit dans le message de news:


Bonjour michdenis,

j'ai essayé ton code et le résultat est le même que le mien, c'est-à-dire
que si la feuille est protégée et que je clique sur ma macro, la seule
action que la macro va exécuter c'est d'enlever la protection de la
feuille

mais ma macro ne poursuit pas son cours (elle arrête après avoir enlevé la
protection). Je dois alors re-cliquer sur ma macro et là c'est correct (le
reste de la macro est effectuée).

Faudrait pouvoir dire en vb :
si la feuille est protégée : enlève la protection avec "1234" et continue
la macro
si la feuille n'est pas protégée : parfait !, continue la macro


Merci michdenis

Caroline


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

Bonjour Caroline,

En supposant que j'ai compris la donne,

'------------------------
Sub test()

Dim ws As Worksheet

If ActiveWorkbook.ProtectStructure = True Then
Exit Sub
Else
Set ws = ActiveSheet
If ws.ProtectContents Then
On Error Resume Next
ws.Unprotect "1234"
Err = 0
ws.Unprotect
Else

End If

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


Salutations!



"Caroline L." a écrit dans le message de news:
%

Bonjour à tous et toutes !

J'ai besoin de vos lumières pour ajuster le code de la macro qui suit.
La


difficulté se trouve à la ligne qui enlève la protection de la feuille.
C'est qu'il peut arriver que la feuille soit protégée (avec mot de passe
1234) et il se peut également qu'elle ne le soit pas. Je désire qu'en
cliquant sur la macro "Sub testing" si la feuille est protégée, la
protection s'enlève (ok, je crois que cela fonctionne avec mon code
actuel)

ET JE DÉSIRE que si la feuille n'est pas protégé, la macro suit son
cours


normal (c'est là que ma macro ne fonctionne pas).

--------------------------------------
Sub testing()

If ActiveWorkbook.ProtectStructure = True Then
Exit Sub
Else


'enlever la protection Feuille si tel est le cas

Dim ws As Worksheet
Set ws = ActiveSheet
If ws.ProtectContents Then <---------------------------------
ws.Unprotect "1234" <---------------------------------

Else <---------------------------------


'la reste de ma macro
bla bla bla

End if
End sub

Merci pour votre aide

Caroline











Avatar
michdenis
Bonjour Caroline,

Je ne sais pas ce que tu veux faire et quelles sont tes attentes, mais je te propose ceci :
Ta feuille devrait avoir la même protection à la fin qu'au début de la procédure !

'------------------------------------
Sub test()

Dim Ws As Worksheet
Dim MotDePasse As String, Temp As String
MotDePasse = "1234"

If ActiveWorkbook.ProtectStructure = True Then
Exit Sub
Else
Set Ws = ActiveSheet
If Ws.ProtectContents Then
On Error Resume Next
Ws.Unprotect MotDePasse
If Err <> 0 Then
Err = 0
Temp = ""
Else
Temp = MotDePasse
End If
Else
Temp = ""
End If
Ws.Unprotect
'ActiveWindow.SelectedSheets.PrintOut _
Copies:=1, Collate:=True

Columns("B:D").SelectSelection. _
EntireColumn.Hidden = False

Range("e11").Select
Selection.Interior.ColorIndex = 30

Range("K50, K52, K54").Activate
With Selection.Interior
.ColorIndex = 15
.Pattern = xlGray50
.PatternColorIndex = 42
End With
Ws.Protect Temp
End If
End Sub
'------------------------------------


Salutations!



"Caroline L." a écrit dans le message de news:
Bonjour michdenis,

oui je sais qu'il n'y a aucune ligne de code dans l'exemple que j'ai posté
mais j'ai adapté ce que tu m'as fourni et je vois que la macro "arrête"
après avoir enlevé la protection de la feuille.
Je peux quand même te fournir le code en entier :


Sub test()

If ActiveWorkbook.ProtectStructure = True Then
Exit Sub
Else

Set ws = ActiveSheet
If ws.ProtectContents Then
On Error Resume Next
ws.Unprotect "1234"
Err = 0
ws.Unprotect
Else

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

Columns("B:D").SelectSelection.EntireColumn.Hidden = False

Range("e11").Select
Selection.Interior.ColorIndex = 30

Range("K50, K52, K54").Activate
With Selection.Interior
.ColorIndex = 15
.Pattern = xlGray50
.PatternColorIndex = 42
End With

End If

End If
End sub


Voilà. Est-il possible pour toi de dire ce qui cloche dans mon code ?

Merci pour ton aide

Caroline


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

bonjour Caroline,

J'ai seulement tenté de réécrire un bout de code en fonction de ce que je
comprenais de ta demande.


Dans la procédure suivante, tu n'as aucune ligne de code à exécuter après
que la feuille a été déprotégée...Que puis-je faire

d'autre ?

'-------------------------------------
Sub test()

Dim ws As Worksheet

If ActiveWorkbook.ProtectStructure = True Then
Exit Sub
Else
Set ws = ActiveSheet
If ws.ProtectContents Then
On Error Resume Next
ws.Unprotect "1234"
Err = 0
ws.Unprotect
Else

End If

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


Salutations!



"Caroline L." a écrit dans le message de news:


Bonjour michdenis,

j'ai essayé ton code et le résultat est le même que le mien, c'est-à-dire
que si la feuille est protégée et que je clique sur ma macro, la seule
action que la macro va exécuter c'est d'enlever la protection de la
feuille

mais ma macro ne poursuit pas son cours (elle arrête après avoir enlevé la
protection). Je dois alors re-cliquer sur ma macro et là c'est correct (le
reste de la macro est effectuée).

Faudrait pouvoir dire en vb :
si la feuille est protégée : enlève la protection avec "1234" et continue
la macro
si la feuille n'est pas protégée : parfait !, continue la macro


Merci michdenis

Caroline


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

Bonjour Caroline,

En supposant que j'ai compris la donne,

'------------------------
Sub test()

Dim ws As Worksheet

If ActiveWorkbook.ProtectStructure = True Then
Exit Sub
Else
Set ws = ActiveSheet
If ws.ProtectContents Then
On Error Resume Next
ws.Unprotect "1234"
Err = 0
ws.Unprotect
Else

End If

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


Salutations!



"Caroline L." a écrit dans le message de news:
%

Bonjour à tous et toutes !

J'ai besoin de vos lumières pour ajuster le code de la macro qui suit.
La


difficulté se trouve à la ligne qui enlève la protection de la feuille.
C'est qu'il peut arriver que la feuille soit protégée (avec mot de passe
1234) et il se peut également qu'elle ne le soit pas. Je désire qu'en
cliquant sur la macro "Sub testing" si la feuille est protégée, la
protection s'enlève (ok, je crois que cela fonctionne avec mon code
actuel)

ET JE DÉSIRE que si la feuille n'est pas protégé, la macro suit son
cours


normal (c'est là que ma macro ne fonctionne pas).

--------------------------------------
Sub testing()

If ActiveWorkbook.ProtectStructure = True Then
Exit Sub
Else


'enlever la protection Feuille si tel est le cas

Dim ws As Worksheet
Set ws = ActiveSheet
If ws.ProtectContents Then <---------------------------------
ws.Unprotect "1234" <---------------------------------

Else <---------------------------------


'la reste de ma macro
bla bla bla

End if
End sub

Merci pour votre aide

Caroline