VBA EXCEL fermer ouvir plusieurs fichiers

Fermé
stephdublin Messages postés 2 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 13 novembre 2007 - 5 nov. 2007 à 21:29
stephdublin Messages postés 2 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 13 novembre 2007 - 13 nov. 2007 à 16:12
Bonjour,

pour, je dirais, plus de confort pour mes collegues et moi, j'aimerais que ma macro ferme les fichiers ouverts, fasse ce que je lui ai ordonné de faire, et ensuite réouvre les fichiers précedemment fermés. Existe-t'il un moyen pour y parvenir?
J'ai trouvé comment faire pour fermer et réouvrir un meme fichier:
work étant une variable, cela donne,
work = ActiveWorkbook.FullName
ActiveWorkbook.Close
et ensuite
Workbooks.Open Filename:=work
Mais je n'ai pas trouvé le moyen de le faire sur plusieurs fichiers:-(. voila ce que j'ai essayé:
dim work as string
dim n as integer
n=1
do until workbooks.count=1
work & n=activeworkbook.fullname - et c'est cette ligne qui ne passe pas.
etc...

merci pour votre aide:-)<code>Configuration: Windows XP
excel 2003

2 réponses

stephdublin Messages postés 2 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 13 novembre 2007 3
13 nov. 2007 à 16:12
bonjour gbinforme. bizarre, je pensais t'avoir repondu il y a plus d'une semaine... voila, merci pour ta reponse mais ce n'etait pas exactement ce que je voulais. Mais j'ai trouvé la solution grace aux "array variables":-). Cela donne cela:

au debut de l'execution de la macro:
Dim files() As String
Dim iCount As Integer
Dim Max As Integer
Max = Workbooks.Count
ReDim files(1 To Max)
For iCount = 1 To Max
If ActiveWorkbook.Name <> "MACRO" Then
files(iCount) = ActiveWorkbook.FullName ' pour stocker les fichiers
ActiveWorkbook.Save
ActiveWorkbook.Close
Else
ActiveWindow.ActivateNext
End If
Next iCount
n = 1


a la fin:
For iCount = LBound(files) + 1 To UBound(files)
Workbooks.OpenText Filename:=files(iCount) ' pour les reouvrir
Next iCount
Erase files()



steph
3
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 688
6 nov. 2007 à 10:30
bonjour

work & n=activeworkbook.fullname - et c'est cette ligne qui ne passe pas.

En procédant ainsi, cela devrait fermer tous tes fichiers sauf celui qui lance la macro
 Public Sub ferme()
Dim n As Integer
n = Workbooks.Count
Do Until Workbooks.Count = 1
If Not Workbooks(n).Name = ActiveWorkbook.Name Then Workbooks(n).Close
Loop
End Sub

1