Outlook Macro Notification Outlook si nouveaux fichiers folder Windows

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

DELATTE

XLDnaute Junior
Bonjour à tous,

Je voulais savoir si il était possible de générer une macro dans Outlook qui enverrait une notification dès que de nouveaux fichiers pdf sont ajoutés dans un folder Windows.

Un grand merci d'avance.

Bien à vous,
 
Bonjour,
Je t'invites a créer une tâche dans le gestionnaire de tâches pour exécuter un vbscript toutes les 5 minutes, ou plus ou moins en fonction de ce que tu as besoin de réactivité.

Ce script vérifie l'arrivée de nouveaux fichiers dans un répertoire que tu défini, Envoi un notification Outlook puis archives dans un fichier de log pour ne plus le renvoyer.
Code:
' Script VBScript pour surveiller un répertoire et envoyer un email pour chaque nouveau PDF
' Auteur: Assistant Claude
' Version: 1.0

Option Explicit

' === CONFIGURATION - À MODIFIER SELON VOS BESOINS ===
Const REPERTOIRE_SURVEILLE = "C:\MonRepertoire\PDFs"  ' Chemin du répertoire à surveiller
Const EMAIL_DESTINATAIRE = "destinataire@exemple.com"  ' Email du destinataire
Const EMAIL_EXPEDITEUR = "expediteur@exemple.com"      ' Votre adresse email (optionnel)
Const SUJET_EMAIL = "Nouveau fichier PDF détecté"      ' Sujet de l'email
'Const INTERVALLE_VERIFICATION = 5000                   ' Intervalle en millisecondes (5 secondes)

' Variables globales
Dim fso, dossier, fichiersPrecedents
Set fso = CreateObject("Scripting.FileSystemObject")
Set fichiersPrecedents = CreateObject("Scripting.Dictionary")

' Fonction principale
Sub Main()
    WScript.Echo "=== Surveillance des fichiers PDF ==="
    WScript.Echo "Répertoire surveillé : " & REPERTOIRE_SURVEILLE
    WScript.Echo "Intervalle de vérification : " & (INTERVALLE_VERIFICATION / 1000) & " secondes"
    WScript.Echo "Appuyez sur Ctrl+C pour arrêter..."
    WScript.Echo ""
  
    ' Vérifier que le répertoire existe
    If Not fso.FolderExists(REPERTOIRE_SURVEILLE) Then
        WScript.Echo "ERREUR : Le répertoire '" & REPERTOIRE_SURVEILLE & "' n'existe pas !"
        WScript.Quit
    End If
  
    ' Initialiser la liste des fichiers existants
    InitialiserFichiersPrecedents()
  
    ' Boucle de surveillance
'    Do
        VerifierNouveauxFichiers()
    '    WScript.Sleep INTERVALLE_VERIFICATION
'    Loop
End Sub

' Initialise la liste des fichiers PDF déjà présents
Sub InitialiserFichiersPrecedents()
    Dim fichier
    Set dossier = fso.GetFolder(REPERTOIRE_SURVEILLE)
  
    For Each fichier In dossier.Files
        If LCase(fso.GetExtensionName(fichier.Name)) = "pdf" Then
            fichiersPrecedents.Add fichier.Name, fichier.DateCreated
        End If
    Next
  
    WScript.Echo "Initialisation : " & fichiersPrecedents.Count & " fichiers PDF trouvés"
End Sub

' Vérifie s'il y a de nouveaux fichiers PDF
Sub VerifierNouveauxFichiers()
    Dim fichier, nomFichier
    Set dossier = fso.GetFolder(REPERTOIRE_SURVEILLE)
  
    For Each fichier In dossier.Files
        nomFichier = fichier.Name
      
        ' Vérifier si c'est un fichier PDF
        If LCase(fso.GetExtensionName(nomFichier)) = "pdf" Then
            ' Vérifier si c'est un nouveau fichier
            If Not fichiersPrecedents.Exists(nomFichier) Then
                WScript.Echo "Nouveau fichier détecté : " & nomFichier
              
                ' Ajouter à la liste des fichiers connus
                fichiersPrecedents.Add nomFichier, fichier.DateCreated
              
                ' Envoyer l'email
                EnvoyerEmail nomFichier, fichier.Path
            End If
        End If
    Next
