Sauve et renommer fichier pdf via une macro

Fermé
Ed - 10 juil. 2008 à 12:12
 DoublePlume - 1 sept. 2014 à 17:26
Bonjour,

j'aimerais renommer plus de 400 fichier pdf via une macro

je voudrait les renommer par rapport à 2 variable inscrite dans mon classeur excel

pour l'instant, un fichier porte le nom "\1234_docu.pdf"
et je voudrait tous les renommé "\1234_document.pdf"

1234 et document étant différentes pour les 400 fichiers

Qu'en penser vous??

merci
A voir également:

11 réponses

Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
14 juil. 2008 à 16:04
Bonjour,
je penser que c'est réalisable.
Comment tes données sont-elles organisées dans ton fichier Excel ? Y a-t-il une correspondance entre l'ancien et le nouveau nom ? Tous tes .pdf sont-ils dans un même dossier ?
D'ores et déjà, tu peux bouquiner l'aide VBA concernant la fonction Dir et l'instruction Name.
A suivre...
0
Salut

alors tous mes fichiers pdf sont dans un meme dossier oui

l'ancienne désignation est de la forme "chiffre_nomsimplifier.pdf"

la nouvelle désignation serait de la forme "chiffre_nomentier.pdf"

le chiffre est le même, mais dans l'ancienne désignation, le nom est simplifié
ex : au lieu de marquer document, il y a doc

et tous ces noms entiers sont dans mon fichier excel (tableau)

voila en espérant que tu as bien compris mon problème

merci
0
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
15 juil. 2008 à 11:43
Salut,
c'est toi qui me diras si j'ai bien compris.
Dans le code ci-dessous,
- affecte à la variable Chemin le chemin d'accès du répertoire qui contient tes fichiers.
- corrige les bornes des lignes à traiter (2 To 402)
- corrige les colonnes de AncienNom et NouveauNom (Colonnes A et B)
- je pars du principe que l'extension est contenue dans le nom du fichier. Si ce n'est pas le cas, il faudra les rajouter dans Dir et Name.
Sub Ed()
    Dim Chemin As String, Fichier As String, Ligne As Integer
    Dim AncienNom As String, NouveauNom As String
    
    Chemin = "C:\Dossier1\Dossier2\DossierX\"
    
    For Ligne = 2 To 402
        AncienNom = Range("A" & Ligne).Value
        NouveauNom = Range("B" & Ligne).Value
        Fichier = Dir(Chemin & AncienNom)
        If Fichier = Empty Then
            MsgBox "le fichier " & AncienNom & " n'a pas été trouvé"
        Else
            Name Fichier As NouveauNom
        End If
    Next Ligne
End Sub

Il est évident que tu testeras d'abord ce code sur des copies de fichiers.
I.
0
en fait mon problème est que je n'ai pas l'ancien nom dans mon fichier excel

et que le nouveau nom est une concaténation "chiffre_nouveaunom.pdf"

j'ai essayé ton programme, mais je ne sais pas pourquoi je n'arrive pas a le faire marché
j'ai mis le bon chemin et mis les bon liens dans les colonnes

ton bout de programme serait une alternative mais cela ne me fais pas gagner de temps puis je serais obligé d'importer les apres les autres tous les noms des fichiers

penses tu a une autre solution??

merci
0
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
15 juil. 2008 à 14:27
Est-ce que l'indicatif du fichier est toujours composé de 4 chiffres ?
Si oui, corrige les lignes suivantes :
AncienNom = Left(Range("A" & Ligne).Value, 4)
NouveauNom = Range("A" & Ligne).Value
Fichier = Dir(Chemin & AncienNom & "*")

Si non, est-ce que l'indicatif du fichier commence toujours le nom du fichier (dès le premier caractère) et est toujours suivi d'un tiret-bas ? Le \ ne fait partie du nom du fichier, si ?
I.
0
le problème est dans le fait que je n'ai pas les ancien nom dans une feuille excel


en fait le nom est de la forme:


code_nom.pdf

le code est un code composé de chiffres et de lettre / j'ai les codes de chaque fichier dans mon tableau excel donc pas de problème pour cela

le tiret bas(_) : pas de problème

enfin le nom entier : pas de problème aussi car je les ai dans mon tableau

puis grace à ces 3 données je veux les concatener afin de renommer le fichier pdf


