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