ensuite je fais intervenir un deuxi=E8me fichier "toto2" dans lequel je
fais ex=E9cuter tout un tas de trucs.
Je veux finalement revenir au premier fichier "toto1"pour le fermer.
Mais je ne sais pas comment le rappeler. Je voulais faire
Workbooks.Close Filename:=3Ddlganswer
mais apparement cette syntaxe n'existe pas.
Et je ne veux pas =E9crire Workbooks("toto1").Close car il ne
s'appellera pas toujours "toto1".
Comment rappeler ce fichier alors que je suis dans un autre workbook?
dlganswer = Application.GetOpenFilename Workbooks.Open Filename:= dlganswer set wbk¬tiveworkbook
et quand tu voudras le fermer, il te suffira d'écrire wbk.close
A+
michdenis
Bonjour Jf,
En utilisant le truc d'anonymous.
Un détail important, tu dois définir une variable au niveau du module dim Wk as workbook ou Public Wk As workbook selon que tu veux pouvoir référencer le classeur que tu as ouvert dans toutes les modules de ton classeur ou non. Par la même occasion, il te sera loisible de le fermer avec la commande Wk.Close True 'or False pour la sauvegarde
Salutations!
"JF" a écrit dans le message de news: bonjour
Je veux ouvrir puis fermer un fichier "toto1" que je choisis via la boite de dialogue "Ouvrir" (car le nom de ce fichier peut varier).
ensuite je fais intervenir un deuxième fichier "toto2" dans lequel je fais exécuter tout un tas de trucs.
Je veux finalement revenir au premier fichier "toto1"pour le fermer. Mais je ne sais pas comment le rappeler. Je voulais faire
Workbooks.Close Filename:=dlganswer
mais apparement cette syntaxe n'existe pas. Et je ne veux pas écrire Workbooks("toto1").Close car il ne s'appellera pas toujours "toto1". Comment rappeler ce fichier alors que je suis dans un autre workbook?
Merci
Bonjour Jf,
En utilisant le truc d'anonymous.
Un détail important, tu dois définir une variable au niveau du module
dim Wk as workbook ou Public Wk As workbook
selon que tu veux pouvoir référencer le classeur que tu as ouvert
dans toutes les modules de ton classeur ou non. Par la même occasion,
il te sera loisible de le fermer avec la commande
Wk.Close True 'or False pour la sauvegarde
Salutations!
"JF" <Juliette.Frehel@socgen.com> a écrit dans le message de news: 1135185995.780643.161760@g49g2000cwa.googlegroups.com...
bonjour
Je veux ouvrir puis fermer un fichier "toto1" que je choisis via la
boite de dialogue "Ouvrir" (car le nom de ce fichier peut varier).
ensuite je fais intervenir un deuxième fichier "toto2" dans lequel je
fais exécuter tout un tas de trucs.
Je veux finalement revenir au premier fichier "toto1"pour le fermer.
Mais je ne sais pas comment le rappeler. Je voulais faire
Workbooks.Close Filename:=dlganswer
mais apparement cette syntaxe n'existe pas.
Et je ne veux pas écrire Workbooks("toto1").Close car il ne
s'appellera pas toujours "toto1".
Comment rappeler ce fichier alors que je suis dans un autre workbook?
Un détail important, tu dois définir une variable au niveau du module dim Wk as workbook ou Public Wk As workbook selon que tu veux pouvoir référencer le classeur que tu as ouvert dans toutes les modules de ton classeur ou non. Par la même occasion, il te sera loisible de le fermer avec la commande Wk.Close True 'or False pour la sauvegarde
Salutations!
"JF" a écrit dans le message de news: bonjour
Je veux ouvrir puis fermer un fichier "toto1" que je choisis via la boite de dialogue "Ouvrir" (car le nom de ce fichier peut varier).
ensuite je fais intervenir un deuxième fichier "toto2" dans lequel je fais exécuter tout un tas de trucs.
Je veux finalement revenir au premier fichier "toto1"pour le fermer. Mais je ne sais pas comment le rappeler. Je voulais faire
Workbooks.Close Filename:=dlganswer
mais apparement cette syntaxe n'existe pas. Et je ne veux pas écrire Workbooks("toto1").Close car il ne s'appellera pas toujours "toto1". Comment rappeler ce fichier alors que je suis dans un autre workbook?
Merci
Vincnet.
Bonjour, Sans passer par une variable, ça pourrait aussi donner : Workbooks(Workbooks(dlganswer).name).Close mais c'est quand même super lourd... Et pour compléter les réponses d'AnonymousA et michdenis, il vaut en général mieux éviter d'utiliser les ActiveWorkbook, ActiveSheet et autres ActiveTrucs... Ce qui donne :
Dim wbk As Workbook dlganswer = Application.GetOpenFilename Set wbk = Workbooks.Open(Filename:= dlganswer) '[...] wbk.Close Set wbk = Nothing 'pour vider wbk de la mémoire d'Excel
Et puis, peut-être rajouter un test :
Dim wbk As Workbook dlganswer = Application.GetOpenFilename If VarType(temp) = vbBoolean Then MsbGox "Procédure annulée ou un truc du genre", vbOkOnly Exit Sub 'Pour sortir effectivement de la procédure Else Set wbk = Workbooks.Open(Filename:= dlganswer) End If '[...] wbk.Close Set wbk = Nothing End Sub
-- A+
V.
bonjour
Je veux ouvrir puis fermer un fichier "toto1" que je choisis via la boite de dialogue "Ouvrir" (car le nom de ce fichier peut varier).
ensuite je fais intervenir un deuxième fichier "toto2" dans lequel je fais exécuter tout un tas de trucs.
Je veux finalement revenir au premier fichier "toto1"pour le fermer. Mais je ne sais pas comment le rappeler. Je voulais faire
Workbooks.Close Filename:=dlganswer
mais apparement cette syntaxe n'existe pas. Et je ne veux pas écrire Workbooks("toto1").Close car il ne s'appellera pas toujours "toto1". Comment rappeler ce fichier alors que je suis dans un autre workbook?
Merci
Bonjour,
Sans passer par une variable, ça pourrait aussi donner :
Workbooks(Workbooks(dlganswer).name).Close
mais c'est quand même super lourd...
Et pour compléter les réponses d'AnonymousA et michdenis, il vaut en général
mieux éviter d'utiliser les ActiveWorkbook, ActiveSheet et autres
ActiveTrucs... Ce qui donne :
Dim wbk As Workbook
dlganswer = Application.GetOpenFilename
Set wbk = Workbooks.Open(Filename:= dlganswer)
'[...]
wbk.Close
Set wbk = Nothing 'pour vider wbk de la mémoire d'Excel
Et puis, peut-être rajouter un test :
Dim wbk As Workbook
dlganswer = Application.GetOpenFilename
If VarType(temp) = vbBoolean Then
MsbGox "Procédure annulée ou un truc du genre", vbOkOnly
Exit Sub 'Pour sortir effectivement de la procédure
Else
Set wbk = Workbooks.Open(Filename:= dlganswer)
End If
'[...]
wbk.Close
Set wbk = Nothing
End Sub
--
A+
V.
bonjour
Je veux ouvrir puis fermer un fichier "toto1" que je choisis via la
boite de dialogue "Ouvrir" (car le nom de ce fichier peut varier).
ensuite je fais intervenir un deuxième fichier "toto2" dans lequel je
fais exécuter tout un tas de trucs.
Je veux finalement revenir au premier fichier "toto1"pour le fermer.
Mais je ne sais pas comment le rappeler. Je voulais faire
Workbooks.Close Filename:=dlganswer
mais apparement cette syntaxe n'existe pas.
Et je ne veux pas écrire Workbooks("toto1").Close car il ne
s'appellera pas toujours "toto1".
Comment rappeler ce fichier alors que je suis dans un autre workbook?
Bonjour, Sans passer par une variable, ça pourrait aussi donner : Workbooks(Workbooks(dlganswer).name).Close mais c'est quand même super lourd... Et pour compléter les réponses d'AnonymousA et michdenis, il vaut en général mieux éviter d'utiliser les ActiveWorkbook, ActiveSheet et autres ActiveTrucs... Ce qui donne :
Dim wbk As Workbook dlganswer = Application.GetOpenFilename Set wbk = Workbooks.Open(Filename:= dlganswer) '[...] wbk.Close Set wbk = Nothing 'pour vider wbk de la mémoire d'Excel
Et puis, peut-être rajouter un test :
Dim wbk As Workbook dlganswer = Application.GetOpenFilename If VarType(temp) = vbBoolean Then MsbGox "Procédure annulée ou un truc du genre", vbOkOnly Exit Sub 'Pour sortir effectivement de la procédure Else Set wbk = Workbooks.Open(Filename:= dlganswer) End If '[...] wbk.Close Set wbk = Nothing End Sub
-- A+
V.
bonjour
Je veux ouvrir puis fermer un fichier "toto1" que je choisis via la boite de dialogue "Ouvrir" (car le nom de ce fichier peut varier).
ensuite je fais intervenir un deuxième fichier "toto2" dans lequel je fais exécuter tout un tas de trucs.
Je veux finalement revenir au premier fichier "toto1"pour le fermer. Mais je ne sais pas comment le rappeler. Je voulais faire
Workbooks.Close Filename:=dlganswer
mais apparement cette syntaxe n'existe pas. Et je ne veux pas écrire Workbooks("toto1").Close car il ne s'appellera pas toujours "toto1". Comment rappeler ce fichier alors que je suis dans un autre workbook?
Merci
anonymousA
Bonjour,
sans aller jusqu'à souscrire à 100% avec ta remarque sur les Activetruc (sic) , je reconnais qu'il peut parfois être surprenant d'utiliser p.e les activeworkbook ou activesheet en raison des procédures evenementielles que celles-ci peuvent contenir et donc les eventuels mouvements intempestifs d'activation vers d'autres classeurs ou feuilles . Dans le cas précis de l'exemple que je communiquais, il est clair que si le classeur à ouvrir contient une procédure workbook_open dans laquelle un ordre d'ouverture d'un autre fichier est donné, alors activeworkbook sera le nouveau fichier en question et non pas celui initialement ouvert. Raisonnement un peu tordu mais dont la probabilité d'apparition n'est pas nulle. Ta déclarartion de wbk prend donc tout son sens dans ce cas de figure et règle définitivement ce type de problème.
A+
Bonjour,
sans aller jusqu'à souscrire à 100% avec ta remarque sur les
Activetruc (sic) , je reconnais qu'il peut parfois être surprenant
d'utiliser p.e les activeworkbook ou activesheet en raison des
procédures evenementielles que celles-ci peuvent contenir et donc les
eventuels mouvements intempestifs d'activation vers d'autres classeurs
ou feuilles . Dans le cas précis de l'exemple que je communiquais, il
est clair que si le classeur à ouvrir contient une procédure
workbook_open dans laquelle un ordre d'ouverture d'un autre fichier est
donné, alors activeworkbook sera le nouveau fichier en question et non
pas celui initialement ouvert. Raisonnement un peu tordu mais dont la
probabilité d'apparition n'est pas nulle. Ta déclarartion de wbk
prend donc tout son sens dans ce cas de figure et règle
définitivement ce type de problème.
sans aller jusqu'à souscrire à 100% avec ta remarque sur les Activetruc (sic) , je reconnais qu'il peut parfois être surprenant d'utiliser p.e les activeworkbook ou activesheet en raison des procédures evenementielles que celles-ci peuvent contenir et donc les eventuels mouvements intempestifs d'activation vers d'autres classeurs ou feuilles . Dans le cas précis de l'exemple que je communiquais, il est clair que si le classeur à ouvrir contient une procédure workbook_open dans laquelle un ordre d'ouverture d'un autre fichier est donné, alors activeworkbook sera le nouveau fichier en question et non pas celui initialement ouvert. Raisonnement un peu tordu mais dont la probabilité d'apparition n'est pas nulle. Ta déclarartion de wbk prend donc tout son sens dans ce cas de figure et règle définitivement ce type de problème.