Comment modifier le nom d'un fichier sur disque ?

Résolu/Fermé
iBenny - Modifié le 11 août 2021 à 20:32
yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 - 21 août 2021 à 19:47
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 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 1 481
12 août 2021 à 08:08
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 lundi 23 janvier 2012 Statut Membre Dernière intervention 3 avril 2022 2
12 août 2021 à 16:24
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 lundi 23 janvier 2012 Statut Membre Dernière intervention 3 avril 2022 2
12 août 2021 à 16:35
Bonjour,

j'aime bien nr2 ! Je teste ça...
0
iBenny Messages postés 96 Date d'inscription lundi 23 janvier 2012 Statut Membre Dernière intervention 3 avril 2022 2
Modifié le 12 août 2021 à 18:10
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 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 1 481 > iBenny Messages postés 96 Date d'inscription lundi 23 janvier 2012 Statut Membre Dernière intervention 3 avril 2022
12 août 2021 à 18:12
il faut ajouter une référence vers "microsoft scripting runtime".
0
iBenny Messages postés 96 Date d'inscription lundi 23 janvier 2012 Statut Membre Dernière intervention 3 avril 2022 2 > yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024
12 août 2021 à 18:13
Comment ?
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
12 août 2021 à 08:08
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 lundi 23 janvier 2012 Statut Membre Dernière intervention 3 avril 2022 2
12 août 2021 à 16:00
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