Renommer tous les fichiers d'un repertoire
Résolu/FerméLe Pingou Messages postés 12198 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 21 novembre 2024 - 3 déc. 2022 à 23:54
- Renommer tous les fichiers d'un repertoire
- Renommer plusieurs fichiers en même temps - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Renommer iphone - Guide
- Wetransfer gratuit fichiers lourd - Guide
11 réponses
3 déc. 2022 à 10:26
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%"
3 déc. 2022 à 11:13
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
3 déc. 2022 à 11:30
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
3 déc. 2022 à 11:45
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.
3 déc. 2022 à 14:10
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 question3 déc. 2022 à 14:14
Bonjour,
Oui c'est possible, toutefois un peu de patience c'est la St Nicolas chez moi.
3 déc. 2022 à 14:21
Attention au père Fouetard ...
Modifié le 3 déc. 2022 à 15:21
Bonjour,
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
3 déc. 2022 à 15:22
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
3 déc. 2022 à 17:20
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
3 déc. 2022 à 23:54
Bonjour,
Concernant : Je n'ai pas réussi à démarer ton classeur ???
Merci de m'indiquer absolument ce qui ne vas pas....!
Salutations.
Le Pingou
3 déc. 2022 à 18:30
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
3 déc. 2022 à 18:45
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.
3 déc. 2022 à 11:03
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).