VBA EXCEL fermer ouvir plusieurs fichiers

stephdublin Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
stephdublin Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   3
 
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   Statut Contributeur Dernière intervention   4 724
 
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