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:
dans mon classeur1.xls, j'ouvre le classeur2.xls à l'aide:
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
et pour accéder à ma feuille "FL1" j'utilise cette fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Workbooks.Open(chem & "\" & fich)
mais je me retrouve avec un message d'erreur.
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
"Erreur d'exécution '50289':
Impossible d'effectuer cette opération tant que le projet est protégé"...
Avez vous une solution ?
merci
Partager