Je reviens sur mon probl=E8me de verrouillage de formules
Je souhaite prot=E9ger les formules d'un certain nombre de feuilles de
mon classeur (pas toutes) par un bouton macro
J'utilise la macro suivante (MichD) que je souhaite adapter:
Sub test()
With Worksheets("Feuil1")
.Unprotect
With .Cells
.Locked =3D False
With .SpecialCells(xlCellTypeFormulas)
.Locked =3D True
End With
End With
.Protect 'Mot de passe si n=E9cessaire
End With
End Sub
Question:
1) o=F9 dois je placer cette proc=E9dure derri=E8re chacune des feuilles
(Jour 1 =E0 Jour 20), dans un module ou dans Thisworkbook ?
2) comment la faire fonctionner en bascule (Prot=E9ger/ D=E9prot=E9ger) ?
3) je souhaiterais porter l'information sur l'=E9tat de la protection,
sans doute par une Msgbox informant de l'activation ou non de la
protection, ou bien toute autre solution
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Gloops
michir a écrit, le 19/03/2011 08:29 :
Bonjour,
Je reviens sur mon problème de verrouillage de formules Je souhaite protéger les formules d'un certain nombre de feuilles de mon classeur (pas toutes) par un bouton macro J'utilise la macro suivante (MichD) que je souhaite adapter:
Sub test() With Worksheets("Feuil1") .Unprotect With .Cells .Locked = False With .SpecialCells(xlCellTypeFormulas) .Locked = True End With End With .Protect 'Mot de passe si nécessaire End With End Sub
Question: 1) où dois je placer cette procédure derrière chacune des feuille s (Jour 1 à Jour 20), dans un module ou dans Thisworkbook ? 2) comment la faire fonctionner en bascule (Protéger/ Déprotéger) ? 3) je souhaiterais porter l'information sur l'état de la protection, sans doute par une Msgbox informant de l'activation ou non de la protection, ou bien toute autre solution
Merci à tous Michel
Bonjour,
Tu auras peut-être remarqué la première ligne de la macro ? With Worksheets("Feuil1")
Tu peux mettre cette macro plus ou moins où tu veux (même si un modul e serait a priori plus sa place), elle traitera toujours la feuille "Feuil1" du classeur actif. Si aucune feuille ne s'appelle "Feuil1" ça déclenchera une erreur.
Si il y a plusieurs feuilles à traiter la première chose à faire es t de trouver un critère pour les désigner. Si il n'existe pas de critère tout prêt, il faudra créer un tableau avec la liste des feuilles dans une colonne, et dans une autre une valeur indiquant si on veut que la feuille correspondante soit traitée.
Admettons que le tableau où tu as fait la liste s'appelle ListeFeuilles
Set R = ActiveWorkbook.Names("ListeFeuilles").RefersToRange
For Each L in R.Rows If L.Cells(2) = -1 Test ThisWorkbook.Worksheets(L.Cells(1)) End If Next
Dans la macro Test tu mets le code que tu as donné ci-dessus mais en appelant le premier argument à la place de Worksheets("Feuil1")
Sub Test(W As Worksheet) With W .Unprotect 'Modifier .Protect End With End Sub
Voilà pour la première question.
michir a écrit, le 19/03/2011 08:29 :
Bonjour,
Je reviens sur mon problème de verrouillage de formules
Je souhaite protéger les formules d'un certain nombre de feuilles de
mon classeur (pas toutes) par un bouton macro
J'utilise la macro suivante (MichD) que je souhaite adapter:
Sub test()
With Worksheets("Feuil1")
.Unprotect
With .Cells
.Locked = False
With .SpecialCells(xlCellTypeFormulas)
.Locked = True
End With
End With
.Protect 'Mot de passe si nécessaire
End With
End Sub
Question:
1) où dois je placer cette procédure derrière chacune des feuille s
(Jour 1 à Jour 20), dans un module ou dans Thisworkbook ?
2) comment la faire fonctionner en bascule (Protéger/ Déprotéger) ?
3) je souhaiterais porter l'information sur l'état de la protection,
sans doute par une Msgbox informant de l'activation ou non de la
protection, ou bien toute autre solution
Merci à tous
Michel
Bonjour,
Tu auras peut-être remarqué la première ligne de la macro ?
With Worksheets("Feuil1")
Tu peux mettre cette macro plus ou moins où tu veux (même si un modul e
serait a priori plus sa place), elle traitera toujours la feuille
"Feuil1" du classeur actif. Si aucune feuille ne s'appelle "Feuil1" ça
déclenchera une erreur.
Si il y a plusieurs feuilles à traiter la première chose à faire es t de
trouver un critère pour les désigner. Si il n'existe pas de critère tout
prêt, il faudra créer un tableau avec la liste des feuilles dans une
colonne, et dans une autre une valeur indiquant si on veut que la
feuille correspondante soit traitée.
Admettons que le tableau où tu as fait la liste s'appelle ListeFeuilles
Set R = ActiveWorkbook.Names("ListeFeuilles").RefersToRange
For Each L in R.Rows
If L.Cells(2) = -1
Test ThisWorkbook.Worksheets(L.Cells(1))
End If
Next
Dans la macro Test tu mets le code que tu as donné ci-dessus mais en
appelant le premier argument à la place de Worksheets("Feuil1")
Sub Test(W As Worksheet)
With W
.Unprotect
'Modifier
.Protect
End With
End Sub
Je reviens sur mon problème de verrouillage de formules Je souhaite protéger les formules d'un certain nombre de feuilles de mon classeur (pas toutes) par un bouton macro J'utilise la macro suivante (MichD) que je souhaite adapter:
Sub test() With Worksheets("Feuil1") .Unprotect With .Cells .Locked = False With .SpecialCells(xlCellTypeFormulas) .Locked = True End With End With .Protect 'Mot de passe si nécessaire End With End Sub
Question: 1) où dois je placer cette procédure derrière chacune des feuille s (Jour 1 à Jour 20), dans un module ou dans Thisworkbook ? 2) comment la faire fonctionner en bascule (Protéger/ Déprotéger) ? 3) je souhaiterais porter l'information sur l'état de la protection, sans doute par une Msgbox informant de l'activation ou non de la protection, ou bien toute autre solution
Merci à tous Michel
Bonjour,
Tu auras peut-être remarqué la première ligne de la macro ? With Worksheets("Feuil1")
Tu peux mettre cette macro plus ou moins où tu veux (même si un modul e serait a priori plus sa place), elle traitera toujours la feuille "Feuil1" du classeur actif. Si aucune feuille ne s'appelle "Feuil1" ça déclenchera une erreur.
Si il y a plusieurs feuilles à traiter la première chose à faire es t de trouver un critère pour les désigner. Si il n'existe pas de critère tout prêt, il faudra créer un tableau avec la liste des feuilles dans une colonne, et dans une autre une valeur indiquant si on veut que la feuille correspondante soit traitée.
Admettons que le tableau où tu as fait la liste s'appelle ListeFeuilles
Set R = ActiveWorkbook.Names("ListeFeuilles").RefersToRange
For Each L in R.Rows If L.Cells(2) = -1 Test ThisWorkbook.Worksheets(L.Cells(1)) End If Next
Dans la macro Test tu mets le code que tu as donné ci-dessus mais en appelant le premier argument à la place de Worksheets("Feuil1")
Sub Test(W As Worksheet) With W .Unprotect 'Modifier .Protect End With End Sub
Voilà pour la première question.
LSteph
Bonjour,
Sub test() 'en repartant de celle de MD Dim Sh As Worksheet For Each Sh In ActiveWorkbook.Sheets
With Sh Select Case LCase(Left(.Name, 4)) Case Is = "jour" .Unprotect 'Mot de passe si nécessaire
With .Cells .Locked = False With .SpecialCells(xlCellTypeFormulas) .Locked = True End With End With .Protect 'Mot de passe si nécessaire End Select End With
Next Sh End Sub
'lSteph
"michir" a écrit dans le message de news: Bonjour,
Je reviens sur mon problème de verrouillage de formules Je souhaite protéger les formules d'un certain nombre de feuilles de mon classeur (pas toutes) par un bouton macro J'utilise la macro suivante (MichD) que je souhaite adapter:
Sub test() With Worksheets("Feuil1") .Unprotect With .Cells .Locked = False With .SpecialCells(xlCellTypeFormulas) .Locked = True End With End With .Protect 'Mot de passe si nécessaire End With End Sub
Question: 1) où dois je placer cette procédure derrière chacune des feuilles (Jour 1 à Jour 20), dans un module ou dans Thisworkbook ? 2) comment la faire fonctionner en bascule (Protéger/ Déprotéger) ? 3) je souhaiterais porter l'information sur l'état de la protection, sans doute par une Msgbox informant de l'activation ou non de la protection, ou bien toute autre solution
Merci à tous Michel
Bonjour,
Sub test()
'en repartant de celle de MD
Dim Sh As Worksheet
For Each Sh In ActiveWorkbook.Sheets
With Sh
Select Case LCase(Left(.Name, 4))
Case Is = "jour"
.Unprotect 'Mot de passe si nécessaire
With .Cells
.Locked = False
With .SpecialCells(xlCellTypeFormulas)
.Locked = True
End With
End With
.Protect 'Mot de passe si nécessaire
End Select
End With
Next Sh
End Sub
'lSteph
"michir" <mhirard@gmail.com> a écrit dans le message de
news:ba2b4642-7492-44d0-abe1-8686b0aa5a4d@d28g2000yqf.googlegroups.com...
Bonjour,
Je reviens sur mon problème de verrouillage de formules
Je souhaite protéger les formules d'un certain nombre de feuilles de
mon classeur (pas toutes) par un bouton macro
J'utilise la macro suivante (MichD) que je souhaite adapter:
Sub test()
With Worksheets("Feuil1")
.Unprotect
With .Cells
.Locked = False
With .SpecialCells(xlCellTypeFormulas)
.Locked = True
End With
End With
.Protect 'Mot de passe si nécessaire
End With
End Sub
Question:
1) où dois je placer cette procédure derrière chacune des feuilles
(Jour 1 à Jour 20), dans un module ou dans Thisworkbook ?
2) comment la faire fonctionner en bascule (Protéger/ Déprotéger) ?
3) je souhaiterais porter l'information sur l'état de la protection,
sans doute par une Msgbox informant de l'activation ou non de la
protection, ou bien toute autre solution
Sub test() 'en repartant de celle de MD Dim Sh As Worksheet For Each Sh In ActiveWorkbook.Sheets
With Sh Select Case LCase(Left(.Name, 4)) Case Is = "jour" .Unprotect 'Mot de passe si nécessaire
With .Cells .Locked = False With .SpecialCells(xlCellTypeFormulas) .Locked = True End With End With .Protect 'Mot de passe si nécessaire End Select End With
Next Sh End Sub
'lSteph
"michir" a écrit dans le message de news: Bonjour,
Je reviens sur mon problème de verrouillage de formules Je souhaite protéger les formules d'un certain nombre de feuilles de mon classeur (pas toutes) par un bouton macro J'utilise la macro suivante (MichD) que je souhaite adapter:
Sub test() With Worksheets("Feuil1") .Unprotect With .Cells .Locked = False With .SpecialCells(xlCellTypeFormulas) .Locked = True End With End With .Protect 'Mot de passe si nécessaire End With End Sub
Question: 1) où dois je placer cette procédure derrière chacune des feuilles (Jour 1 à Jour 20), dans un module ou dans Thisworkbook ? 2) comment la faire fonctionner en bascule (Protéger/ Déprotéger) ? 3) je souhaiterais porter l'information sur l'état de la protection, sans doute par une Msgbox informant de l'activation ou non de la protection, ou bien toute autre solution