Comment modifier le nom d'un fichier sur disque ?
Résolu
iBenny
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
je cherche à modifier le nom (l'extension) d'un fichier spécifique [chemin]Fichier.ext et n'y parvient pas. Que devrais-je faire ?
Ayant identifié dans mon code le fichier à renommer : [chemin]Fichier.ext stoké dans la variable image, j'ai essayé d'utiliser :
1- la variable string image
2- d'utiliser CreateObject("Scripting.FileSystemObject") comme suit :
sans succès. J'ai essayé aussi :
sans succès non plus !
Des idées qq'un ?
Merci à l'avance pour vos lumières
iBenny
je cherche à modifier le nom (l'extension) d'un fichier spécifique [chemin]Fichier.ext et n'y parvient pas. Que devrais-je faire ?
Ayant identifié dans mon code le fichier à renommer : [chemin]Fichier.ext stoké dans la variable image, j'ai essayé d'utiliser :
1- la variable string image
image = [chemin]Fichier.ext
2- d'utiliser CreateObject("Scripting.FileSystemObject") comme suit :
Set jpegs = CreateObject("Scripting.FileSystemObject")
Set jpeg = jpegs.GetFile(image)
jpeg.Name = nouveau nom
sans succès. J'ai essayé aussi :
Set jpegsss = CreateObject("Scripting.FileSystemObject")
Set jpegss = jpegsss.GetFile([chemin])
Set jpegs = jpegss.Files
For Each jpeg In jpegs
If Right(jpeg.Name, 4) = "jpeg" Then
jpeg.Name = Left(image, Len(image) - 4) + "jpg"
Exit For
End If
Next
sans succès non plus !
Des idées qq'un ?
Merci à l'avance pour vos lumières
iBenny
2 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
"sans succès", ce n'est pas très factuel.
cela coince où? tu ne donnes pas le code exact que tu utilises.
je suggère de déclarer explicitement tes variables, cela devrait t'aider à découvrir le soucis.
en ce qui concerne ton premier essai, que contient la variableimage
?
en ce qui concerne le second essai, comment réussis-tu à fairegetfile
pour ensuite traiter le résultat comme si c'était un dossier?
deux exemples qui fonctionnent:Private Sub rn() Dim fso As New Scripting.filesystemobject, dossier As Folder, fichier As File Set dossier = fso.GetFolder(ThisWorkbook.Path) For Each fichier In dossier.Files If Right(fichier.Name, 4) = "jpyg" Then fichier.Name = Left(fichier.Name, Len(fichier.Name) - 4) + "pyg" Exit For End If Next fichier End Sub Private Sub rn2() Dim fso As New Scripting.filesystemobject, fichier As File Set fichier = fso.GetFile(ThisWorkbook.Path + "\testyg.pyg") fichier.Name = "testyg.pygpyg" End Sub
-
Bonjour yg_be,
1- "Sans succès" veux dire que le nom du fichier sur disque n'a pas changé !
2- toutes les variables que j'ai utilisées ont bien sûr été déclarées auparavant et j'ai Option explicite d'indiqué dans la section des variables globales;
3- Dim image as String
image = [chemin] nom du fichier
[chemin]: chaîne de caractère indiquant le chemin complet du fichier à modifier
nom du fichier: chaîne de caractères indiquant le nom du fichier à modifier
[chemin]nom du fichier: chaîne de caractères indiquant le chemin complet suivi du nom du fichier à traiter.
ex:
image = c:/users/usager/documents/fichier.jpeg
Si c'est pas encore clair, n'hésite pas à poser une autre question.
Concernant le deuxième essai,
[chemin]: chaîne de caractère indiquant le chemin complet du fichier à modifier
jpegsss.GetFile([chemin]) => jpegsss.GetFile(c:/user/documents/) par ex... Si c'est pas encore clair, n'hésite pas à demander des précisions...
Je vais maintenant étudier ta suggestion de code...
Merci beaucoup
iBenny -
-
-
-
-
-
Bonjour,
tout simplement avec la fonction Replace:
https://www.excel-pratique.com/fr/astuces_vba/replace