End Sub

' Envoie un email via Outlook
Sub EnvoyerEmail(nomFichier, cheminComplet)
    On Error Resume Next
  
    Dim outlookApp, mailItem
  
    ' Créer une instance d'Outlook
    Set outlookApp = CreateObject("Outlook.Application")
  
    If Err.Number <> 0 Then
        WScript.Echo "ERREUR : Impossible de démarrer Outlook (" & Err.Description & ")"
        Err.Clear
        Exit Sub
    End If
  
    ' Créer un nouvel email
    Set mailItem = outlookApp.CreateItem(0) ' olMailItem = 0
  
    With mailItem
        .To = EMAIL_DESTINATAIRE
        If EMAIL_EXPEDITEUR <> "" Then .SentOnBehalfOfName = EMAIL_EXPEDITEUR
        .Subject = SUJET_EMAIL & " - " & nomFichier
        .Body = "Bonjour," & vbCrLf & vbCrLf & _
                "Un nouveau fichier PDF a été détecté dans le répertoire surveillé." & vbCrLf & vbCrLf & _
                "Nom du fichier : " & nomFichier & vbCrLf & _
                "Chemin complet : " & cheminComplet & vbCrLf & _
                "Date de détection : " & Now() & vbCrLf & vbCrLf & _
                "Cordialement," & vbCrLf & _
                "Système de surveillance automatique"
      
        ' Optionnel : Joindre le fichier PDF à l'email
        ' .Attachments.Add cheminComplet
      
        ' Envoyer l'email
        .Send
    End With
  
    If Err.Number = 0 Then
        WScript.Echo "Email envoyé avec succès pour : " & nomFichier
    Else
        WScript.Echo "ERREUR lors de l'envoi de l'email : " & Err.Description
        Err.Clear
    End If
  
    ' Nettoyer les objets
    Set mailItem = Nothing
    Set outlookApp = Nothing
End Sub

' Gestion des erreurs globales
Sub GestionErreur(description)
    WScript.Echo "ERREUR : " & description
    WScript.Echo "Le script continue à fonctionner..."
End Sub

' Démarrer le script
Main()
 
Dernière édition:
Bonjour,
Je t'invites a créer une tâche dans le gestionnaire de tâches pour exécuter un vbscript toutes les 5 minutes, ou plus ou moins en fonction de ce que tu as besoin de réactivité.

Ce script vérifie l'arrivée de nouveaux fichiers dans un répertoire que tu défini, Envoi un notification Outlook puis archives dans un fichier de log pour ne plus le renvoyer.
Code:
' Script VBScript pour surveiller un répertoire et envoyer un email pour chaque nouveau PDF
' Auteur: Assistant Claude
' Version: 1.0

Option Explicit

' === CONFIGURATION - À MODIFIER SELON VOS BESOINS ===
Const REPERTOIRE_SURVEILLE = "C:\MonRepertoire\PDFs"  ' Chemin du répertoire à surveiller
Const EMAIL_DESTINATAIRE = "destinataire@exemple.com"  ' Email du destinataire
Const EMAIL_EXPEDITEUR = "expediteur@exemple.com"      ' Votre adresse email (optionnel)
Const SUJET_EMAIL = "Nouveau fichier PDF détecté"      ' Sujet de l'email
'Const INTERVALLE_VERIFICATION = 5000                   ' Intervalle en millisecondes (5 secondes)

' Variables globales
Dim fso, dossier, fichiersPrecedents
Set fso = CreateObject("Scripting.FileSystemObject")
Set fichiersPrecedents = CreateObject("Scripting.Dictionary")

' Fonction principale
Sub Main()
    WScript.Echo "=== Surveillance des fichiers PDF ==="
    WScript.Echo "Répertoire surveillé : " & REPERTOIRE_SURVEILLE
    WScript.Echo "Intervalle de vérification : " & (INTERVALLE_VERIFICATION / 1000) & " secondes"
    WScript.Echo "Appuyez sur Ctrl+C pour arrêter..."
    WScript.Echo ""
 
    ' Vérifier que le répertoire existe
    If Not fso.FolderExists(REPERTOIRE_SURVEILLE) Then
        WScript.Echo "ERREUR : Le répertoire '" & REPERTOIRE_SURVEILLE & "' n'existe pas !"
        WScript.Quit
    End If
 
    ' Initialiser la liste des fichiers existants
    InitialiserFichiersPrecedents()
 
    ' Boucle de surveillance
