OVH Cloud OVH Cloud

CodeName plutot que nom de la feuille

3 réponses
Avatar
vpco
Bonjour la communauté,

J'utilise ce code de Fabian Bertrand ( Astuce N°1227 / EXCELABO ).

Sub Protéger()
' Protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect password:="blabla"
Next i
End Sub


Est-possible d'utiliser le CodeName dans cette proc. J'ai essayé ceci mais
cela ne fonctionne pas :

Sub Protéger()
' Protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Feuil(i).Protect password:="blabla"
Next i
End Sub

Je n'ai pas trouvé grand chose sur EXCELABO et chez Fred, ni dans les
archives du forum...

Merci de votre aide.

Cordialement.

Marc

3 réponses

Avatar
Jacky
Bonjour,

Sheets(i).Protect Password:="blabla"

--
Salutations
JJ

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

Bonjour la communauté,

J'utilise ce code de Fabian Bertrand ( Astuce N°1227 / EXCELABO ).

Sub Protéger()
' Protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect password:="blabla"
Next i
End Sub


Est-possible d'utiliser le CodeName dans cette proc. J'ai essayé ceci mais
cela ne fonctionne pas :

Sub Protéger()
' Protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Feuil(i).Protect password:="blabla"
Next i
End Sub

Je n'ai pas trouvé grand chose sur EXCELABO et chez Fred, ni dans les
archives du forum...

Merci de votre aide.

Cordialement.

Marc


Avatar
Jacky
Re....
D'ailleurs, c'est le code Name qui est utilisé, sinon le code serait:
'---------
Sheets("Feuil1").Protect "blabla"
Sheets("Feuil2").Protect "blabla"
Sheets("Feuil3").Protect "blabla"
'---------
--
Salutations
JJ

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

Bonjour la communauté,

J'utilise ce code de Fabian Bertrand ( Astuce N°1227 / EXCELABO ).

Sub Protéger()
' Protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect password:="blabla"
Next i
End Sub


Est-possible d'utiliser le CodeName dans cette proc. J'ai essayé ceci mais
cela ne fonctionne pas :

Sub Protéger()
' Protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Feuil(i).Protect password:="blabla"
Next i
End Sub

Je n'ai pas trouvé grand chose sur EXCELABO et chez Fred, ni dans les
archives du forum...

Merci de votre aide.

Cordialement.

Marc


Avatar
michdenis
Bonjour VPCO,

Le problème possible avec la procédure que tu proposes,

A ) elle suppose que la racine de la propriété "Name" des
objets feuille ("Feuil") soit tous identiques

B ) que se passe-t-il si tu as une feuille graphique dans ton classeur ?

C ) Ta méthode n'est pas applicable si tu fais référence à
des feuilles d'un autre classeur...

D ) Comme elle n'est pas générique, elle pourrait ne pas répondre
au critère "générique" d'un certain "Pierre" ... ;-))

Voici une solution qui se moque de tout ce qui précède:

'-----------------------
Sub test()

Dim Nb As Integer, A As Integer
Dim NomComponent As String, NomFeuille As String
Dim Wk As Workbook

Set Wk = ThisWorkbook
'ou
'Set Wk = Workbooks("Classeur2.xls")

With Wk
Nb = .Sheets.Count
For A = 2 To Nb + 1
With .VBProject.VBComponents(A)
Select Case .Type
Case 100
'NomComponent = Propriété Name de l'objet Feuille
NomComponent = .Name
'NomFeuille = Nom de l'onglet feuille
' Associé au nomcomponent
NomFeuille = .Properties("Name").Value
Wk.Sheets(NomFeuille).Protect
End Select
End With
Next
End With
Set Wk = Nothing

End Sub
'-----------------------

P.S. Si ton classeur contient des feuilles qui ne sont pas des feuilles
de calcul ou graphique comme des feuilles de macro ...la procédure
demandera un petit ajustement ...!





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

Bonjour la communauté,

J'utilise ce code de Fabian Bertrand ( Astuce N°1227 / EXCELABO ).

Sub Protéger()
' Protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect password:="blabla"
Next i
End Sub


Est-possible d'utiliser le CodeName dans cette proc. J'ai essayé ceci mais
cela ne fonctionne pas :

Sub Protéger()
' Protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Feuil(i).Protect password:="blabla"
Next i
End Sub

Je n'ai pas trouvé grand chose sur EXCELABO et chez Fred, ni dans les
archives du forum...

Merci de votre aide.

Cordialement.

Marc