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

Modification de la protection des cellules dans plusieurs feuilles

4 réponses
Avatar
jean-Paul
Bonjour à tous, je démarre en vba sur excel2003,

J’ai réalisé une macro qui effectue un récapitulatif général sur ma feuille
de travail.

A la fin de la macro je souhaiterais (pour chacune des 60 premières feuilles
destinées à la saisie ) déverrouiller les feuilles, modifier l’ensemble des
cellules pour les mettre en mode protégé, reverrouiller les feuilles, de
façon à ce que personne ne puisse faire de modification après l’exécution de
la macro….

J’ai essayé de modifier un code qui fonctionne ( verouillage déverrouillage
)( avec un enregistrement effectué sur une feuille ) pour l’adapter :

Sub macro
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To 60
Worksheets(i).UnProtect [(mot de passe)]
Worksheets(i).Cells.Selection.Locked = True
Worksheets(i).Cells.Selection.FormulaHidden = False
Worksheets(i).Protect [(mot de passe)]

Next i
End Sub

mais malgré plusieurs tentatives, je ne dois pas avoir la bonne syntaxe, je
n’y arrive pas, si quelqu'un voulait bien m'aider, merci d’avance….

--
jps

4 réponses

Avatar
Excel...lent
Salut Jean-Paul,

Un truc comme ca :

For i = 1 To 60
sheets(i).UnProtect [(mot de passe)]
sheets(i).Cells.Selection.Locked = True
sheets(i).Cells.Selection.FormulaHidden = False
sheets(i).Protect [(mot de passe)]
Next i
End Sub

Cordialement.

Marc
Avatar
Excel...lent
Re Jean_Paul,

Oups j'ai été un peu vite, ça, cela devrait fonctionner mieux :

Sub zaza()
For i = 1 To 60
Sheets(i).Unprotect
Sheets(i).Activate
Cells.Select
With Selection
.Locked = True
.FormulaHidden = False
End With
Sheets(i).Protect
Range("A1").Select
Next i
End Sub

Cordialement.

Marc
Avatar
jean-Paul
Ré Marc

Encore Merci ça marche super bien !!!

Sur mon classeur de travail mensuel, j’ai donc réalisé une macro qui
effectue un récapitulatif général des demandes d’achats. Grace à toi cette
macro est maintenant complètement opérationnelle…

A la fin du mois il sera créé un nouveau « classeur du mois » par copie du
même modèle de classeur initial et je souhaiterais par l’intermédiaire d’une
autre macro [(pour chacune des 60 premières feuilles destinées à la saisie
qui sont nommées au départ en suivant ) 1R, 1V, 2R,2V etc….jusqu’a 30R, 30V
( qui correspondent respectivement au recto et au verso des demandes d’achats
1, 2 etc .jusqu’a 30…)] renommer ces feuilles à partir du nombre représentant
le dernier bon d’achat du mois précédent+1
S’il n’y a par exemple que 6 demandes d’achats sur le 1er mois, il faudrait
que la macro ( qui pourrait s’exécuter lors du changement de la valeur de la
cellule E7 de la feuille 1R ( nouvelle valeur = 7 ) puisse renommer ces
trente premières feuilles de 7R, 7V, jusqu'à 37R, 37V,

De la même manière, sur le nouveau classeur du mois suivant, s’il n’y a par
exemple que 10 demandes d’achats sur le 2ème mois, il faudrait que la macro (
qui pourrait s’exécuter lors du changement de la valeur de la cellule E7 de
la 1ere feuille 7R ( nouvelle valeur = 17 ) puisse renommer ces trente
premières feuilles de 17R, 17V, jusqu'à 47R, 47V,

Et ainsi de suite……
J'ai bien essayé quelques lignes de code... mais ça dépasse carrément mes
compétences....

Peux tu de nouveau m'aider ?
Avatar
Excel...lent
Salut Jean-Paul,

Met ce code dans un de tes modules :

Sub zaza()
' récupère la valeur de la cellule E7 de la page active
num = [e7].Value
numR = num
numV = num
' Renomme les feuilles pour éviter d'avoir des feuilles
' avec le même nom
For i = 1 To 60
Sheets(i).Activate
ActiveSheet.Name = i
Next i
' Renomme les feuilles RECTO en fonction de la valeur de
' la cellule E7
For i = 1 To 60 Step 2
Sheets(i).Activate
ActiveSheet.Name = numR & "R"
numR = numR + 1
Next i
' Renomme les feuilles VERSO en fonction de la valeur de
' la cellule E7
For i = 2 To 60 Step 2
Sheets(i).Activate
ActiveSheet.Name = numV & "V"
numV = numV + 1
Next i

End Sub

Tu n'as plus qu'à choisir à partir de quelle feuille tu le lances. Il
prendra la valeur de la cellule E7 de cette feuille et renommera toutes les
feuilles à partir de cette valeur.

Cordialement.

Marc