Code VBA pour trouver chemin d'acces fichier

Bonsoir à tous

Toujours plein de joie à partager mes difficultés avec vous.

J'espère un jour pouvoir apporter des solutions aux problèmes d'autres personnes.

Sur ceux voici mon soucis:

J'ai un DOSSIER contenant des fichiers PDF et un fichier EXCEL. A partir du fichier Excel il y'a des macros qui permettent d'éditer certains fichiers pdf du DOSSIER.

Le pire est que sur chaque machine ou le DOSSIER doit étre installé, je suis obligé d'adapter les chemins d'accès ce qui est fastidieux.

Je souhaiterai ci-possible qu'on m'aide à automatiser le chemin d'accès de sorte que quelque soit l'emplacement du dossier et de la session de l'utilisateur, que ca prenne automatiquement le chemin d'accès des fichiers.

Ci-dessous un modèle de code :

Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String _
    , ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Sub Imprimer_P()
    Dim NomFichier As String
    Dim x As Long

    x = FindWindow("XLMAIN", Application.Caption)

    NomFichier = "C:\Documents and Settings\PA0171\mes documents\SGIIOC\conditions générales.pdf"

    ShellExecute x, "print", NomFichier, "", "", 1
End Sub

N.B : si tous les codes contenus dans les modules et dont le chemin d'accès =

"C:\Documents and Settings\PA0171\mes documents

est la partie qui doit s'adapter à la machine de chaque utilisateur.

Merci

Bonsoir Zombe ::wink:

Essaye avec ce code

Sub Imprimer_P()
    Dim NomFic As String, sPath As String
    Dim x As Long    
    x = FindWindow("XLMAIN", Application.Caption)
    sPath = Environ("USERPROFILE")
    sPath = sPath & "\mes documents\SGIIOC\"
    NomFic = "conditions générales.pdf"
    ShellExecute x, "print", sPath & NomFic, "", "", 1
End Sub

A+

Merci BrunoM45 pour ta proposition.

Je l'ai testé sous ma session et ca marche bien chez moi.

Et si par exemple je place le dossier dans C que dois-je faire pour que ca marche également? Faut-il tout simplement remplacer mes documents par C tout simplement?

Dans un code qui me permet d'envoyer des mails à mes clients, je joint des pièces dont le chemin d'accès est :"C:\Documents and Settings\PA0171\mes documents\SGIIOC\conditions générales.pdf". Peut-on également faire de sorte que le chemin d'accès des pièces-jointes s'adaptent automatiquement à la session de l'utilisateur?

N.B : les fichiers à joindre se trouvent aussi dans le même dossier SGIIOC.

Bonne compréhension

Bonjour Zombe

Et si par exemple je place le dossier dans C que dois-je faire pour que ca marche également? Faut-il tout simplement remplacer mes documents par C tout simplement?

Il faut mettre dans la variable "sPath" le chemin d'accès complet au fichier

Dans un code qui me permet d'envoyer des mails à mes clients, je joint des pièces dont le chemin d'accès est :"C:\Documents and Settings\PA0171\mes documents\SGIIOC\conditions générales.pdf". Peut-on également faire de sorte que le chemin d'accès des pièces-jointes s'adaptent automatiquement à la session de l'utilisateur?

C'est ce que j'ai fait ans mon code, comme tu l'avais demandé dans ton 1er post
sPath = Environ("USERPROFILE")

Récupère le chemin d'accès du profil utilisateur, si tu te log en tant que "PA0171"

le chemin d'accès sera : "C:\Documents and Settings\PA0171"

sPath = sPath & "\mes documents\SGIIOC\"

Ensuite j'ajoute à ce chemin, le chemin d'accès du dossier "Mes documents" + dossier "SGIIOC"

J'espère que ce sera plus clair pour toi

A+

Merci pour tes brillantes explications qui m'ont permis de comprendre ton code.

J'ai tenté de d'ajuster avec le code ci-dessous notamment pour les pièces jointes mais je passe à côté.

Je préfère mettre tout le code afin que vous puissiez m'aider.

Sub Mail_PA()
' Works in Excel 2000, Excel 2002, Excel 2003, Excel 2007, Excel 2010, Outlook 2000, Outlook 2002, Outlook 2003, Outlook 2007, Outlook 2010.
' This example sends the last saved version of the Activeworkbook object .
    Dim OutApp As Object
    Dim OutMail As Object
    Dim texte As String
    Dim I As String
    Dim NomFic As String, spath As String

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    I = Range("B29").Value
    texte = texte & Range("B39").Value & " le, " & Range("E17").Value & vbCrLf & vbCrLf
    texte = texte & "A" & vbCrLf

    On Error Resume Next

    With OutMail
        .To = Range("b29").Value
        .CC = ""
        .BCC = ""
        .Subject = "Bienvenue dans votre"
        .Body = texte
        .Attachments.Add ("C:\Documents and Settings\bf0117\mes documents\SGIIOC\Notice d'information.pdf")
        .Attachments.Add ("C:\Documents and Settings\bf0117\bureau\mes documents\Notice d'information2.pdf")
               .Send
    End With
    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing

End Sub
Rechercher des sujets similaires à "code vba trouver chemin acces fichier"