Macro enchainée avec chemin relatif
Bonjour
Je bataille avec mon niveau débutant sur une macro qui me permet depuis une fichier excel ouvert, d'ouvrir deux fichiers CSV pour importer leurs données dans des onglets différents. PAr défaut, les deux fichiers *.CSV sont enregistrés sur le Bureau (Desktop) de chaque utilisateur.
En plus clair, le fichier CPIT comporte un bouton sur l'onglet "accueil" et plusieurs onglets dont un onglet PF et un onglet LD qui sont des listes.
Lors de l'appui sur le bouton macro, excel ouvre un fichier PF.csv copie l'intégralité des données et les importe dans l'onglet PF du fichier principal CPIT, ferme le fichier PF.CSV, ouvre le fichier LD.CSV, copie l'intégralité dans l'onglet PF, ferme le fichier et revient sur l'accueil.
Tout fonctionne sauf que les chemins sont en dur. J'ai essayé via le net de trouver les fonctions chemin relatif car ce fichier est partagé et chaque utilisateur va l'utiliser sur un poste entreprise avec un User. Je suis tombé sur la solution de RIC (https://forum.excel-pratique.com/viewtopic.php?t=112782) mais cela ne fonctionne que sur un import (pas l'ensemble).
Malgré plusieurs essais en modifiant les paramètres, cela ne fonctionne pas.
J'ai pu voir la fonction "Environ"usrename" et j'ai essayé de l'intégrer dans cette macro mais cela bloque.
Si quelqu'un avait une solution, je lui en serait très reconnaissant
Workbooks.Open ("C:\Users\" & Environ("Username") & "\Desktop\PF.csv"), Local:=True
Range("A1:V213").Select
Selection.Copy
Windows("CPIT.xlsm").Activate
Sheets("PF").Select
Cells.Select
ActiveSheet.Paste
Workbooks.Open Filename:="C:\Users\" & Environ("username") & "\Desktop\LD.csv", Local:=True
Range("A1:V78").Select
Selection.Copy
Windows("CPIT.xlsm").Activate
Sheets("LD").Select
Cells.Select
ActiveSheet.Paste
Windows("PF.csv").Activate
Application.CutCopyMode = False
ActiveWindow.Close
Windows("LD.csv").Activate
Application.CutCopyMode = False
ActiveWindow.Close
Sheets("Accueil").Select
Éventuellement s'il était possible d'ouvrir un boite de l'explorateur pour choisir le fichier sur le bureau de l'utilisateur en filtrant par type (csv) et éventuellement une partie du nom (*LD*.csv par exemple) ce serait l’idéal. J'ai trouvé quelques fonctions mais je n'ai pas réussi à mettre en place.
Cordialement
Sebastien
Bonjour,
peut être en modifiant ainsi :
Dim USER as string
USER=Environ("username")
Workbooks.Open Filename="C:\Users\"&USER&"\Desktop\PF.csv"
Range("A1:V213").Select
Selection.Copy
Windows("CPIT.xlsm").Activate
Sheets("PF").Select
Cells.Select
ActiveSheet.Paste
Workbooks.Open Filename:="C:\Users\" & USER& "\Desktop\LD.csv"
Range("A1:V78").Select
Selection.Copy
Windows("CPIT.xlsm").Activate
Sheets("LD").Select
Cells.Select
ActiveSheet.Paste
Windows("PF.csv").Activate
Application.CutCopyMode = False
ActiveWindow.Close
Windows("LD.csv").Activate
Application.CutCopyMode = False
ActiveWindow.Close
Sheets("Accueil").Select
- Messages
- 4'094
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonsoir,
Essayer
Workbooks.Open Filename:=CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\PF.csv"
Workbooks.Open Filename:=CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\LD.csv"
@thev et @Xmenpl un grand merci, ça fonctionne parfaitement !