mais le fichier pdf actuel lui est de la forme

code_nompartiel.pdf

Donc même forme, même code, la seule chose qui change est le nom

voila jespère t'avoir mieux guidé
0
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
15 juil. 2008 à 14:59
Ce que j'appelais indicatif, c'est ce que tu apelles code.
Si le code ne change pas (ce qui est la cas, je crois), on peut donc faire la correpondance entre le nom du fichier actuel et son nouveau nom.
As-tu essayé avec les corrections du post 5 ? Ne te laisse pas tromper, j'ai laissé la variable AncienNom, mais j'aurais pu la renommer Code, puisqu'en fait, elle contient le code (les 4 premiers chiffres)

Dans ta liste Excel, as-tu une seule colonne avec le nom complet code_nom.pdf ?
ou bien deux colonnes : code / nouveau nom, qu'il faut ensuite concaténer ?
Pour qu'on parle bien de la même chose, peux-tu copier dans un prochain message quelques exemples de ce que contient exactement ton fichier excel ?
I.
0
j'ai en effet 2 colonnes dans mon fichier excel

une colonne qui contient le code
et un autre colonne qui contient le nouveau nom

il me faut donc ensuite concaténer le code, le tiret bas, le nouveau nom et .pdf pour avoir mon nom définitif

le but est que une fois tous les fichier renommer, je pourrait tout concater pour créer un lien hypertexte qui m'ouvrira directement n'importe quel fichier



exemple

Lien CODE NOUVEAU NOM

E:\DONNEES\MES DOCUMENTS\essai\AIGU18273_AIGUILLES.pdf AIGU18273 AIGUILLES
E:\DONNEES\MES DOCUMENTS\essai\CLER645382_CLERMONTAN.pdf CLER645382 CLERMONTAN
E:\DONNEES\MES DOCUMENTS\essai\MONES6531_MONESTIER.pdf MONES6531 MONESTIER

=LIEN_HYPERTEXTE(CONCATENER("E:\DONNEES\MES DOCUMENTS\essai";\;B3;"_";C3;".pdf"))


voila

je me vais essayer ton idée du message 5

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
15 juil. 2008 à 16:06
Du coup, la procédure corrigée ci-dessous devrait marcher !
Sub EdBis()
    Dim Chemin As String, Fichier As String, Ligne As Integer
    Dim Code As String, NouveauNom As String
    
    Chemin = "E:\DONNEES\MES DOCUMENTS\essai\"
    
    For Ligne = 3 To 403
        Code = Range("B" & Ligne).Value
        NouveauNom = Code & "_" & Range("C" & Ligne).Value & ".pdf"
        Fichier = Dir(Chemin & "*" & Code & "*")
        If Fichier = Empty Then
            MsgBox "le fichier " & Code & " n'a pas été trouvé"
        Else
            Name Fichier As NouveauNom
        End If
    Next Ligne
End Sub
0
je pense que tu n'es pas loin de la solution

mais un problème subsiste toute fois dans -->Name Fichier As NouveauNom

la macro me dit à chaque fois qu'elle ne trouve pas le fichier --> ce qui est normal car le fichier se nomme
AIGUI64539_AIGU.pdf

et que à aucun moment dans la macro on dit de remplacer ce fichier pdf par AIGUI64539_AIGUILLES.pdf



je ne sais pas si je suis enfin arriver à texpliquer, en tout cas merci pour ta réactivité
0
Une petite question

que faut t'il mettre à la place des étoiles, je ne comprend pas??
0
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
15 juil. 2008 à 18:41
Ca doit se jouer sur des détails, mais pour arrêter de tatonner et en finir rapidement, peux-tu me donner :
- ton fichier Excel qui contient la liste des nouveaux noms (tu peux le mettre dans www.cijoint.fr)
- quelques uns des noms actuels des fichiers .pdf
Merci,
I.
0
http://www.cijoint.fr/cjlink.php?file=cj200807/cij96NVmr0.xls.

voici le lien de mon fichier excel

je te l'ai simplifier légèrement en ne joignant que 21 cas

en espèrant que tu comprennes le problème

