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