Recherche un fichier dans un dossier sur windows

Bonjour a tous.

Je m'excuse mon sujet ne traite pas de excel mais de VBA. J'utilise code VBA sur Outlook, pour générer des mails automatiques.

je souhaiterais savoir comment il faut procédé afin de rechercher dans un dossier, un fichier dont le nom correspond a l'objet du mail pour ajouter en pièce jointe ce fichier.

voici le code :

Private Sub Application_Reminder(ByVal Item As Object)

Dim objMsg As MailItem
Set objMsg = Application.CreateItem(olMailItem)

If Item.MessageClass <> "IPM.Appointment" Then 'Vérifie si il sagit d'un rapel dans le calendrier
  Exit Sub

End If

If Item.Categories <> "MAILS AUTOMATIQUES" Then 'Vérifie si le rappel fait partie de la catégorie: MAILS AUTOMATIQUES
  Exit Sub
End If

objMsg.Importance = olImportanceHight
objMsg.To = Item.Location
objMsg.Subject = Item.Subject
objMsg.Body = Item.Body
objMsg.ReadReceiptRequested = True
objMsg.Attachements.Add "fichier cherché"
objMsg.Display
Set objMsg = Nothing
End Sub

merci d'avance pour votre aide .

Bonsoirm

Peut-être que ce sujet pourrais t'aider : https://forum.excel-pratique.com/excel/chemin-d-acces-dossier-par-nom-dans-cellule-xl-2010-155765

Prépares-toi à un peu de lecture ^^'

Merci beaucoup pour votre aide . je vais voir cela .

bonne soirée

Merci beaucoup pour ce lien . Je me suis penché sur la fonction Fileshearch mais je ne comprends pas bien l’exécution de cette procédure . Je pars du sujet du mail dans le code précédent , le but est de copier le lien pour la pièce jointe, et je ne comprends pas comment arriver à faire l’ensemble... Sachant que j’ai un dossier avec plusieurs sous-dossiers par client et plusieurs fichiers par client en fonction de l’appareil à contrôler. Merci d’avance de votre retour et des pistes de travail que vous pourriez m’apporter.

Bonjour , je continue mes recherche j’ai trouvé quelque piste . mais mon code ne fonctionne pas correctement avez vous une idée d’où peut venir le problème . La partie pour la recherche du fichier et d’un membre du forum que j’ai un peu modifié. ‌ Public recherche As String, pj As String

Private Sub Application_Reminder(ByVal Item As Object)



Dim objMsg As MailItem

recherche = Item.Subject

'Dim pj As String



Set objMsg = Application.CreateItem(olMailItem)



If Item.MessageClass <> "IPM.Appointment" Then 'Vérifie si il sagit d'un rapel dans le calendrier

Exit Sub



End If



If Item.Categories <> "MAILS AUTOMATIQUES" Then 'Vérifie si le rappel fait partie de la catégorie: MAILS AUTOMATIQUES

Exit Sub

End If





Exit Sub





objMsg.Importance = olImportanceHigh

objMsg.To = Item.Location

objMsg.Subject = recherche

objMsg.Body = Item.Body

objMsg.Display

objMsg.Attachments.Add "& pj &"



'message de rappel du devis

MsgBox "Noubliez pas de faire le devis pour ce rappel!", vbOKOnly, vbinfomation

Exit Sub



Set objMsg = Nothing



End Sub



Sub findfile()

chemin "C:\Users\pourcel_r\Desktop\MAINTENANCE COLECTIVITEES", "& recherche &"




End Sub

Private Sub chemin(Dossier As String, FichierCherche As String)

Dim Fso As Object

Dim Dos As Object

Dim SousDos As Object

Dim D As Object

Dim Fichier As Object







Set Fso = CreateObject("Scripting.FileSystemObject")

'si le dossier n'existe pas, fin

If Fso.FolderExists(Dossier) = False Then Exit Sub

Set Dos = Fso.GetFolder(Dossier)

'recherche le fichier dans le dossier

