Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Boucle sur fichiers mais ne passe pas au suivant

  • Initiateur de la discussion Initiateur de la discussion Wyrgle
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Wyrgle

XLDnaute Junior
Bonjour le forum,

Voici un petit bout de code qui me pose pb : il met en page et imprime les fichiers d'un type choisi (ici les xls). Mais il ne passe pas au fichier suivant et imprime tjs le même fichier alors qu'il renomme bien les fichiers du répertoire

Le code commenté :
VB:
SUB BOUCLE
' mes fichiers du jour sont dans le répertoire ...\2017\02\13\ :
File_Location = "R:\mes documents\YYYY\MM\DD\"
' je traite seulement les fichiers xls
File_Name = Dir(File_Location & "*.xls")
' si le répertoire n'est pas vide...
While File_Name <> ""
'...alors je traite les fichiers qui n'ont pas encore été traités (mis-en-page) :
    If Left(File_Name, 4) <> "TEAM_" Then
        ' les fichiers à traiter sont renommés avec un suffixe :
        Name File_Location & File_Name As File_Location & "TEAM_" & Weekday(Now() - 1) & "_" & File_Name
        ' j'ouvre mon fichier à mettre-en-page et à imprimer : (ICI EST LE PROBLEME JE PENSE)
        Workbooks.Open FileName:=File_Location & "TEAM_" & Weekday(Now() - 1) & "_" & "*.xls"
        '---------------------------------           
        'ici la mise en page du fichier
        '---------------------------------------
        ActiveSheet.PrintOut
        ' je ferme sans sauvegarder (pas de modif=cahier des charges du projet) :
        ActiveWorkbook.Close savechanges:=False
    End If
     ' je passe au fichier suivant :
    File_Name = Dir()
Wend
End Sub

Comment faire pour que cette boucle renomme et ouvre le même fichier pour chaque itération ? Je me retrouve avec 10 impressions du même fichier et 10 fichiers renommés...(soit 1 mis-en-page).

Merci pour votre aide !
Wyrgle
 

Pièces jointes

Bonsoir.
Moi ce qui me choque c'est le Workbooks.Open FileName:=File_Location & "TEAM_" & Weekday(Now() - 1) & "_" & "*.xls"
J'aurais mieux vu : Workbooks.Open FileName:=File_Location & "TEAM_" & Weekday(Now() - 1) & "_" & File_Name
Mais comme je déteste écrire plusieurs fois une expression, je l'aurais sûrement affectée à une variable
NouveauNom = File_Location & "TEAM_" & Weekday(Now() - 1) & "_" & File_Name
avant de faire : Name File_Location & File_Name As NouveauNom
puis Workbooks.Open FileName:=NouveauNom
 
Bonsoir,
Ceci
If Left(File_Name, 4) <> "TEAM_" Then
serait plutôt........
If Left(File_Name, 5) <> "TEAM_" Then

Essaie comme ci-dessous

Code:
Sub BOUCLE()
Dim File_Location As String, File_Name As String
' mes fichiers du jour sont dans le répertoire ...\2017\02\13\ :
File_Location ="R:\mes documents\YYYY\MM\DD\"
' je traite seulement les fichiers xls
File_Name = Dir(File_Location & "*.xls")
' si le répertoire n'est pas vide...
While File_Name <> ""
    '...alors je traite les fichiers qui n'ont pas encore été traités (mis-en-page) :
    If Left(File_Name, 4) <> "TEAM" Then
        ' les fichiers à traiter sont renommés avec un suffixe :
        Name File_Location & File_Name As File_Location & "TEAM_" & Weekday(Now() - 1) & "_" & File_Name
        ' j'ouvre mon fichier à mettre-en-page et à imprimer
        Workbooks.Open Filename:=File_Location & "TEAM_" & Weekday(Now() - 1) & "_" & File_Name
ActiveSheet.PrintPreview    ' invalider apres test
'ActiveSheet.PrintOut    ' valider apres test
        ' je ferme sans sauvegarder (pas de modif=cahier des charges du projet) :
        ActiveWorkbook.Close savechanges:=False
    End If
    ' je passe au fichier suivant :
    File_Name = Dir()
Wend
End Sub

*Attention aussi à ActiveSheet.PrintOut
S'il n'y a qu'une seule feuille, pas de problème
Mais s'il y en a plusieurs et que le classeur est fermé sur une autre feuille que celle à imprimer, il peut y avoir des surprises 🙁
 
Dernière édition:

Merci Dranreb / Lone-Wolf / Jacky67.
Effectivement avec
Code:
Workbooks.Open FileName:=File_Location & "TEAM_" & Weekday(Now() - 1) & "_" & File_Name
ca marche tout de suite mieux !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
1 K
Réponses
7
Affichages
858
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…