Comment modifier le nom d'un fichier sur disque ?

Résolu
iBenny -  
yg_be Messages postés 23541 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
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
A voir également:

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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 variable
image
?
en ce qui concerne le second essai, comment réussis-tu à faire
getfile
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
1
iBenny Messages postés 96 Date d'inscription   Statut Membre Dernière intervention   2
 
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
0
iBenny Messages postés 96 Date d'inscription   Statut Membre Dernière intervention   2
 
Bonjour,

j'aime bien nr2 ! Je teste ça...
0
iBenny Messages postés 96 Date d'inscription   Statut Membre Dernière intervention   2
 
Bonjour,

le premier Dim dans nr2 renvoi :

---------------------------
Microsoft Visual Basic
---------------------------
Erreur de compilation:

Type défini par l'utilisateur non défini
---------------------------
OK Aide
---------------------------

On est dans VBA de MS Word 2003 ici...
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > iBenny Messages postés 96 Date d'inscription   Statut Membre Dernière intervention  
 
il faut ajouter une référence vers "microsoft scripting runtime".
0
iBenny Messages postés 96 Date d'inscription   Statut Membre Dernière intervention   2 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Comment ?
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Bonjour,

tout simplement avec la fonction Replace:

https://www.excel-pratique.com/fr/astuces_vba/replace

0
iBenny Messages postés 96 Date d'inscription   Statut Membre Dernière intervention   2
 
Bonjour et merci de la suggestion MAIS... "Replace" modifie les chaînes de caractères... PAS le nom d'un fichier sur disque.

iBenny
0