Renommer fichiers en nombre

Salut les excelliens

Je souhaite renommer des fichiers d'un répertoire en composant le nouveau nom d'un préfixe commun (ex. "02-15-") suivie d'une référence (ex. "AAAA", "BBB" ....) et de l'extension commune du fichier.

J'ai cherché sur plusieurs sites et j'y ai trouvé nombre de propositions. J'ai opté pour celle proposée par boisgontier malheureusement j'ai systématiquement une erreur qui me revient lorsque je renomme les fichiers à la ligne suivante

If Not f = ActiveWorkbook.Name Then Name f.Value As f.Offset(0, 2).Value

VBA ne veut pas entendre parler de Name f.Value ....

Merci à ceux qui pourront m'aiguiller sur ce qui me paraissait pourtant simple comme problème.

29test20.zip (45.30 Ko)

Un des fichiers n'est-il pas déjà ouvert ?

-ou alors-

il y a une erreur sur le test car f est un objet et activeworkbook.name un nom et il finit par coincer sur son propre fichier (essaie dans ce cas de le déplacer pour voir)

Bonjour Steelson

Bonjour les excelliens

Je n'ai pas d'autre fichier ouvert.

J'ai suivi tes recommandations mais rien n'a évolué ... malheureusement.

Mystère et boule de gomme !

Il te manque juste le chemin ...

Sub modifieNom()
For Each f In Range([A4], [A4].End(xlDown))
   If f.Offset(0, 2) <> "" Then
  If Not f = ActiveWorkbook.Name Then Name ThisWorkbook.Path & "\" & f.Value As ThisWorkbook.Path & "\" & f.Offset(0, 2).Value
  End If
Next f

End Sub

Bonjour Steelson

Bonjour à tous

Merci Steelson de t'être repenché sur mon souci.

Malheureusement la correction que tu me proposes ne fonctionne pas. J'ai essayé sur un autre pc équipé d'une version d'excel différente. J'obtiens le même message d'erreur.

Je vais voir s'il est possible de faire différemment. Ou peut-être que d'autres pistes seront proposées par les excelliens.

Bonjour voici une autre manière de faire

Sub rennome_fichier()
Dim oFSO As Object
Dim rep As String

Set oFSO = CreateObject("Scripting.FileSystemObject")
'recupération du chemin seul
rep = Mid([A1], InStr([A1], "[") + 1)
rep = Left(rep, Len(rep) - 1) & "\"
'parcourir tout le tableau
For i = 4 To [A65536].End(xlUp).Row
'copie avec  renommage
oFSO.CopyFile (rep & Range("A" & i).Value), (rep & Range("C" & i).Value), True
'suppression du fichier initiale
oFSO.DeleteFile (rep & Range("A" & i).Value), False
Next i

End Sub

fred

43test20.zip (22.00 Octets)

Bonjour Fred2406

Merci pour cette macro qui me permet de solutionner mon problème.

Elle fonctionne parfaitement.

Je vais tâcher d'en comprendre toutes les lignes.

Cela ne m'explique pas l'erreur que j'avais sur ma macro mais je peux au moins traiter mes fichiers.

Encore merci.

Cordialement.

Re

il me semble avoir suffisamment expliqué le code, mais si cela est nécessaire dis moi...;

par contre je viens de voir que j'ai oublié de déclaré la variable i pour que cela soit plus propre au niveau des déclarations

Rajoute :

dim i as integer

fred

jeanlouispaf a écrit :

Cela ne m'explique pas l'erreur que j'avais sur ma macro mais je peux au moins traiter mes fichiers.

hé oui, d'autant qu'avant de répondre je l'avais testée !

je vais regarder de plus près aussi

Re

Merci à fred2406 pour le lien que je vais exploiter.

Merci aussi à Steelson. Vraiment bizarre comme affaire ... nous mettrons cela sur les mystères de l'informatique.

Ce serait intéressant comme tu le dis de comprendre d'où vient le souci.

Bonne soirée.

Bien à vous.

Rechercher des sujets similaires à "renommer fichiers nombre"