Renommer tous les fichiers d'un repertoire
Résolu-
Bo
Bonjour à tous,
Je cherche une macro en VBA Excel (Excel2016) pour renommer sans les dupliquer tous les fichiers d’un même répertoire. Dans un répertoire j’ai un ensemble de fichiers nommé de la façon suivante :
Diapo0A.jpg
Diapo1A.jpg
Diapo1B.jpg
Diapo2A.jpg
Diapo2B.jpg
Jusqu’à
Diapo135A.jpg
Diapo135B.jpg
Je souhaiterais renommer ces fichiers de 001 à XXX, je précise que le nombre fichier est variable mais qu’il ne dépassera jamais 999. J’ai charché sur Internet, mais je n’ai rien trouvé qui correspondait à ce que je souhaite.
D’avance merci pour votre aide.
Mistral
- Renommer tous les fichiers d'un repertoire
- Renommer des fichiers en masse - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment ouvrir un fichier bin ? - Guide
- Renommer iphone - Guide
11 réponses
Bonjour,
Pourquoi Excel s'agissant de fichiers images?
Un batch fait le job, mais j'attire l'attention qu'en renumérotant à partir de 1, un dispositif de lecture va considérer que 11 est inférieur à 2, c'est pourquoi je pars de 1000 mais chacun fait ce qu'il veut.
@ECHO OFF
CD /D E:\mondossier
SET COUNT=1000
FOR /F "delims=" %%a in ('dir /b E:\mondossier\*.jpg') DO SET FILE=%%~na & CALL :PROCESS
:PROCESS
SET /A "COUNT=COUNT+1"
SET FILE=%FILE:~0,-1%
SET FILE=%FILE%.jpg
REN "%FILE%" "%COUNT%_%FILE%"
Bonjour Brucine,
Merci pour ta réponse.
C'est bien d'un repertoire dont il s'agit et non pas une feuille de classeur.
Pourquoi le "jpg" tout simplement parceque j'ai créé un classeur Excel qui permet de créer un diaporama automatiquement un diaporama dans un ordre bien établi.
Concernant la numérotation je suis d'accord si on commence à 1, mais ça fonction si on renomme sur trois chiffre 000.
Je regarde ta proposition et je reviens vers toi.
ordialement
Mistral
Bonjour,
Petit programme à essayer, liste ancien et nouveau nom sur la feuille 1 et renomme le fichier jpg dans son répertoire
Dans [rep] vous devez introduire votre répertoire
Sub BoucleFichiersRepertoire()
Dim oFSO As Object
Dim oDossier As Object
Dim oFichier As Object
Dim i As Integer, rep As String
rep = "D:\Jean-Pierre\Images\2020-07 - Copie" 'nom du répertoire
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oDossier = oFSO.GetFolder(rep)
For Each oFichier In oDossier.Files
'ancien nom en colonne A et nouveau nom en colonne B
Cells(i + 1, 1) = oFichier.Name
Cells(i + 1, 2) = Format(i, "00#") & ".jp"
' renomme le fichier
oFichier.Name = Format(i, "00#") & ".jpg"
i = i + 1
Next oFichier
End Sub
Bonjour,
La commande DIR trie par défaut les fichiers dans l'ordre où ils apparaissent dans l'explorateur (et qui est par défaut par date de dernière écriture croissante), s'il ne me convient pas, le choix des commutateurs de sortie est limité (nom et différents types de date).
Si par malheur les fichiers sont triés dans un ordre qui n'obéit à aucune de ces logiques, ton option est imparable parce qu'elle va permettre de définir manuellement l'ordre souhaité.
Sinon, elle a bien sûr l'inconvénient d'être "time consuming" puisqu'il faut que je crée cet ordre à travers les 2 colonnes.
Bonjour Le Pngou,
Mille merci pour cette macro qui fonctionne extaement comme je le souhaitais.
Cepandant deux questions:
1) Serait-il possible de récuperer le chemin du repertoire selon la valeur de la cellule A10 de l'onglet données?
2) D'utiliser une feuille spécifique "Renom_diapo" et de l'effacer justa avant de quitter la macro?
Cordialement
Mistral
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionBonjour,
J'ai de l'avance, voici ma proposition !
Note, personnellement je préfère garder une trace des modifications ...!
Le fichier : https://cjoint.com/c/LLdos0UnYDZ
Je pensais que tu serais absent pour l'AM ...
J'ai cherché et j'ai trouvé mais je vais regarder ta proposition et je vais comparer ...
Je reviens vers toi au cas ou ...
Mistral
Re,
Je n'ai pas réussi à démarer ton classeur ???
Par contre je suis arrivé au résultat ci-dessous qui fonction,e parfaitementle voici :
Sub Renumerotation()
'**************************************************
'* Renomme toutes les diapos de 000 à 999 *
'**************************************************
Dim oFSO As Object
Dim oDossier As Object
Dim oFichier As Object
Dim i As Integer, Chemin As String
' Bloquage du rafraichissement et des alarmes.
Application.ScreenUpdating = False ' Bloque le rafraichissement de l'écran.
Application.EnableEvents = False ' Arret de la scrutation.
Application.DisplayAlerts = False ' Bloque les messages Excel.
' Gestion des feuilles
Sheets("Renom_Diapo").Visible = True 'Affichage de la feuille Renom_Diapo.
Sheets("Menu").Select 'Sélection de la feuille Menu.
ActiveWindow.SelectedSheets.Visible = False 'Masquage de la feuille Menu.
' Renommer toutes les photos.
Chemin = Worksheets("Données").Range("A10").Value
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oDossier = oFSO.GetFolder(Chemin)
For Each oFichier In oDossier.Files
' Ancien nom en colonne A et nouveau nom en colonne B
Cells(i + 1, 1) = oFichier.Name
Cells(i + 1, 2) = Format(i, "00#") & ".jp"
' Renomme le fichier
oFichier.Name = Format(i, "00#") & ".jpg"
i = i + 1
Next oFichier
' Raz feuille Renom_Diapo
Cells.Select
Selection.ClearContents
Range("A1").Select
' Gestion des feuilles.
Sheets("Menu").Visible = True 'Affichage de la feuille Renom_Diapo.
Sheets("Renom_Diapo").Select 'Sélection de la feuille Renom_Diapo.
ActiveWindow.SelectedSheets.Visible = False 'Masquage la feuille Renom_Diapo.
' Rétablissement du rafraichissement et des alarmes.
Application.ScreenUpdating = True ' Bloque le rafraichissement de l'écran.
Application.EnableEvents = True ' Arret de la scrutation.
Application.DisplayAlerts = True ' Bloque les messages Excel.
MsgBox "Tous les fichiers ont été renommé."
End Sub
Peux-tu me donner ton avis?
J(ai un autre problème avec une procedure:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Puis-je te le soummettre?
Cordialement.
Mistral
Le Pingou ne te tracasse pas pour
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
J'ai trouvé la solution.
Encore mille merci à toi pour ton aide.
Cordialement
Mistral
Bonjour
Pourquoi n'utilisez-vous pas Ant Renamer ?
https://www.commentcamarche.net/telecharger/utilitaires/3357-ant-renamer/
La fonction Énumération devrait convenir. Regardez les autres propositions.
Si j'ai mal compris la question et qu'il s'agit, à préciser, non pas de dossiers mais d'une feuille de calcul dont une colonne renferme des cellules contenant un texte xxx.jpg, on peut faire une opération similaire par export vers CSV du fichier, extraction de la colonne et de la chaîne qui précède le point pour la renommer, mais l'opération est un peu plus complexe, elle passe par rediriger le résultat vers un deuxième fichier CSV temporaire, supprimer l'original, renommer le temporaire au nom de l'original et le réimporter dans Excel (sauf si on peut faire la manipulation directement sur un fichier xls(x), pas sûr).