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:
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:
Workbooks.Open(chem & "\" & fich)
et pour accéder à ma feuille "FL1" j'utilise cette fonction:
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
Partager