'    Do
        VerifierNouveauxFichiers()
    '    WScript.Sleep INTERVALLE_VERIFICATION
'    Loop
End Sub

' Initialise la liste des fichiers PDF déjà présents
Sub InitialiserFichiersPrecedents()
    Dim fichier
    Set dossier = fso.GetFolder(REPERTOIRE_SURVEILLE)
 
    For Each fichier In dossier.Files
        If LCase(fso.GetExtensionName(fichier.Name)) = "pdf" Then
            fichiersPrecedents.Add fichier.Name, fichier.DateCreated
        End If
    Next
 
    WScript.Echo "Initialisation : " & fichiersPrecedents.Count & " fichiers PDF trouvés"
End Sub

' Vérifie s'il y a de nouveaux fichiers PDF
Sub VerifierNouveauxFichiers()
    Dim fichier, nomFichier
    Set dossier = fso.GetFolder(REPERTOIRE_SURVEILLE)
 
    For Each fichier In dossier.Files
        nomFichier = fichier.Name
     
        ' Vérifier si c'est un fichier PDF
        If LCase(fso.GetExtensionName(nomFichier)) = "pdf" Then
            ' Vérifier si c'est un nouveau fichier
            If Not fichiersPrecedents.Exists(nomFichier) Then
                WScript.Echo "Nouveau fichier détecté : " & nomFichier
             
                ' Ajouter à la liste des fichiers connus
                fichiersPrecedents.Add nomFichier, fichier.DateCreated
             
                ' Envoyer l'email
                EnvoyerEmail nomFichier, fichier.Path
            End If
        End If
    Next
End Sub

' Envoie un email via Outlook
Sub EnvoyerEmail(nomFichier, cheminComplet)
    On Error Resume Next
 
    Dim outlookApp, mailItem
 
    ' Créer une instance d'Outlook
    Set outlookApp = CreateObject("Outlook.Application")
 
    If Err.Number <> 0 Then
        WScript.Echo "ERREUR : Impossible de démarrer Outlook (" & Err.Description & ")"
        Err.Clear
        Exit Sub
    End If
 
    ' Créer un nouvel email
    Set mailItem = outlookApp.CreateItem(0) ' olMailItem = 0
 
    With mailItem
        .To = EMAIL_DESTINATAIRE
        If EMAIL_EXPEDITEUR <> "" Then .SentOnBehalfOfName = EMAIL_EXPEDITEUR
        .Subject = SUJET_EMAIL & " - " & nomFichier
        .Body = "Bonjour," & vbCrLf & vbCrLf & _
                "Un nouveau fichier PDF a été détecté dans le répertoire surveillé." & vbCrLf & vbCrLf & _
                "Nom du fichier : " & nomFichier & vbCrLf & _
                "Chemin complet : " & cheminComplet & vbCrLf & _
                "Date de détection : " & Now() & vbCrLf & vbCrLf & _
                "Cordialement," & vbCrLf & _
                "Système de surveillance automatique"
     
        ' Optionnel : Joindre le fichier PDF à l'email
        ' .Attachments.Add cheminComplet
     
        ' Envoyer l'email
        .Send
    End With
 
    If Err.Number = 0 Then
        WScript.Echo "Email envoyé avec succès pour : " & nomFichier
    Else
        WScript.Echo "ERREUR lors de l'envoi de l'email : " & Err.Description
        Err.Clear
    End If
 
    ' Nettoyer les objets
    Set mailItem = Nothing
    Set outlookApp = Nothing
End Sub

' Gestion des erreurs globales
Sub GestionErreur(description)
    WScript.Echo "ERREUR : " & description
    WScript.Echo "Le script continue à fonctionner..."
End Sub

' Démarrer le script
Main()
Un grand merci à vous. 😉
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
101
Réponses
2
Affichages
863
Retour