XL 2010 Boucle sur fichiers mais ne passe pas au suivant

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

  • BOUCLE.xlsm
    13.5 KB · Affichages: 19

Dranreb

XLDnaute Barbatruc
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
 

Jacky67

XLDnaute Barbatruc
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:

Wyrgle

XLDnaute Junior
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

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 !
 

Discussions similaires

Statistiques des forums

Discussions
312 108
Messages
2 085 369
Membres
102 875
dernier inscrit
Jimbo2374