Script entre Excel et Explorateur windows

bgee2000 Messages postés 101 Statut Membre -  
bgee2000 Messages postés 101 Statut Membre -
bonjour,
j'ai besoin de créer une marco ou un script qui va me permettre la chose suivante:
Dans un folder, j'ai plusieurs sous folder contenant des PDF dont le nom contiennent un "ID" sépcifique et unique. Exemple : CARON PAINTS - RAPPEL - RELEVE DE COMPTE FOURNISSEUR - DTE20131204 - ID021641 - GED

Dans un excel, j'ai une colonne qui contient l'ID 021641 (que l'on retrouve dans le nom ci dessus)
Les folders sont nombreux et classé par année.
J'ai besoin qu'une macro ou script, aille me chercher chaque PDF contenant l'ID recherché de ma colonne "ID" et isole ce PDF dans un autre répertoire.
Est ce possible?
merci pour votre aide
--

6 réponses

  1. bgee2000 Messages postés 101 Statut Membre 1
     
    dans ce cas ci la formule pour copier le fichier est déterminé par son adresse de localisation. Mais je ne la connais pas au préalable. La première partie de la macro qui fct déjà, établi une liste avec le chemin d'accès de type: C:\ etc...
    DOnc comment écrire la macro dans ce sens?

    --
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Tu te sers de cette macro pour lister tes fichiers. Tu auras le chemin, il te suffit de récupérer le chemin des fichiers que tu veux copier:

      https://excel.developpez.com/faq/?page=FichiersDir#ListeFichiersScriptingRuntime

      ensuite avec un double clic sur le chemin tu mets ta macro de copie dans la feuille concernée voir ceci

      https://forum.excel-pratique.com/viewtopic.php?t=1314

      voici un exemple à mettre dans la feuille concernée:

      Option Explicit
      Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      Dim chemin As String 'chemin du fichier à copier
      If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
      chemin = Range("E" & Target.Row) & "\" & Target.Value
      MsgBox chemin
      End If
      End Sub
      


      Voilà
      0
      1. bgee2000 Messages postés 101 Statut Membre 1 > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        rien compris :-)
        bon, pour le point 1, j'ai récupéré la liste avec une macro. c'est déjà ça...
        maintenant j'ai un tri,... encore mieux.
        dernière étape, plus compliqué. Ne connaissant pas bien le VBA.. copie cette liste dans un répertoire.
        Donc le chemin affiché est un hyperlien, mais avec une chtite formule elle devient:
        \\srv-dc\gps\MACRO\AIR PARKING SECURITY - FACTURE FOURNISSEUR - DTE20181101 - ID041425 - GED.PDF
        par exemple.
        et je veux envoyer tous ces fichiers dans un répertoire C:\Users\BGS\Desktop\Invoices3670
        j'ai pas mal chercher mais là je bloque
        ça ressemble a ceci mais il faut qu'il puisse aller chercher chaque adresse dans chaque cellule

        https://www.youtube.com/watch?v=RZyjhgyrD5Y&ucbcb=1
        0
      2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > bgee2000 Messages postés 101 Statut Membre
         
        Dans cet exemple le chemin complet se trouve dans la colonne A.
        On boucle sur tout la colonne A pour extraire le nom du fichier ainsi que son extension, ensuite on copie dans le dossier de destination

        Option Explicit
        Sub For_X_to_Next_Ligne()
        Dim FL1 As Worksheet, NoCol As Integer
        Dim NoLig As Long, Var As Variant, fichier As String
        Dim destination As String
        destination = "C:\Users\LePivert\Documents\Nouveau dossier\" ' a adapter toujours finir par \
            Set FL1 = Worksheets("Feuil1") 'a adapter
            NoCol = 1 'lecture de la colonne A'a adapter
            For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4) 'derniére ligne
                Var = FL1.Cells(NoLig, NoCol)
                fichier = Dir(Var) 'nom fichier seul
                 FileCopy Var, destination & fichier 'copie fichier
            Next
            Set FL1 = Nothing
            MsgBox "Opération réussie", vbInformation, "Copie fichier"
        End Sub
        


        voilà c'est tout simple!

        @ Le Pivert
        0
      3. bgee2000 Messages postés 101 Statut Membre 1 > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        merci beaucoup Pivert! ca maaaarche!!
        0
  2. dachiasse Messages postés 1932 Statut Membre 153
     
    Salut,

    J'aime bien le sujet, mais, ce n'est pas clair.

    Tu veux isoler le PDF, mais, tu veux le copier ou le couper ?

    Tu dis avoir beaucoup de répertoires, triés par date. Ça veut dire quoi beaucoup ? 25 pour un humain c'est beaucoup, 500000 pour VBA c'est du pipi de chat.

    J'ai une idée d'algorithme, mais, il faut que tu précises ta demande et ton envie. Comment vas-tu sélectionner l'ID ? En cliquant manuellement à la souris ? En parcourant le tableau après avoir écrit l'ID dans un champs de recherche ? Donne un max de détails car il y a plusieurs façons de faire. Si la méthode que j'utilise ne te convient pas, ce sera une perte de temps.
    0
  3. Geenens
     
    Pour les répertoire c’est réglé , j’ai manuellement copier les 9000 pdf ... dans un seul.
    Je veux les copier dans un autre répertoire à partir d’une liste oui.
    J’ai pu extraire l’ID et ensuite par un VLookup isolé les factures en questions. J’ai leur hypermien et même leur chemin d’accès complet.
    Celui ci est le plus proche sauf pour la sélection du nom du fichier. Je ne vois pas comment l’adapter.
    https://youtu.be/u0jVmFfzyHQ
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. bgee2000 Messages postés 101 Statut Membre 1
     
    j'ai trouvé ceci. a partir d'une liste de nom de fichier, ce qui est maintenant mon cas, il copie le fichier des cellules 2 à 7 (vidéo https://www.youtube.com/watch?v=u0jVmFfzyHQ&feature=youtu.be )
    j'ai remplacé jpg par PDF mais ca fct pas! ...

    https://www.youtube.com/watch?v=u0jVmFfzyHQ&feature=youtu.be

    Sub CopyFiles()
    Dim m As Variant
    Dim copier
    Dim FileName As String
    Dim FileType As String

    'SourceFolder = "C:\Users\BGS\Desktop\Source\"
    'Destination = "C:\Users\BGS\Desktop\Destination\"

    Set copier = CreateObject("Scripting.FileSystemObject")
    FileType = ".pdf"
    For m = 2 To 5
    FileName = Cells(m, 1).Value

    copier.CopyFile "C:\Users\BGS\Desktop\Source\" & FileName & FileType, "C:\Users\BGS\Desktop\Destination\"
    Next
    End Sub

    --
    0
  6. bgee2000 Messages postés 101 Statut Membre 1
     
    cette macro fct! mais je n'ai qu'un seul fichier qui se copie, le premier. puis j'ai un message d'erreur " impossible d'executer le code en mode arrêté"
    et il met cette ligne ci en jaune:

    copier.CopyFile "C:\Users\BGS\Desktop\Source\" & FileName & FileType, "C:\Users\BGS\Desktop
    --
    0