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

Protection auto à la fermeture du fichier

13 réponses
Avatar
YANN24
Bonjour,
je voudrais savoir comment faire pour que mes feuilles 01, 02 et 03 soient
automatiquement protégée par le mot "passe" lorsque je quitte le fichier.

Voici déjà ce que j'ai dans mon workbook:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Save
End Sub

Merci d'avance
YANN

3 réponses

1 2
Avatar
YANN24
OK, je te remercie, et pour ta réponse sur l'autre sujet aussi.
Je vais essayer ça, mais pas avant Samedi, car mon boulot m'attend.
Je reviens Samedi aprèm normalement.
BYE.

Yann


re,

for I=1 to sheets.count veut simplement dire que l'on parcourt l'ensemble de
la collection des feuilles du classeur actif ( que les feuilles soient des
feuilles de calcul ou des feuilles graphiques d'ailleurs).L'indexation dans
la collection sheets est liée à la position des onglets dans le classeur.
Il reste donc lors de ce parcours à déterminer si une feuille doit subir un
traitement particulier auquel cas il faut bien en répérer un caractère
discriminant pour lui faire subir ce traitement.
C'est l'objet de la 1ere méthode que je te proposais

For i = 1 To sheets.count

if Sheets(i).name="01" or Sheets(i).name="02" or Sheets(i).name="03"
then sheets(i).Protect Password:="passe"

Next i

Si par contre , on ne souhaite pas faire un parcours de l'ensemble des
feuilles, ce qu'il faut faire c'est déclarer p.e par avance un tableau
contenant le nom des feuilles pour lesquelles un traitement particulier doit
avoir lieu, et au lieu de parcourir la collection des feuilles , on parcourt
"la collection" des éléments du tableau.
C'est l'objet de la 2eme méthode que je te proposais

Private Sub Workbook_BeforeClose(Cancel As Boolean)

tabsheets = Array(Sheets("01"), Sheets("02"), Sheets("03"))
For i = LBound(tabsheets) To UBound(tabsheets)
tabsheets(i).Protect "passe"
Next

ActiveWorkbook.Save
End Sub

Enfin, dans la procédure que tu me soumets ( qui est d'ailleurs au fond une
version de la 2eme méthode), il faudra que tu écrives

With Sheets(tabl(I))
.activate
.Unprotect "code"
. Range("F:F,G:G,H:H,J:J,M:M,N:N,O:O").EntireColumn.Hidden = True
.Protect "code"
End With

car en effet, il ya nécéssité d'activer la feuille pour cacher des
colonnes.Il me semble d'ailleurs t'avoir déjà répondu dans un fil de fin de
semaine dernière excatement la même chose.

A+


Salut,
en fait mes feuilles ne suivent pas une suite, donc je crois que
'For i = 1 To sheets.count puisse fonctionner (je ne sais pas?).
Donc, je voudrais 1 ligne de commande VBA pour sélectionner mes 13 feuilles,
genre :
' tabl = Array("01.05", "02.05", "03.05", "04.05", "05.05", "06.05",
"07.05", "08.05", "09.05", "10.05", "11.05", "12.05")
' For I = LBound(tabl) To UBound(tabl)
' With Sheets(tabl(I))
' Unprotect "code"
' Range("F:F,G:G,H:H,J:J,M:M,N:N,O:O").EntireColumn.Hidden = True
' Protect "code"
' End With
' Next

Est ce que ça marcherais?
Merci d'avance.
YANN



re,

prends connaissance de ma réponse pour te donner une idée d'une
fermeture en ne protegeant que qelques feuilles.
Que veux-tu dire d'ailleurs, par selectionner sur une ligne ?

A+

Salut

en fait, mes feuilles se nomment 01.05, 02.05, ... jusque 12.05, et au CP 05.
Et donc, je veux un moyen rapide de les verouiller à la fermeture, en les
sélectionnnant sur une ligne.
Si ta la réponse à mon pb, merci d'avance.

YANN



Salut
-si par feuilles 01, 02 et 03 tu entant le numéro d'index de tes feuilles

Private Sub Workbook_BeforeClose(Cancel As Boolean)
For i = 1 To 3
Worksheets(i).Protect Password:="toto", _
DrawingObjects:=True, Contents:=True, Scenarios:=True
Next i
ActiveWorkbook.Save
End Sub

-Si 01, 02 et 03 sont les noms de tes feuilles

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets("01").Protect Password:="toto", _
DrawingObjects:=True, Contents:=True, Scenarios:=True

Worksheets("02").Protect Password:="toto", _
DrawingObjects:=True, Contents:=True, Scenarios:=True

Worksheets("03").Protect Password:="toto", _
DrawingObjects:=True, Contents:=True, Scenarios:=True

ActiveWorkbook.Save
End Sub

denis p.

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

Bonjour,
je voudrais savoir comment faire pour que mes feuilles 01, 02 et 03 soient
automatiquement protégée par le mot "passe" lorsque je quitte le fichier.

Voici déjà ce que j'ai dans mon workbook:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Save
End Sub

Merci d'avance
YANN
















Avatar
anomymousA
Effectivement, erreur de la banque en votre faveur. J'ai répondu trop vite
sans vérifier.

A+


Bonjour,

C'est quoi cette nécessité d'activer la feuille pour masquer des
colonnes ? c'est nouveau, ça vient de sortir ? ;-))

Il est exceptionnel de devoir activer un objet pour modifier une propriété.

Le code ci-dessous fonctionne très bien

Sheets(2).Column("B:F").Hidden = True

même si la feuille correspondant à Sheets(2) n'est pas la feuille active.




Enfin, dans la procédure que tu me soumets ( qui est d'ailleurs au fond une
version de la 2eme méthode), il faudra que tu écrives

With Sheets(tabl(I))
.activate
.Unprotect "code"
. Range("F:F,G:G,H:H,J:J,M:M,N:N,O:O").EntireColumn.Hidden = True
.Protect "code"
End With

car en effet, il ya nécéssité d'activer la feuille pour cacher des
colonnes.Il me semble d'ailleurs t'avoir déjà répondu dans un fil de fin de
semaine dernière excatement la même chose.

A+




--
Cordialement,

Michel Gaboly
www.gaboly.com




Avatar
Michel Gaboly
;-))

Effectivement, erreur de la banque en votre faveur. J'ai répondu trop vite
sans vérifier.

A+



Bonjour,

C'est quoi cette nécessité d'activer la feuille pour masquer des
colonnes ? c'est nouveau, ça vient de sortir ? ;-))

Il est exceptionnel de devoir activer un objet pour modifier une propriété.

Le code ci-dessous fonctionne très bien

Sheets(2).Column("B:F").Hidden = True

même si la feuille correspondant à Sheets(2) n'est pas la feuille active.




Enfin, dans la procédure que tu me soumets ( qui est d'ailleurs au fond une
version de la 2eme méthode), il faudra que tu écrives

With Sheets(tabl(I))
.activate
.Unprotect "code"
. Range("F:F,G:G,H:H,J:J,M:M,N:N,O:O").EntireColumn.Hidden = True
.Protect "code"
End With

car en effet, il ya nécéssité d'activer la feuille pour cacher des
colonnes.Il me semble d'ailleurs t'avoir déjà répondu dans un fil de fin de
semaine dernière excatement la même chose.

A+




--
Cordialement,

Michel Gaboly
www.gaboly.com





--
Cordialement,

Michel Gaboly
www.gaboly.com



1 2