Script entre Excel et Explorateur windows

Signaler
Messages postés
62
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
6 mai 2021
-
Messages postés
62
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
6 mai 2021
-
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

Messages postés
7366
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
6 mai 2021
632
Messages postés
62
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
6 mai 2021

génial, merci!!
Messages postés
62
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
6 mai 2021

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?

--
Messages postés
7366
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
6 mai 2021
632
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à
Messages postés
62
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
6 mai 2021
>
Messages postés
7366
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
6 mai 2021

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
Messages postés
7366
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
6 mai 2021
632 >
Messages postés
62
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
6 mai 2021

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
Messages postés
62
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
6 mai 2021
>
Messages postés
7366
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
6 mai 2021

merci beaucoup Pivert! ca maaaarche!!
Messages postés
1692
Date d'inscription
samedi 12 septembre 2020
Statut
Membre
Dernière intervention
6 mai 2021
135
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.
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
Messages postés
62
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
6 mai 2021

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

--
Messages postés
62
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
6 mai 2021

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
--