VBA - Asigner un fichier à une variable Workbook sans ouvrir le fichier

pcalzett

XLDnaute Nouveau
Bonjour,
Je suis débutant en VBA, et je suis en train de developper une petite macro. Je voudrais déclarer une variable Workbook, puis affecter un fichier à cette variable mais sans ouvrir le fichier. Voila ce que je fai:

Sub MAJ

Dim MonFichier As Workbook

Set MonFichier= Application.Workbooks.Open ("B:\Statistiques \...\nomdufichier.xls")
....
End Sub

Donc je veux que le Workbook MonFichier soit bien nomdufichier.xls mais sans ouvrir nomdufichier.xls.
Comment je pourrais faire?

Merci d'avance
 

Pierrot93

XLDnaute Barbatruc
Re : VBA - Asigner un fichier à une variable Workbook sans ouvrir le fichier

Bonsoir,

A priori il faut que le classeur soit ouvert, ou déclaré lors de son ouverture, cf ci-dessous extrait de l'aide vba, peut être utiliser une variable "string" stockant le chemin et nom complet du fichier, tout dépend de ce que tu compte faire :
Code:
Cet objet représente un classeur Microsoft Excel. L'objet Workbook est un membre de la collection Workbooks. La collection Workbooks contient tous les objets Workbook actuellement ouverts dans Microsoft Excel.

bonne soirée
@+
 

kjin

XLDnaute Barbatruc
Re : VBA - Asigner un fichier à une variable Workbook sans ouvrir le fichier

Bonsoir,
Tout dépendra de l'utilisation que tu feras de cette variable, mais en tout état de cause, c'est d'un fichier dont il s'agira, non d'un classeur

Edit : salut Pierrot :)

A+
kjin
 

PMO2

XLDnaute Accro
Re : VBA - Asigner un fichier à une variable Workbook sans ouvrir le fichier

Bonjour à tous,

Un exemple qui utilise l'automation avec la fonction GetObject

Code:
Sub aa()
Dim MonFichier As Workbook
Set MonFichier = GetObject("c:\test.xls")   ' Chemin à adapter

'--- pour voir (à flaguer par la suite)  ---
MonFichier.Windows(1).Visible = True
'-------------------------------------------

MsgBox MonFichier.Name
MonFichier.Close False
Set MonFichier = Nothing
End Sub

Cordialement.

PMO
Patrick Morange
 

pcalzett

XLDnaute Nouveau
Re : VBA - Asigner un fichier à une variable Workbook sans ouvrir le fichier

Merci beaucoup de vos réponses!
Je pense que je peux bien me servir de la propiété GetObject pour mon programme.

En fait, plus avant dans le code j'aurai besoin de copier certaines colonnes de ce fichier (MonFichier), est_ce que à ce point là je peux utiliser l'instruction

MonFichier.Windows(1).Visible = True

pour acceder au fichier, à la place de

MonFichier.Activate ? (ceci ne marche pas si le fichier n'est pas ouvert)
 

Pierrot93

XLDnaute Barbatruc
Re : VBA - Asigner un fichier à une variable Workbook sans ouvrir le fichier

Re,

A noter, avec "GetObject" ton fichier est ouvert mais masqué... en l'état, une activation du dit classeur n'a pas trop d'intèrêt... enfin me semble t-il...

bon après midi
@+
 

PMO2

XLDnaute Accro
Re : VBA - Asigner un fichier à une variable Workbook sans ouvrir le fichier

Bonjour le forum, salut Pierrot,

Un exemple avec le code suivant où il vous faut adapter le chemin à votre usage

Code:
Sub bb()
Dim MonFichier As Workbook

'###
'--- Ouvre le classeur externe ---
Set MonFichier = GetObject("c:\test.xls")   ' Chemin à adapter
MonFichier.Windows(1).Visible = True
'--- Copie la plage A1:H50 de la feuille 1 du classeur externe ---
MonFichier.Sheets(1).Range("a1:h50").Copy

'###
'--- Le classeur appelant qui contient la macro ---
With ThisWorkbook
  .Activate
'--- Colle dans la feuille 2 cellule de destination B2 ---
  .Sheets(2).Select
  .Sheets(2).[b2].Select
  ActiveSheet.Paste
End With
'--- Vide le presse papiers ---
Application.CutCopyMode = False

'###
'--- Ferme le classeur externe et vide la mémoire ---
MonFichier.Close False
Set MonFichier = Nothing
End Sub

Cordialement.

PMO
Patrick Morange
 

Discussions similaires

Statistiques des forums

Discussions
312 763
Messages
2 091 847
Membres
105 077
dernier inscrit
Airnee