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):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Ca marche pas trop mal, sauf si la feuille est protégé par un mot de passe...

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 !