Bonjour à tous,
Je suis actuellement sur un fichier avec un macro qui me crée automatiquement des feuilles selon plusieurs conditions.
Le problème n'est pas la...
Je me suis intéressé a la protection de ces feuilles, et tout ce que j'ai trouvé c'est la création d'une macro permettant de bloquer ou debloquer la modification selon un mdp que l'on choisit.
Je cherche à automatiser la protection directement lors de cette création. (Soit ma page principale est accessible et modifiable, mais les feuilles créés automatiquement seront simplement consultable mais non-modifiable..)
Quelqu'un connaitrait une astuce?
Voici mon code VBA:
Sub SplitterEnOnglet() ' - de 1 sec pour 20.000 lignes
Set f = Sheets("General")
Application.DisplayAlerts = False
Application.ScreenUpdating = False
' changer pour aller jusque colonne "r"
Set Rng = f.Range("A2:R" & f.[A65000].End(xlUp).Row) ' rng est une place de A à C
' le tri se fait sur A et B MAIS en tenant compte qu'il y a un titre !
Rng.Sort Key1:=f.[A2], key2:=f.[B2], Header:=xlGuess ' trier avant sur la colonne choisie ("E" ici)
' copie des colonne A à R dans une matrice
A = Rng
i = 1: n = 0
Do While i <= UBound(A)
code = A(i, 1) & Chr(32) & A(i, 2)
Do While A(i, 1) & Chr(32) & A(i, 2) = code
Debug.Print i, A(i, 5)
i = i + 1: If i > UBound(A) Then Exit Do
Loop
On Error Resume Next: Sheets(code).Delete: On Error GoTo 0
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = code
f.Cells(2 + n, 1).Resize(i - 1 - n, 18).Copy [A2] ' idem jusque colonne R
f.[A1:R1].Copy [A1] ' idem colonne R
n = i - 1
Loop
End Sub
Je pensais à une astuce du genre :
On Error Resume Next: Sheets(code).Delete: On Error GoTo 0
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = code
ActiveSheet.Protect ()[
Mais comme vous pouvez le deviner ça n'est pas la solution
Je vous remercie d'avance