Sauve et renommer fichier pdf via une macro

Ed -  
 DoublePlume -
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
Configuration: Windows 2000
Internet Explorer 6.0

11 réponses

  1. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    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
    1. Ed
       
      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
  2. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    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
    1. Ed
       
      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
  3. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    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
    1. Ed
       
      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
  4. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    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
    1. Ed
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    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
    1. Ed
       
      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
  7. Ed
     
    Une petite question

    que faut t'il mettre à la place des étoiles, je ne comprend pas??
    0
  8. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    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
    1. Ed
       
      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
  9. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    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
    1. Ed
       
      J'essaye cela dans la journée et je te tiens au courant

      En tout merci beucoup pour ton aide
      0
    2. Ed
       
      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
  10. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    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
    1. Ed
       
      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
  11. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    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
    1. Ed
       
      OK
      Cool merci a toi a bientot

      j'aurais surement d'autres questions dans les jours à venir
      0
    2. pierrebleu
       
      Merci Ivan-hoe, ta macro m'a bien aidé et cela presque 3 ans apres ton dernier post.
      0
    3. DoublePlume
       
      Et meme 6 ans apres cela fonctionne toujours
      Merci
      0
  12. micherac
     
    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
    1. ktana83
       
      merci pour la macro elle m'a bien aidé aussi !
      0