OVH Cloud OVH Cloud

Proteger / deproteger une feuille en vb

1 réponse
Avatar
Snip
Salut a tous,

Voila, G une feuille qui contient des infos qui sont modifier par une saisie
dans une form.
Pour eviter que l'utilisateur ne mette ses gros doigts :) dans la feuille,
elle est protegé, MAIS SANS MOT DE PASSE
Voici en gros le traitement lors de la validation de la Form
...
If ActiveWorkbook.Worksheets(MainSheetName).ProtectContents = True Then '(si
la feuille est protegé, je deprotege)
ActiveWorkbook.Worksheets(MainSheetName).Unprotect
endif
...
'(Ici je modifi les infos sur la feuille)
...
ActiveWorkBook.Worksheets(MainSheetName).Protect '(Je reprotege la feuille)
Unload MaForme '(et je ferme la forme)

Mais voila.. si la feuille est deja protegée, j'ai un "La methode Unprotect
de la classe worksheets a echoué" et dans le cas ou lors de l'appel de la
form, la feuille n'est pas protege, c'est la méthode protect qui plante ("La
methode Protect de la classe worksheets a echoué")

Voici le code reel, ca peut ptet servir
......
'Met à jour la feuille
If ActiveWorkbook.Worksheets(MainSheetName).ProtectContents = True Then
ActiveWorkbook.Worksheets(MainSheetName).Unprotect '<- Ca bloque ici si la
feuille etait protegée sans mdp lors de l'appel
Compteur = 1
Do While ActiveWorkbook.Sheets(DBSheetName).Cells(DBdepart - 1,
Compteur).Value <> ""
RefCell = ActiveWorkbook.Sheets(DBSheetName).Cells(DBrefCell, Compteur)
If RefCell <> "" Then
ActiveWorkbook.Sheets(MainSheetName).Range(RefCell).Value =
ActiveWorkbook.Sheets(DBSheetName).Cells(Ligne, Compteur).Value
End If
Compteur = Compteur + 1
Loop
' ActiveSheet.Protect <-- G essayé ca aussi, pas mieux ...
ActiveWorkbook.Worksheets(MainSheetName).Unprotect '<- Ca bloque ici si la
feuille n'etait pas protegé lors de l'appel
Unload Form_selection_client

Merci !!
+

1 réponse

Avatar
papou
Bonjour
ProtectionMode te renvoie TRUE si la feuille est protégée et FALSE sinon, tu
peux donc effectuer ce test avant de vouloir protéger ou déprotéger :
'Exemple :
If Sheets("TaFeuille").ProtectionMode Then
Sheets("TaFeuille").UnProtect
End If
Cordialement

PS : Evite les grossièretés même si elles paraissent masquées

Pascal

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

Salut a tous,

Voila, G une feuille qui contient des infos qui sont modifier par une
saisie

dans une form.
Pour eviter que l'utilisateur ne mette ses gros doigts :) dans la feuille,
elle est protegé, MAIS SANS MOT DE PASSE
Voici en gros le traitement lors de la validation de la Form
...
If ActiveWorkbook.Worksheets(MainSheetName).ProtectContents = True Then
'(si

la feuille est protegé, je deprotege)
ActiveWorkbook.Worksheets(MainSheetName).Unprotect
endif
...
'(Ici je modifi les infos sur la feuille)
...
ActiveWorkBook.Worksheets(MainSheetName).Protect '(Je reprotege la
feuille)

Unload MaForme '(et je ferme la forme)

Mais voila.. si la feuille est deja protegée, j'ai un "La methode
Unprotect

de la classe worksheets a echoué" et dans le cas ou lors de l'appel de la
form, la feuille n'est pas protege, c'est la méthode protect qui plante
("La

methode Protect de la classe worksheets a echoué")

Voici le code reel, ca peut ptet servir
......
'Met à jour la feuille
If ActiveWorkbook.Worksheets(MainSheetName).ProtectContents = True Then
ActiveWorkbook.Worksheets(MainSheetName).Unprotect '<- Ca bloque ici si
la

feuille etait protegée sans mdp lors de l'appel
Compteur = 1
Do While ActiveWorkbook.Sheets(DBSheetName).Cells(DBdepart - 1,
Compteur).Value <> ""
RefCell = ActiveWorkbook.Sheets(DBSheetName).Cells(DBrefCell, Compteur)
If RefCell <> "" Then
ActiveWorkbook.Sheets(MainSheetName).Range(RefCell).Value > ActiveWorkbook.Sheets(DBSheetName).Cells(Ligne, Compteur).Value
End If
Compteur = Compteur + 1
Loop
' ActiveSheet.Protect <-- G essayé ca aussi, pas mieux ...
ActiveWorkbook.Worksheets(MainSheetName).Unprotect '<- Ca bloque ici si la
feuille n'etait pas protegé lors de l'appel
Unload Form_selection_client

Merci !!
+