XL 2013 Copier des pdf depuis un dossier vers divers autres dossiers.

Luc MOUNY

XLDnaute Junior
Bonjour à toutes et à tous,
J'espère que vous êtes tous en très bonne forme.
Je viens encore une fois solliciter les spécialistes du forum.
En ces temps de confinement, j'en profite pour automatiser un peu mon programme de gestion de copropriété.
J'ai monté une véritable "usine à gaz" pour copier les fichiers pdf qui sont dans un répertoire nommé AG pour Assemblée générale et vont se copier dans les dossiers aux noms des copropriétaires. J'ai précédé les noms de dossiers par les numéros de lots, c'est plus simple, ils se retrouvent en tête de répertoire.
Un exemple partiel de mon code : pour un seul copropriétaire se situe dans le fichier test.
Je suis perdu dans les variables, il me faut répéter cette macro pour chacun des copropriétaires. je me suis limité à 4 noms dans mon exemple. Je parlais d'usine à gaz ?, ces macros fonctionnent parfaitement, mais chaque année je serais obligé de modifier les années qui figurent dans les noms de fichiers.
Comme je destine ce programme de gestion à un de mes enfants qui sera mon successeur, je voudrais simplifier leur future fonction.
.
Y aurait-il une possibilité de copier les fichiers pdf en prenant les noms de fichiers en colonne A, le dossier d'origine en colonne B et les dossiers de destination en colonne C.
J'ai effectué ces derniers jours beaucoup de recherches, mais rien de concluant, chaque essai se solde par des erreurs, sauf dans le fichier test qui lui fonctionne.
Merci d'avance pour l'aide que vous voudrez bien m'apporter.
Luc
 

Pièces jointes

  • Test.xlsm
    18.1 KB · Affichages: 10
  • Test.xlsm
    18.1 KB · Affichages: 3

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Luc, ou bonjour ! Le Forum

J'ai fait un truc pour toi, mais donc j'ai créé des répertoires à la va-vite (Copy/Paste Copy/Paste...) Idem pour les PDF, j'ai pris Attestation_de_deplacement_derogatoire.pdf LoL !

Donc ne t'étonnes pas ca ne correspond plus aux chemins indiqués dans ton fichier d'origine, mais au moins j'ai pu tester.

Attention, ce genre de codes doivent être testé d'abord sur des répertoires de tests, ou alors fais un backup complets de tes répertoires avant de faire tourner.
Pour les répertoires de destination, si le PDF existe déjà avec le même nom, le CopyFile écrasera la version qui s'y trouve sans alerte. Parfois on préfère ajouter un "TimeStamp" à la fin du nom de fichier, pour faire du "versioning"... Si tu ne veux pas, tu permute simplement la ligne en commentaire..;

Si tu copy/paste le code dans un autre classeur, Il faut penser à activer la référence à la bibliothèque "Microsoft Scripting Runtime" depuis VBE Tools => Références

Capture.JPG


Bien à toi, et à tes proches, tes enfants seront contents avec cette macro, ils devraient gagner du temps !

@+Thierry
 

Pièces jointes

  • XLD_LucMOUNY_Test_CopyFile_PDF_Via_FSO.xlsm
    41.2 KB · Affichages: 16

patricktoulon

XLDnaute Barbatruc
bonjour
c'est quoi cette manie de faire du scripting runtime a tout bout de champ ? o_O

VB:
'************************************
'FileCopy SourceFile, DestinationFile ' Copy source to target.
'***********************************
Sub test()
For Each cel In Range("A2", Cells(Rows.Count, "A").End(xlUp))
If Dir(cel.Offset(, 1) & cel) <> "" And Dir(cel.Offset(, 2), vbDirectory) <> "" Then
 FileCopy cel.Offset(, 1) & cel, cel.Offset(, 2) & cel
End If
Next
End Sub
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @patricktoulon , @Luc MOUNY , Le Forum


Oui on pourait aussi le faire par une ligne de commande tant qu'à faire ! Ce n'est pas une manie, c'est que depuis que je suis passé sur Windows NT 3, (Windows 95) FSO était proposé par MS dans VBA et dans mes formations MS ils promottaient son usage. Donc question d'habitude mais pas une "manie" . Je pense aussi que la bibliothèque est plus vaste et les objects bien documentés.

Maintenant chacun ses habitudes.... Et liberté de choix ;) (Comme de déclarer ses Variables !)

Bonne journée
@+Thierry
 

patricktoulon

XLDnaute Barbatruc
re
bonjour @_Thierry
je suis un VBS(iste) a mort bien avant VBA.
scripting runtime FSO je connais plutot bien mais dans vba il est très lourd
ps j'ai ajouté bien entendu les test dir qui sont ma fois importants je crois dans ce contexte ;)

teste sur 1000 ou 2000 lignes tu verra bien la différence ;)
 

Luc MOUNY

XLDnaute Junior
bonjour
c'est quoi cette manie de faire du scripting runtime a tout bout de champ ? o_O

VB:
'************************************
'FileCopy SourceFile, DestinationFile ' Copy source to target.
'***********************************
Sub test()
For Each cel In Range("A2", Cells(Rows.Count, "A").End(xlUp))
If Dir(cel.Offset(, 1) & cel) <> "" And Dir(cel.Offset(, 2), vbDirectory) <> "" Then
FileCopy cel.Offset(, 1) & cel, cel.Offset(, 2) & cel
End If
Next
End Sub
 

Luc MOUNY

XLDnaute Junior
Bonjour à tous,
Merci PatrickToulon et à Thierry,

Je suis en phase de test, je reviens vers vous dans la soirée ou demain, il me reste quelques bricoles à terminer et je me remets devant ma machine sans trop tarder.
Merci de vous êtes intéressés à mon problème. Bonne soirée à tous
Luc
 

Luc MOUNY

XLDnaute Junior
Bonjour à tous,
Merci PatrickToulon et à Thierry,

Je suis en phase de test, je reviens vers vous dans la soirée ou demain, il me reste quelques bricoles à terminer et je me remets devant ma machine sans trop tarder.
Merci de vous êtes intéressés à mon problème. Bonne soirée à tous
Luc


Bonsoir à tous, Mon problème est résolu. Tout fonctionne merveilleusement bien, bonjour la rapidité des réponses, ce qui est coutumier sur le forum Excel Download. Merci encore aux passionnés qui n'hésitent pas à consacrer de leur temps; Chapeau à vous tous et gardez vous en bonne santé.
A plus tard peut-être, s'il me prends la fantaisie de me lancer dans une nouvelle aventure.
Je continuerai néanmoins à suivre vos publications.
Merci pour tout, en ce qui me concerne, c'est du 100 pour 100, chaque demande à été résolue et de quelle manière...
 

Discussions similaires

Réponses
9
Affichages
298
Réponses
11
Affichages
249

Statistiques des forums

Discussions
312 305
Messages
2 087 091
Membres
103 465
dernier inscrit
Ehoarn_src