For Each Fichier In Dos.Files

'si trouvé, chemin atribué à la variable pj

If InStr(Fichier, FichierCherche) <> 0 Then

pj = Fichier.Path

Else

'si non message la pièce jointe n'existe pas
MsgBox "La piece jointe n'existe pas pour ce rappel!", vbExclamation

Exit Sub



End If

Next Fichier

Set SousDos = Dos.SubFolders

'recherche dans les sous dossiers

For Each D In SousDos

For Each Fichier In D.Files

'évite l'erreur des dossiers interdits

On Error Resume Next

'si trouvé, chemin atribué à la variable pj

If InStr(Fichier, FichierCherche) <> 0 Then

pj = Fichier.Path



Else
'si non message la pièce jointe n'existe pas


MsgBox "La piece jointe n'existe pas pour ce rappel!", vbExclamation

Exit Sub





End If

Next Fichier

'rappel de la proc pour chercher les

'dossiers enfants

chemin D.Path, FichierCherche

Next D



End Sub

Merci d’avance de votre aide

bonsoir a tous ,

j'ai besoin d'un peu d'aide, j'ai réussi après plusieurs recherche a utiliser FSO pour ma recherche de fichier.

Un petit problème se pose pour attribué le chemin du fichier rechercher qui est transmit par Fichier.path , a une variable que je veut nommé "pj".

La variable "pj" sera la pièce jointe de mon mail.

Private Sub Application_Reminder(ByVal Item As Object)

Dim objMsg As MailItem
Set objMsg = Application.CreateItem(olMailItem)

If Item.MessageClass <> "IPM.Appointment" Then 'Vérifie si il sagit d'un rapel dans le calendrier
  Exit Sub

End If

If Item.Categories <> "MAILS AUTOMATIQUES" Then 'Vérifie si le rappel fait partie de la catégorie: MAILS AUTOMATIQUES
  Exit Sub
End If

objMsg.Importance = olImportanceHight
objMsg.To = Item.Location
objMsg.Subject = Item.Subject
objMsg.Body = Item.Body
objMsg.ReadReceiptRequested = True
objMsg.Attachements.Add "fichier cherché"
objMsg.Display
Set objMsg = Nothing
End Sub
Sub Test()

    Chemin "C:\Users\pourcel\Desktop\cle ub 32 giga\", "La découpe des panneaux.docx"

End Sub

Private Sub Chemin(Dossier As String, FichierCherche As String)

    Dim Fso As Object
    Dim Dos As Object
    Dim SousDos As Object
    Dim D As Object
    Dim Fichier As Object

    Set Fso = CreateObject("Scripting.FileSystemObject")

    'si le dossier n'existe pas, fin
    If Fso.FolderExists(Dossier) = False Then Exit Sub

    Set Dos = Fso.GetFolder(Dossier)

    'recherche le fichier dans le dossier
    For Each Fichier In Dos.Files

        'si trouvé, atribu chemin à la varible pj, la variable pj est utilisé dans la macro précédente pour envoi de mail  via l'application reminder qui se trouve dans ThisOutlookSession.

        If InStr(Fichier, FichierCherche) <> 0 Then

            MsgBox Fichier.Path

           Exit Sub

        End If

    Next Fichier

    Set SousDos = Dos.SubFolders

    'recherche dans les sous dossiers
    For Each D In SousDos

        For Each Fichier In D.Files

            'évite l'erreur des dossiers interdits
            On Error Resume Next

'si trouvé, atribu chemin à la varible pj, la variable pj est utilisé dans la macro précédente pour envoi de mail  via l'application reminder qui se trouve dans ThisOutlookSession.

            If InStr(Fichier, FichierCherche) <> 0 Then

        MsgBox Fichier.Path

                Exit Sub

            End If

        Next Fichier

        'rappel de la proc pour chercher les
        'dossiers enfants
        Chemin D.Path, FichierCherche

    Next D

End Sub

merci beaucoup pour votre aide.

Rechercher des sujets similaires à "recherche fichier dossier windows"