Je cherche à renommer des fichiers xls/xlsx/csv en "ABC_*.*" qui arrivent toute la journée dans un répertoire que je connais.
'La règle étant qu'un fichier renommé avec le préfixe ABC_ n'est plus à renommer (son contenu est mis en page et imprimé).
Je lance donc la macro à la demande.
VB:
Sub RenameFiles()
Dim Chemin As String, Fichier As String
'Répertoire contenant les fichiers a processer
Chemin = "C:\REPERTOIRE TEST\"
'Boucle sur tous les fichiers du répertoire.
Fichier = Dir(Chemin & "*.*")
While Fichier <> "ABC_*.*"
Name Fichier As "ABC_" & Fichier
Fichier = Dir()
Wend
End Sub
VBA me met File not found.
Ou est l'erreur ?
Merci pour votre aide
Sub RenameFiles()
Dim Chemin As String, Fichier As String
'Répertoire contenant les fichiers a processer
Chemin = "C:\REPERTOIRE TEST\"
'Boucle sur tous les fichiers du répertoire.
Fichier = Dir(Chemin & "*.*")
While Left(Fichier, 4) <> "ABC_*.*"
Name Chemin & Fichier As Chemin & "ABC_" & Fichier
Fichier = Dir()
Wend
End Sub
Sub RenameFiles()
Dim Chemin As String, Fichier As String
'Répertoire contenant les fichiers a processer
Chemin = "C:\REPERTOIRE TEST\"
'Boucle sur tous les fichiers du répertoire.
Fichier = Dir(Chemin & "*.*")
While Left(Fichier, 4) <> "ABC_*.*"
Name Chemin & Fichier As Chemin & "ABC_" & Fichier
Fichier = Dir()
Wend
End Sub
Bonjour Robert,
Merci pour ta réponse, mais la macro lancée une 1ere fois renomme les fichiers et se termine par ce message :
Path/File access error (erreur 75).
La macro lancée une 2eme fois renomme encore les fichiers (ABC_ABC_nomdufichier.*), chose que je dois éviter.
Une suggestion en passant
Avec les dernières versions de Windows, on dispose d'un outil puissant Powershell
Exemple rapide
copier cette ligne dans le bloc-notes et enregister en renommer.ps1
Une suggestion en passant
Avec les dernières versions de Windows, on dispose d'un outil puissant Powershell
Exemple rapide
copier cette ligne dans le bloc-notes et enregister en renommer.ps1
Bonjour Staple1600,
Hélas je dois juste utilizer VBA, restriction du boulot...
Il doit bien exister une solution pour gérer les fichiers de cette manière...
Sub RenameFiles()
Dim Chemin As String, Fichier As String
'Répertoire contenant les fichiers a processer
Chemin = "C:\REPERTOIRE TEST\"
'Boucle sur tous les fichiers du répertoire.
Fichier = Dir(Chemin & "*.*")
While Fichier <> ""
If Left(Fichier, 4) <> "ABC_" Then Name Chemin & Fichier As Chemin & "ABC_" & Fichier
Fichier = Dir()
Wend
End Sub
Bonjour Staple1600,
Hélas je dois juste utilizer VBA, restriction du boulot...
Il doit bien exister une solution pour gérer les fichiers de cette manière...
PowerShell fait partie de Windows.
Il ne s'agit pas d'un logiciel tiers.
C'est un outil très puissant mais comme dirait Régis :" C'est vous qui voyez!"
Non, je n'ai pas oublié (je te le chante même si tu n'entends pas )
Je ne me sentais pas de commencer l'apprentissage tout de suite à 22h (je risquais ce faisant de mourir idiote mais j'ai survécu donc tout va bien ) mais j'ai noté et compte y revenir (même si c'est, a priori, juste pour comprendre ce que l'on peut faire mais pas forcément en avoir l'usage, quoi que...).
Mais j'aurais du avoir la politesse de te répondre. Alors une autre bise , pour me faire pardonner, suffira t'elle ?
Un grand merci pour votre aide, et spécialement à Robert et Chris, la macro marche nickel.
Concernant Powershell, je vais voir ce que c'est, mais pas sur de pouvoir l'utiliser sur mon lieu de travail, je suis cantonné aux macros VBA.
Re,
Je reviens sur un détail.
Comme déjà écrit, cette macro marche nickel :
VB:
File_Name = Dir(File_Location & "*.*")
While File_Name <> ""
Workbooks.Open FileName:=File_Location & "*.*"
If Left(File_Name, 4) <> "ABC_" Then Name File_Location & File_Name As File_Location & "ABC_" & File_Name
File_Name = Dir()
Wend
Mais je constate un problème : elle ouvre tous les fichiers du répertoire, alors que je gagnerai du temps si elle ouvrait les fichiers dt les noms ne commencent pas par "ABC_".
Comment faire ?
Et là, mais alors là un gros bisou à celui qui me simplifie cette routine !!
Pas sûr de bien comprendre où tu veux en venir. Peut-être comme ça :
VB:
File_Name = Dir(File_Location & "*.*")
While File_Name <> ""
If Left(File_Name, 4) <> "ABC_" Then
Workbooks.Open File_Name
Name File_Location & File_Name As File_Location & "ABC_" & File_Name
End If
File_Name = Dir()
Wend