Bonjour à tous.
La façon la plus simple sûr d'accéder à des feuilles est, d’après ce que j'ai pu lire, d'utiliser leur "Codename", mais ce n'est pas forcement la plus simple...

Par VBA dans mon classeur1.xls, je souhaite venir écrire dans une feuille protégée d'un autre classeur2.xls. Cette feuille porte le codename"FL1"

dans le classeur2 j'ai mis cela:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Private Sub Workbook_Open()
'afin de pemettre au macros qui viennent "gratter" dans se fichier de se passer du mot de passe qui protège les feuilles
    FL1.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, _
        AllowSorting:=True, AllowFiltering:=True, Password:="toto", UserInterfaceOnly:=True
End Sub
dans mon classeur1.xls, j'ouvre le classeur2.xls à l'aide:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Workbooks.Open(chem & "\" & fich)
et pour accéder à ma feuille "FL1" j'utilise cette fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
        strCodeName = "FL1"
        Set wsF1For = SheetByCodeName(ActiveWorkbook, strCodeName)
 
Public Function SheetByCodeName(aWorkbook As Workbook, aCodeName As String) As Worksheet
'on "transforme" le codeName(qui est modifiable seulement via VBA) afin de pouvoir l'utiliser a la place du name
Dim StrNomOnglet As String
    'On cherche le nom correspondant
    StrNomOnglet = aWorkbook.VBProject.VBComponents(aCodeName).Properties("Name")
    'On retourne la worksheet correspondant
    Set SheetByCodeName = aWorkbook.Sheets(StrNomOnglet)
End Function
mais je me retrouve avec un message d'erreur.
"Erreur d'exécution '50289':
Impossible d'effectuer cette opération tant que le projet est protégé"...

Avez vous une solution ?

merci