Bonjour,
J'avais déjà lancé un sujet équivalent dans ce forum. Malheureusement, les excellentes solutions proposées ne permettaient pas de résoudre tous mes problèmes... Je démarre une nouvelle discussion pour la lisibilité.
Je souhaite copier des onglets d'une feuille excel vers une autre feuille excel via un code vba. Les onglets sources ont des formules avec des liens entre eux (la feuille A a des liens vers B et vice-versa) et sont quelques fois protégés en écriture par un mot de passe.
Voici une partie du code actuel (ListOfSheetToCopy est un tableau contenant 1 si l'onglet est à copier, 0 sinon):
Ca marche pas trop mal, sauf si la feuille est protégé par un mot de passe...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Set wbFileA = Application.Workbooks.Open(Source) Set shCopAfter = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) Set plage = Range("A1:B2") compteur = -1 For Each sh In wbFileA.Sheets compteur = compteur + 1 If ListOfSheetToCopy(compteur) > 0 Then sh.Copy After:=shCopAfter Set shCopAfter = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) If Not sh.ProtectContents Then Elmt = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name ThisWorkbook.ChangeLink Elmt, ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name, xlExcelLinks Else Set plage = sh.Range("A1:AP112") For Each cellule In plage: If cellule.AllowEdit Then 'cellule.Copy Destination:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Range(cellule.Address) Range(cellule.Address).Select Selection.Copy ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Range(cellule.Address).Select ActiveSheet.Paste End If Next cellule End If End If Next sh
En fait le problème est que l'on copie les feuille une par une et les liens passent, par exemple, de: 'NomDeLaFeuille'!A1 à '[source.xls]NomDeLaFeuille!A1'. La cellule étant ensuite protégée, impossible de changer la formule (et elle ne se transforme pas toute seule si la feuille NomDeLaFeuille est copier plus tard) ...
Quand on le fait manuellement, on copie un groupe de feuille et les formules protégées n'ont pas à se modifier..
Pour moi, 2 solutions possibles (que je n'arrive pas à faire):
1/ Soit, on interdit a excel de modifier les formules de la feuille à copier (feuille protégée incluse)
2/ Soit on copie un groupe d'onglet en même temps comme manuellement
Pouvez-vous m'aider ?
Merci d'avance !