Importer et exporter des plages entre deux classeurs

Troudz

XLDnaute Occasionnel
Bonjour,

Je vous explique rapidement mon problème :

J'ai un classeur principal rempli de userform qui joue le rôle d'interface.

J'ai un classeur secondaire contenant différentes listes de choix qui viendront alimenter l'interface (notamment des listes pour Combobox). Ces listes sont stockées dans des plages nommées.

Lors de son ouverture, le fichier principal ouvre le fichier secondaire, importe chacune des feuilles puis le referme sans sauvegarder. L'opération inverse peut également être faite de temps en temps.

Code:
    Set ClasseurSource = Workbooks.Open("C:\Fichier secondaire.xls"))
    With ClasseurSource
        .Unprotect
        i = 1
        Do
            With .Sheets(i)
                .Visible = True
                .Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
                .Visible = False
            End With
            i = i + 1
        Loop While i <= .Sheets.Count
    End With
    ClasseurSource.Close False

Cette procédure marche parfaitement mais me pose quelques problèmes notamment :

- Elle est relativement longue à exécuter car les feuilles sont assez lourdes à importer
- Je peux pas masquer sont exécution : si j'ouvre mon classeur source dans une autre instance Excel masquée, le transfert de feuilles complètes n'est plus possible

J'ai bien essayé les différentes méthodes pour lire / écrire un fichier fermé mais ces méthodes ne permettent pas de supprimer des lignes, de faire référence à des plages etc...

Je me tourne donc vers vous et votre imagination.

L'idéal pour moi, serait de trouver une méthode qui puisse être exécutée sur une instance masquée et qui consisterait à faire :

Code:
Thisworkbook.Sheets("MaFeuille").Range("Maplage") = ClasseurSour.Sheets("MaFeuille").Range("Maplage")

Il faudrait que cette méthode puisse fonctionner même si l'un des plages et plus longue que l'autre.

Auriez vous une idée par hasard ?

Je vous remercie et vous souhaite d'avance, un excellent week end.
 

youky(BJ)

XLDnaute Barbatruc
Re : Importer et exporter des plages entre deux classeurs

Bonjour Troudz,
Pour ne pas passer à coté, ce code ouvre en masquer le fichier.
A modifier le chemin et fichier en conséquence.
Je ne me souvient plus si on peux modifier, mais je pense que oui !
Peut être là tu déja essayé.
Bon test
Bruno
Code:
Sub test()
Dim Wb As Workbook
Set Wb = GetObject("C:\Essai.xls")
MsgBox Wb.Sheets(1).[A2].Value
Wb.Close
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa