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