enregistrer et fermer plusieurs classeurs excel en même temps

charette63

XLDnaute Occasionnel
Bonjour à toutes et à tous,

je recherche un code qui permette de fermer plusieurs classeurs (12) excel en même temps

tous les classeurs font partie du même répertoire

nom du classeur par lequel la commande serait activée:
fiche perso nursing template.xls

nom des classeurs qui devraient être enregistrés et fermés:
horaire nursing 01 template.xls
horaire nursing 02 template.xls
horaire nursing 03 template.xls
horaire nursing 04 template.xls
horaire nursing 05 template.xls
horaire nursing 06 template.xls
horaire nursing 07 template.xls
horaire nursing 08 template.xls
horaire nursing 09 template.xls
horaire nursing 10 template.xls
horaire nursing 11 template.xls
horaire nursing 12 template.xls

Les dossiers sont appelés à être dupliqués, le "nom" template appelé à disparaître et remplacé par l'année en cours (2011 par ex)

Pour l'ouverture des fichiers, j'ai trouvé sur ce site un code qui "appelle" les fichiers d'une façon "générale" avec: ThisWorkbook.Path & "\*.xls" , j'ai bien essayé de l'adapter à un code de "fermeture" mais sans succès

pouvez-vous m'aider?

merci

cordialement
thierry
 

Pierrot93

XLDnaute Barbatruc
Re : enregistrer et fermer plusieurs classeurs excel en même temps

Re,
le code ci-dessous fonctionne très bien chez moi :
Code:
Dim t As Integer
t = 1
Workbooks("horaire nursing " & Format(t, "00") & " template.xls").Close True
pas de raison que cela ne fonctionne pas dans une boucle si le nom des classeurs correspond...
 

charette63

XLDnaute Occasionnel
bon, voilà pierrot, ton code fonctionne

ta dernière intervention m'interpelle quelque peu,

j'ai retenté le coup avec le code de softmama, et ça coince de nouveau
mais, dans les classeurs que je crée presentement, je n'en suis qu'au niveau test. De ce fait, je n'ai qu'un classeur "horaire ..." de fonctionnel, donc, dans mes test, qu'un classeur à fermer. Serait-ce la cause?
Si cela est le cas, mille excuses aux intervenants

merci
 

charette63

XLDnaute Occasionnel
oui pierrot, j'en ai un de créé, donc il existe et il était bien ouvert,

j'ai encore deux requètes au sujet de ce code,

1 comme expliqué dans mon premier post, le "template" est également une variable, est-il possible de paufiner le code pour l'intégré en tant que variable

2 y a t il un code pour empecher un message d'erreur et une demande de debogage en cas de lancement accidentel de la macro de fermeture des fichiers ci ceux-ci ne sont pas ouvert. Je crée ces classeurs pour une connaissance encore plus nul que moi (et c'est pas peu dire) avec un pc

merci
 

Pierrot93

XLDnaute Barbatruc
Re : enregistrer et fermer plusieurs classeurs excel en même temps

Re,

peut être comme ceci :
Code:
Dim t As Integer, mavariable as String
 t = 1: mavariable =  "tontextevariable"
 Workbooks("horaire nursing " & Format(t, "00") & mavariable & ".xls").Close True

pour éviter les arrêts sur erreur :
Code:
On Error Resume Next
mais je déconseille de l'utiliser en l'état... toujours préférable d'éviter et ou de gérer les erreurs, car avec une telle instruction la suite de l'exécution du code peut poser de reels problèmes et aboutir à un résultat qui ne serait pas celui recherché....
 

charette63

XLDnaute Occasionnel
rebonjours tous le monde,

ben Pierrot, j'ai un problème avec ton code,

message d'erreur: l'indice n'appartient pas à la selection, et la ligne:
workbooks(.........).close true est jaunie

désolé, j'ai bien été voir sur le net, mais mes connaissances en VBA étant ce qu'elles sont, je n'ai pas tout (ça, c'est pour ne pas dire rien) compris. J'ai donc encore besoin de vos lumières

merci
 

Softmama

XLDnaute Accro
Re : enregistrer et fermer plusieurs classeurs excel en même temps

Re,

on t'aiderait bien plus facilement, si tu pouvais, ou nous recopier le code que tu as employé, ou nous faire un petit fichier d'exemple pour qu'on voit où tu butes.
 

charette63

XLDnaute Occasionnel
bonsoir softmama,

voilà, le premier code qui suit est celui que tu m'as refilé legerement modifié par Pierrot93
Il fonctionne à merveille (pas Pierrot mais le code)

Code:
Dim t As Integer
t = 1
Workbooks("horaire nursing " & Format(t, "00") & " template.xls").Close True

comme renseigné dans mon premier post, j'explique que "template" sera changé dans le nom des futurs dossiers en 2011,2012,...etc et est donc par conséquant variable.
voici le code que Pierrot me transmet:


Code:
Dim t As Integer, mavariable as String
 t = 1: mavariable =  "tontextevariable"
 Workbooks("horaire nursing " & Format(t, "00") & mavariable & ".xls").Close True

et là, ça coince au niveau de la ligne: Workbooks......Close True,

elle est jaunie, et le message de "debogage" me signale un problème d'indice qui n'appartient pas à la selection

merci
 

charette63

XLDnaute Occasionnel
voilà voilà,

je vous envoie trois fichiers,

