VBA EXCEL fermer ouvir plusieurs fichiers

stephdublin Messages postés 2 Statut Membre -  
stephdublin Messages postés 2 Statut Membre -
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

  1. stephdublin Messages postés 2 Statut Membre 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
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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