Association d'une variable VBA à un fichier

JFLord

XLDnaute Nouveau
J'ai le code suivant pour associer une variable à un fichier et il doit ouvrir le fichier (s'il ne l'est pas) lorsque la variable est appelée.

Set estimespec1 = Workbooks("Calcul P&L Hedge_SPEC1.xls")
If estimespec1 Is Nothing Then
Workbook.Open ("L:\RiskMetrics\Post_Operation\Estimé P&L\Calcul P&L Hedge_SPEC1.xls")
End If


Ca me donne un run time error 9 (script out of range).

Quelqu'un peut m'aider
 
Dernière édition:

smotty

XLDnaute Occasionnel
Re : Association d'une variable VBA à un fichier

bonsoir,

voir CreateObject et GetObject pour associer un fichier à une variable.
Je vous conseille vivement de lire l'aide Excel à ce sujet


en gros:

dim estimespec1 as workbook
set estimespec1=createobject ("L:\RiskMetrics\Post_Operation\Estimé P&L\Calcul P&L Hedge_SPEC1.xls")

Quelques subtilités entre getobject et createobject que je ne maitrise pas complètement. GetObject sert quand l'object est ouvert et createobject qu'il soit ouvert ou fermé. (j'ai essayé de résumer)

cdt

smotty
 

Pierrot93

XLDnaute Barbatruc
Re : Association d'une variable VBA à un fichier

Bonjour JFLord, smotty

modifie peut être ton code ainsi :

Code:
Sub test()
Dim estimespec1 As Workbook
On Error Resume Next
Set estimespec1 = Workbooks("Calcul P&L Hedge_SPEC1.xls")
On Error GoTo 0
If Not estimespec1 Is Nothing Then
    Workbooks.Open ("L:\RiskMetrics\Post_Operation\Estimé P&L\Calcul P&L Hedge_SPEC1.xls")
End If
End Sub

bonne journée
@+
 

JFLord

XLDnaute Nouveau
Re : Association d'une variable VBA à un fichier

Merci ca ressemble plus à ce que je cherchais...

par contre, ca me donne encore un run time error 424 «object required» et j'ai utilisé exactement la même structure. Il doit avoir quelque chose que je n'ai pas «catché».
 

tototiti2008

XLDnaute Barbatruc
Re : Association d'une variable VBA à un fichier

Bonjour JFLord, smotty, Pierrot,

Je crois que Pierrot a mis un Not de trop...

Code:
Sub test()
Dim estimespec1 As Workbook
On Error Resume Next
Set estimespec1 = Workbooks("Calcul P&L Hedge_SPEC1.xls")
On Error GoTo 0
If estimespec1 Is Nothing Then
    Workbooks.Open ("L:\RiskMetrics\Post_Operation\Estimé P&L\Calcul P&L Hedge_SPEC1.xls")
End If
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Association d'une variable VBA à un fichier

Re, bonsoir toto

oui toto a raison, le "not" est en trop, le code ci dessous fonctionne chez moi, le classeur est dans le répertoire courant... :

Code:
Sub test()
Dim estimespec1 As Workbook
On Error Resume Next
Set estimespec1 = Workbooks("classeur1.xls")
On Error GoTo 0
If estimespec1 Is Nothing Then
    Workbooks.Open ("classeur1.xls")
End If
End Sub

vérifie le nom et le chemin complet de ton fichier....

bonne soirée
@+
 

JFLord

XLDnaute Nouveau
Re : Association d'une variable VBA à un fichier

Merci la ca fonctionne à merveille!

Mais j'ai une autre interrogation...

si jamais, dans mon code, je dois fermer le fichier et le réouvrir pas mal plus loin. il y a un moyen d'appeler la variable pour ouvrir le fichier sans avoir à tout réécrire le code
 

Pierrot93

XLDnaute Barbatruc
Re : Association d'une variable VBA à un fichier

Bonjour,

pour le fermer cela fonctionerait ainsi :
Code:
estimespec1.Close
A la condition, bien sur que ton classeur était ouvert avant.... par contre pour le réouvrir après fermeture, ta variable sera vide.

@+
 

smotty

XLDnaute Occasionnel
Re : Association d'une variable VBA à un fichier

Bonsoir,

ce qui nous ramène à CreateObject, voir mon message précédent:

dim estimespec1 as workbook
set estimespec1=createobject ("L:\RiskMetrics\Post_Operation\Estimé P&L\Calcul P&L Hedge_SPEC1.xls")

Je l'utilise souvent dans mes programmes. Ainsi on manipule les fichiers comme on veut (Excel, Word, ou autres)

cdt

smotty
 

Pierrot93

XLDnaute Barbatruc
Re : Association d'une variable VBA à un fichier

Bonjour,

Avec "createobject", lors de l'initialisation de la variable, si le classeur n'est pas ouvert, il s'ouvrira mais dans une fenêtre masquée... Tu pourras le fermer avec l'instruction "close", par contre ta variable sera également déchargée et pour le réouvrir il te faudra à nouveau passer par la fonction "createobject", mais bon cela peut être un bon compromis... Tout dépend de ton projet...

bonne journée
@+
 

smotty

XLDnaute Occasionnel
Re : Association d'une variable VBA à un fichier

Bonjour à tous,

Juste pour compléter le raisonnement, la bonne question, est-il bien utile de fermer le fichier si celui-ci n'apparait pas? Le fermer uniquement à la fin du traitement peut être une solution...:rolleyes:
 

Discussions similaires