un fichier appelé "retestonglet" dans lequel j'ai placé les deux codes (dans le module1)
appelés "Fermerclasseurs" et "Fermerclasseur2"

et deux autres fichiers qu'il faudraient également ouvrir puisqu'ils seront appelé à etre fermé par la macro


petit détail, si vous trouvez une solution, serait-il possible de mettre le code sur le fil, je suis au travail jusque demain matin, et le serveur du taf prend les pièces jointes du site pour des virus, je ne sais donc pas les ouvrir

merci
cordialement
thierry
 

Pièces jointes

  • retest onglets0 2011.xls
    35 KB · Affichages: 67
  • test onglets1 2011.xls
    40.5 KB · Affichages: 38
  • test onglets2 2011.xls
    42 KB · Affichages: 43
  • test onglets1 2011.xls
    40.5 KB · Affichages: 38
  • test onglets2 2011.xls
    42 KB · Affichages: 41
  • test onglets1 2011.xls
    40.5 KB · Affichages: 38
  • test onglets2 2011.xls
    42 KB · Affichages: 39

Softmama

XLDnaute Accro
Re : enregistrer et fermer plusieurs classeurs excel en même temps

Re,

dans retest onglets0 2011.xls, la bonne façon de faire serait plutôt comme ceci : (à tester)
VB:
Sub Fermerclasseur2()
Dim t As Integer, mavariable As String
 t = 1: mavariable = "template" 'ou ce que tu veux
 Workbooks("test onglets" & Format(t, "00") & " " & mavariable & ".xls").Close True
End Sub

En effet, à la place de "tontextevariable", il faut mettre ce qui t'arrange (template, 2011, ou 2012, que sais-je ? Par exemple, si ce que tu veux, c'est l'année en cours, tu peux mettre Cstr(Year(Now())))
 

charette63

XLDnaute Occasionnel
désolé softama, cela ne fonctionne toujours pas, "runtime error 9" "Subsript out of range" et toujours la ligne:
"workbooks.....Close true" qui est jaunie. J'ai pourtant fait un copier coller du code

l'as-tu testé sur le fichier joint? La macro fonctionnait?

merci pour votre investigation
 

Softmama

XLDnaute Accro
Re : enregistrer et fermer plusieurs classeurs excel en même temps

Re,

oui, en fait j'essaie de décoder ce que tu cherches à faire... Au vu des fichiers joints, et si j'ai pas encore tout compris de travers, essaie ceci :
Code:
Sub Fermerclasseur2()
Dim t As Integer, mavariable As String
 for t = 1 to 2
 mavariable = "2011" 'ou ce que tu veux
Workbooks("test onglets" & t & " " & mavariable & ".xls").Close True
next t
End Sub

(avec les 3 fichiers d'ouverts)
Bon là ça devrait marcher, mais enfin, tu nous avais dit que le nom du fichier était Test Onglets01... et non Onglets1... alors on a répondu dans ce sens. Je ne suis juste pas sur que tu vas réussir à reproduire tout ça... inquiet pour la suite, quoi :p
 

charette63

XLDnaute Occasionnel
super softmama, ton dernier code fonctionne

explication, le fichier d'origine, celui qui m'a servi d'explication à mon premier post s'appelle:
"horaire nursing 01 template" (le "01" variera jusque 12, 1 fichier par moi, et le template deviendra année après année 2012,...)
le fichier test que j'ai envoyé, s'appelle: "test onglet0 2011" (ici, d'est le zero sans espace qui est variable)

ce que je cherche à faire: dans les dossiers finaux, j'ai un classeur "récapitulatif" avec sur une premiere feuille les noms et statut des employés et les feuilles suivantes sont dédiées nominativement à chaque employé.
Ensuite, j'ai un classeur par moi avec en premiere feuille l'horaire mensuelle des employés et les feuilles suivantes sont également dédiées nominativement à chaque employé

bien sur, une multitude de liaison sont effectives entre les differents classeurs et feuilles
afin de ne pas perdre de liaisons lors de changements sur la feuille1 de mon classeur recapitulatif (changement de statut, nouvel employé, etc..) je cherche(ais) à ouvrir automatiquement les douze classeurs mensuels avant d'effectuer les modifications et de les refermer ensuite.
voilà

je vais tâcher, maintenant d'adapter ton code à mon classeur final, pour ce, je vois que dans le code, "for t = 1" est devenu "for t = 1 to 2" , tu peux (encore) me donner une petite explication?

merci beaucoup à toi, néné06 et à pierrot

cordialement
thierry
 

Softmama

XLDnaute Accro
Re : enregistrer et fermer plusieurs classeurs excel en même temps

re,

For t=1 tout seul n'a pas de sens. Il faut comprendre que l'exemple ci-dessous
Code:
For t=1 to 12
'... code à renouveler pour chaque valeur de t
next t

signifie que t va prendre la valeur 1, effectuer le code avant le next t, puis quand c'est fait, t va refaire ce même code, mais avec la valeur 2, puis idem avec 3, 4, 5... jusqu'à 12 (dans l'exemple que j'ai mis). Ton code était t=1 et non For t=1, ce qui attribuait la valeur 1 à t : ainsi la feuille onglets1 était fermée, mais ni la 2, ni la 3...

pour comprendre comment cela fonctionne, tu peux t'inspirer et tester cet exemple simple :
Code:
Sub toto()
For t=1 to 12
msgbox "Valeur de t =" & t
next t
end Sub

en espérant t'avoir éclairé.
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal