Rechercher : dans
Par :

Besoin d'aide VBA renommer des fichier

Dernière réponse le 3 jan 2008 à 15:39:33 west-c, le 3 jan 2008 à 09:49:25 
 Signaler ce message aux modérateurs

Bonjour tout le monde,
Bonne année, et tout mes meilleurs voeux pour 2008.

Je dois fair un programme en vba sous Excel qui permet de copié et de renommer des fichiers (photos).
Je possède dans la colonne L les noms des photos, et dans la colonne M les nouveaux noms que je dois leur attribuées.
Ce dossier se trouve sur le résaux.
J'ai commencé quelque chose mais sa ne marche pas. Quelqu'un peut-il m'aider?
Ai-je utilisé la melleur méthode?
J'ai due fair bcp d'erreur je pense.


Je suis allé cocher dans Outils, Références, « Microsoft Scripting Runtime »


Sub renommer_photo()

'déclaration des variables

Dim ancien_nom As String 'va enregistrer l'ancien nom de la photo
Dim nouveau_nom As String 'va enregistrer le nouveau nom de la photo
Dim i As Integer
Dim dernligne As Integer 'cette variable va rechercher la derniere ligne du tableau
Dim j As Integer
Dim oFSO As Scripting.FileSystemObject
Dim oDrv As Scripting.Drive
Dim oFld As Folder
Dim oFl As Scripting.File


Sheets("Feuil1").Select

'recherche de la derniere ligne

i = 1
Cells(i, 12).Select
Do
i = i + 1
Loop Until Cells(i, 12) = "" And Cells(i + 1, 12) = "" And Cells(i + 2, 12) = ""
dernligne = i - 1


'Instanciation du FSO
Set oFSO = New Scripting.FileSystemObject

'enregistrement des noms (ancien et nouveau) de la photo en renomme les fichiers
For j = 2 To dernligne
ancien_nom = Cells(j, 12).Value & ".eps" '.eps est l'extansion de la photo
nouveau_nom = Cells(j, 13).Value & ".eps"

'Instanciation de l'objet File
If oFSO.FileExists("U:\Images2\" & ancien_nom) Then
Set oFl = oFSO.GetFile("U:\Images2\" & ancien_nom)
End If

'copie du fichier
oFl.Copy "U:\image_renomée2\" & nouveau_nom, True

Next j

End Sub


Merci pour votre aide!
Et encor bonne année !

Configuration: Windows 2000
Internet Explorer 6.0

Meilleures réponses pour « besoin d'aide VBA renommer des fichier » dans :
Renommer plusieurs fichiers en batch VoirLe fait de renommer un grand nombre de fichiers peut très vite devenir fastidieux. Heureusement, il existe des outils permettant d'automatiser cette tâche dans un grand nombre de cas : Fonctionnalités natives Utilisation d'un programme...
Fichier CSV VoirFormat CSV Un fichier CSV est un fichier tableur, contenant des données sur chaque ligne séparés par un caractère de séparation (généralement une virgule ou un point-virgule). Comment lire un fichier CSV ? Il peut être lu avec un tableur tel que...

1

le père, le 3 jan 2008 à 10:07:26

Bonjour

Je n'ai pas essayé ton script, mais :
Loop Until Cells(i, 12) = "" And Cells(i + 1, 12) = "" And Cells(i + 2, 12) = ""
ce ne serait pas plutôt
Loop Until Cells(i, 12) = "" And Cells(i , 13) = "" And Cells(i, 14) = ""

Tu t'embêtes beaucoup avec ton New Scripting.FileSystemObject . Pourquoi ne pas utiliser l'instruction VBA
Name oldfilename as newfilename ?

Répondre à le père

2

west-c, le 3 jan 2008 à 10:40:29

J'y ai pensé mais j'arrivais pas à le fair marcher non plus.
Il ne trouvait pas mes fichiers (erreur 53).

Name "U:\Images2\" & ancien_nom As " U:\Images2\" & nouveau_nom
Je dois bien l'utiliser comme sa?

Répondre à west-c

3

le père, le 3 jan 2008 à 10:47:47

S'il ne trouvait pas tes fichiers, c'est que les fichiers que tu indiquais n'existaient pas, ce n'est pas parce que l'instruction Name ne fonctionne pas.

As-tu fait un msgbox "U:\Images2\" & ancien_nom pour voir le nom réellement demandé ? N'as-tu pas oublié une extension ?

Répondre à le père

4

west-c, le 3 jan 2008 à 10:52:29

Alors je viens de faire le msgbox et le chemin est bien le bon.
Sa peut venir du résaux non?

Répondre à west-c

5

le père, le 3 jan 2008 à 11:18:41

Peux-tu faire un
msgbox dir ("U:\Images2\" & ancien_nom) ?

Répondre à le père

6

west-c, le 3 jan 2008 à 11:25:10

Sa me donne un msgbox vide. C'est normal?

Répondre à west-c

7

le père, le 3 jan 2008 à 11:29:33

Non. Quand je fais la même manip, je vois bien le nom du fichier.
J'insiste : ton chemin est très, très probablement mauvais. Un espace qui traîne après ou avant le nom de fichier ?
Tu as dit qu'avec le msgbox, tu voyais le bon chemin, tu parlais bien du chemin y compris le nom du fichier et son extension ?

Répondre à le père

8

west-c, le 3 jan 2008 à 12:03:04

J'ai enlevé la variable qui enregistrait le nom de la photo et je l'ai remplacer directement par son nom dans
msgbox dir ("U:\Images2\" & ancien_nom) ce qui donne msgbox dir ("U:\Images2\photo.eps") comme sa pas d'érreur possible sur le chemin d'accès.
Sa me fait la meme chose et je comprends vraiment pas pk.

Répondre à west-c

9

le père, le 3 jan 2008 à 12:10:19

Mon imagination s'épuise, j'en viens aux questions idiotes : le fichier "U:\Images2\photo.eps" tu le vois bien avec ton explorer ?
C'est peut-être lui qui a un espace en trop, éventuellement à la fin.

Répondre à le père

10

west-c, le 3 jan 2008 à 13:35:48
  • +1

C'est pas si idiot que sa !
Oui on le voit bien.
C'est peut etre due a cette extension .eps (moi perso je ne connais pas cette extension et j'ai changé de pc pour voir et c'est des archives).

Répondre à west-c

11

west-c, le 3 jan 2008 à 13:39:57

Si j'enregistre le chemin d'accès dans une variable (enfin plutot une constante). Quel type dois-je mettre? un string?

Répondre à west-c

12

le père, le 3 jan 2008 à 13:41:07

Peu importe la signification du .eps pour renommer un fichier.
Mais ceux qui créent des fichiers avec un espace à la fin sont des cochons ou des étourdis..

Tu n'as plus qu'à rajouter cet espace dans ton instruction Name, et ça devrait rouler

Répondre à le père

13

west-c, le 3 jan 2008 à 13:51:12

Dsl je t'ai pas dis mais non j'ai pas d'espace à la fin de mes nom de photo.
je suis pas si étourdie que sa :)
ce que je ne comprend pas c'est pourquoi dans mon msg box dir ("U:\Images2\" & ancien_nom) je n'ai rien qui s'affiche sa me donne un msgbox vide

Répondre à west-c

14

le père, le 3 jan 2008 à 14:02:09

Alors on va le prendre autrement : peux tu faire

Dim a$
  a$ = Dir("U:\Images2\*.*")
  
  While a$ <> ""
    MsgBox a$ & " " & Len(a$)
    a$ = Dir
  Wend


on verra bien s'il voit quelque chose ou rien du tout...

Répondre à le père

15

west-c, le 3 jan 2008 à 14:13:37

J'ai executer ce que tu m'as passé. Il y a pelin de message type msgbox avec les nom des photos qui se trouve dans le dossier.
C'est bien sa? Et je remarque que apres l'extension des photos il ya un espace puis un nombre, exemple: "photo.eps 20".

Répondre à west-c

16

west-c, le 3 jan 2008 à 14:24:24

Ah mince, je viens de rmq le nombre qu'il y a deriere c'est le nb de charactère du nom de la photo.
Dsl je suis encor qu'un étudiant !
sinon il trouve bien le chemin dans ce cas

Répondre à west-c

17

le père, le 3 jan 2008 à 14:25:32

Le nombre, c'est la longueur du nom de fichier
Si tu as réellement vu "photo.eps 20", comme photo.eps ne fait que 9 caractères, ça veut dire qu'il y a 11 caractères zarbis. Peux -tu confirmer qu'il y a bien 20 à côté de photo.eps ?

Répondre à le père

18

west-c, le 3 jan 2008 à 14:29:21

Non non j'ai mis 20 au hasard.
Mais sinon j'ai 178.eps 8
et donc y'a un caractère en trop

Répondre à west-c

19

le père, le 3 jan 2008 à 14:32:46

Alors tu vas faire :

Dim a$,k%, s$
a$ = Dir("U:\Images2\*.*")
s$=""
for k= 1 to len (a$)
s$=s$ & " " & asc(mid$(a$,k,1))
next k
msgbox a$ & s$

pour voir tous les caractères un par un

Répondre à le père
Collection CommentÇaMarche.net