merci
0
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
16 juil. 2008 à 10:47
Ed,
à partir de ton fichier, j'ai exécuté le code que tu as (Sub EdBis) : chez moi, ça marche !
(il faut juste bien sûr modifier For Ligne = 2 To 21, puisque la ligne 1 contient les en-têtes)
Tu posais la question de l'utilité des étoiles dans
Fichier = Dir(Chemin & "*" & Code & "*")

Par exemple, pour la première ligne de ton tableau, ce code revient à
Fichier = Dir("E:\DONNEES\MES DOCUMENTS\essai\*AIGU6C0537*")

c'est-à-dire rechercher un fichier qui contient AIGU6C0537 dans le répertoire indiqué.

Vérifie bien que la séquence exacte CODE (colonne B) existe bien dans le nom actuel de tes fichiers. Pas de confusion entre AIGU et AIGUI ? Sinon, je ne sais pas quoi ajouter, ça devrait marcher.
I.
0
J'essaye cela dans la journée et je te tiens au courant

En tout merci beucoup pour ton aide
0
Je comprend pas j'ai toujours le même problème

j'ai bien fait attention à tout le codee est bien le même dans les ancien nom

mais quand je lance la macro, il a un bug au niveau de la ligne "Name Fichier As NouveauNom"
"erreur d'éxécution 53, le fichier est introuvable"


Comment as tu fait pour que çà marche?

tu as créé des fichier pdf et apres tout tes fichiers se sont renommés correctement??

je sais pas du tout d'ou cela peut provenir?? cela ne peut venir que d'un problème de nom???

qu'en pense tu!! join moi ou explique moi mieux comment tu as fonctionné pour que çà marche

merci
0
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
16 juil. 2008 à 18:11
Rajoute
ChDir Chemin

après la ligne
Chemin = "E:\DONNEES\MES DOCUMENTS\essai\"

si ça ne marche toujours pas, essaie avec ça (re-préciser le chemin d'accès)
Name Chemin & Fichier As NouveauNom

I.
0
C'est énorme merci ivan la grande classe

en rajoutant : ChDir Chemin tout à marcher sans aucun problème

en quoi consiste ce ChDir???

d'ou venait alors ce problème avant


merci beucoup
0
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
17 juil. 2008 à 10:38
Ouf ! Enfin !
ChDir permet de modifier le répertoire courant.
Dans l'expression Name Fichier As NouveauNom, la variable Fichier ne contient que le nom du fichier, pas son chemin d'accès.
Donc, on allait chercher le fichier Fichier dans un répertoire par défaut qui n'était pas le bon. Du coup, le programme ne le trouvait pas à cet endroit.
Avec ChDir(Chemin), on précise que d'un bout à l'autre du programme, le répertoire par défaut dont on parle (même si on ne le re-précise pas) est Chemin.
Tout est bien qui finit bien.
I.
0
OK
Cool merci a toi a bientot

j'aurais surement d'autres questions dans les jours à venir
0
Merci Ivan-hoe, ta macro m'a bien aidé et cela presque 3 ans apres ton dernier post.
0
Et meme 6 ans apres cela fonctionne toujours
Merci
0
bonjour

je pense avoir le même problème.

En effet, j'ai à renommer 1200 fichier pdf!!!

en fait voilà j'ai des documents word qu'il faut convertir en .pdf en les nommant FO000100.pdf, FO000200.pdf, etc..... Ce travail a dèjà été fait les 1200 fichier on été transformé. Par contre mon patron a changé sa façon de les numéroter et il vodrait que le FO000100.pdf deviennet FO100100.pdf; le FO000200.pdf deveinne FO1002.pdf et ainsi de suite. J'ai fait un tableau excel avec l'ancien non et le nouveau nom que l'on doit donner aux fichier pdf mais sans marquer l'extension, donc dan mon tableau excel la colonne B contient l'ancien nom soit FO000100 et dans la colone C le nouveau FO100100.

Je ne sais pas par quoi commencer et ce qui serait le plus rapide. Est ce que j'efface tous les anciens .pdf et je les refait à partir de mes documents .doc ou bien je pars de l'ancien nom et je les renomme grace à une macro???

Le soucis c'est que je ne sais pas faire les macro!!!! Mon patron m'a montré un peu la semaine dernière mais c'est pas encore clair du tout.

Quelqu'un pourrait m'aider???

Merci d'avance.
0
merci pour la macro elle m'a bien aidé aussi !
0