Mail automatique avec recherche d'éléments

13test-mail-auto.xlsm (243.60 Ko)

Bonjour,

je voudrais faire une macro qui génère le texte ci-dessous.

A la place des éléments soulignés, je voudrais qu'il y ait les éléments correspondant au salarié et surtout au mois actuel présents sur la feuille "récapitulatif 2024".

De plus, s'il y a des CP, alors ajouter à la ligne du salarié (dans le mail) "du "..." au "..." (et du "..." au "..." s'il y a plusieurs périodes dans le même mois). Les dates sont inscrites sur les feuilles des salariés dans la partie périodes de vacances.

Les salariés ont été renommés par la première lettre de leur prénom pour raison de confidentialité et les macros ne fonctionnent pas car le fichier a été téléchargé.

Merci d'avance !!!

______________________________________________________________________________

Bonjour Madame ***,

Voici ci-dessous les éléments pour les paies de "mois du jour actuel" 2024 :

A : « nombre de tickets » tickets, « nombre de CP » CP
E : « nombre de tickets » tickets, « nombre de CP » CP
G : « nombre de tickets » tickets, « nombre de CP » CP
J : « nombre de tickets » tickets, « nombre de CP » CP
L : « nombre de tickets » tickets, « nombre de CP » CP
M : « nombre de tickets » tickets, « nombre de CP » CP
M2 : « nombre de tickets » tickets, « nombre de CP » CP
N : « nombre de tickets » tickets, « nombre de CP » CP
T : « nombre de tickets » tickets, « nombre de CP » CP
V : « nombre de tickets » tickets, « nombre de CP » CP

Nous restons à votre disposition si besoin.

Bonne journée à vous.

Bien cordialement

______________________________________________________________________________

Bonjour,

Avec le retour des prenoms pour que le code soit plus compréhensible, tu peux avoir un truc comme ça :

image

J'ai rajouté des colonnes sur certains onglets pour avoir les mêmes données aux meme endroit entre les personnes.

Génére un Mail suivant les données de la feuille Recapitulatif et va chercher les dates de congés payés si besoin dans les autres feuilles.
L'enssemble de mes modifications de code se trouve dans le Module "M_Mail"

image

A+

Merci beaucoup !

Quand je copie les codes sur le fichier original, la ligne ".BodyFormat = olFormatHTM" empêche l'exécution de la macro, sais tu pourquoi ?

Je ne sais pas pourquoi, tu utilise Outlook ? est-ce que sur le fichier que je t'ai envoyé ça fonctionne ?

Tu peux essayer de changer cette ligne en :

.BodyFormat = 1

Lien Microsoft pour les valeur possible de BodyFormat

Oui ton fichier fonctionnait.

Ca marche nickel avec la ligne que tu m'a indiqué !

Merci beaucoup pour tes retours rapides !!!

Après vérification, le mail se génère bien mais il ne met pas les infos des salariés...

il m'affiche juste le texte qui ne change jamais mais le reste est vide.

Oui ton fichier fonctionnait.

Alors il faut garder ".BodyFormat = olFormatHTM" pour que la macro puisse récupérer ta signature

.BodyFormat = olFormatHTM

________________________________________________________________________

Après vérification, le mail se génère bien mais il ne met pas les infos des salariés...

il m'affiche juste le texte qui ne change jamais mais le reste est vide.

Quand tu as ajouté la macro sur ton fichier réel, as-tu :

  • Glissé le Module "M_Mail" de mon fichier sur le tien ? (ou copier l'enssemble du module sur un module de ton fichier)
  • Ajouté une colonne (a coté de la colonne F) sur les feuilles de certain collegues pour que "périodes de vacances" soit toujours sur les colonnes [AG:AJ] ?
    (La macro recherche en colonne AH la date de début de vacance pour identifier si elle correspond au mois en cours)
image
  • Sur ton fichier, est-ce que dans la période de vacance il y a bien une formule pour le total de jour ? (car dans ton fichier joint pas de formule colonne AJ)
    Si je modifie la feuille de Gregory, ( le 5 n'est pas une formule et ne correspond pas non plus au vrai nombre de jour maiis c'est pour l'exemple)
image

la cellule total etait toujours a 0, donc la macro ne detecte pas le nombres de congés dans le mois en cours et n'inscrit pas les dates.
Moi, quand je test, j'ai ça :

image

Modification chez Margot (sans différencier jours ouvré des weekends et jours fériés)

image image image

Pour le code, j'ai copier coller celui de ton fichier,

J'ai ajouté des colonnes pour que la zone période de vacances soit en colonnes AG:AJ,

Pour le total des jours il n'y a pas encore de formule a cause de quelques subtilités, mais je vais surement en mettre une par la suite mais ce n'est pas ma priorité pour le moment,

De plus, il faudrait ajouté un salarié, ces informations sont à la suite de Gregory dans la plage V18:X32

J'ai remis la ligne du début

.BodyFormat = olFormatHTM

Mais le mail se génère toujours sans les infos des salariés :

"Bonjour Madame ***,

Voici ci-dessous les éléments pour les paies de juillet 2024 :












Nous restons à votre disposition si besoin.

Bonne journée à vous.

Bien cordialement,"

Ha ok, donc soit tu n'as pas copié tout le contenu du module "M_Mail", soit ton bouton n'appelle pas la bonne precedure, soit les deux.

________________________________________________________________________

Sache qu'il y a 3 parties dans le module "M_Mail", la partie déclaration de variables et constantes + 2 procédures.

  • Les constantes et declarations de variable a mettre au debut (que tu n'as pas du copier avec BodyFormat qui n'avait pas sa constante) :
Option Explicit
' Codes collectés et modifiés par BrunoM45
' https://forum.excel-pratique.Oper/membre/15789
' https://www.excel-pratique.Oper/fr/telechargements/utilitaires/pdf-email-vba-excel-no508
Const olMailItem As Integer = 0
Const olFormatHTML As Integer = 2

Public Ligne_MoisRecap As Byte, Date_CP As String, Ligne As Byte
Public Tickets_Margot As Byte, CP_Margot As Byte, Info_Margot As String
Public Tickets_Nathan As Byte, CP_Nathan As Byte, Info_Nathan As String
Public Tickets_Miguel As Byte, CP_Miguel As Byte, Info_Miguel As String
Public Tickets_Jessica As Byte, CP_Jessica As Byte, Info_Jessica As String
Public Tickets_Gregory As Byte, CP_Gregory As Byte, Info_Gregory As String
Public Tickets_Elea As Byte, CP_Elea As Byte, Info_Elea As String
Public Tickets_Lorraine As Byte, CP_Lorraine As Byte, Info_Lorraine As String
Public Tickets_Alexandre As Byte, CP_Alexandre As Byte, Info_Alexandre As String
Public Tickets_Tristan As Byte, CP_Tristan As Byte, Info_Tristan As String
Public Tickets_Valentin As Byte, CP_Valentin As Byte, Info_Valentin As String

Const Colonne_CP_Debut As Integer = 34
Const Colonne_CP_Fin As Integer = 35
Const Ligne_CP_Debut As Integer = 27
Const Ligne_CP_Fin As Integer = 36
  • la procedure "M_InfoMail" pour récupérer les éléments (que tu n'as pas du copier):
Sub M_InfoMail()

Ligne_MoisRecap = 3 + Format(Date, "m")

'___________________________________________________________________________________________Margot___________________________________________________________________________________________
Tickets_Margot = Feuil1.Cells(Ligne_MoisRecap, 4).Value
CP_Margot = Feuil1.Cells(Ligne_MoisRecap, 3).Value
Info_Margot = "Margot " & Tickets_Margot & " tickets, " & CP_Margot & " CP"
If CP_Margot > 0 Then
    With Sheets("Margot")
        Date_CP = ""
        For Ligne = Ligne_CP_Debut To Ligne_CP_Fin
            If .Cells(Ligne, Colonne_CP_Debut).Value <> "" Then
                If Format(.Cells(Ligne, Colonne_CP_Debut).Value, "m") = Format(Date, "m") Then
                    If Date_CP = "" Then
                        Date_CP = " Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    Else
                        Date_CP = Date_CP & " et Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    End If
                End If
            End If
        Next
    End With
    Info_Margot = Info_Margot & "<font color=""red"">" & Date_CP & "</font>"
End If

'___________________________________________________________________________________________Nathan___________________________________________________________________________________________
Tickets_Nathan = Feuil1.Cells(Ligne_MoisRecap, 8).Value
CP_Nathan = Feuil1.Cells(Ligne_MoisRecap, 7).Value
Info_Nathan = "Nathan " & Tickets_Nathan & " tickets, " & CP_Nathan & " CP"
If CP_Nathan > 0 Then
    With Sheets("Nathan")
        Date_CP = ""
        For Ligne = Ligne_CP_Debut To Ligne_CP_Fin
            If .Cells(Ligne, Colonne_CP_Debut).Value <> "" Then
                If Format(.Cells(Ligne, Colonne_CP_Debut).Value, "m") = Format(Date, "m") Then
                    If Date_CP = "" Then
                        Date_CP = " Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    Else
                        Date_CP = Date_CP & " et Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    End If
                End If
            End If
        Next
    End With
    Info_Nathan = Info_Nathan & "<font color=""red"">" & Date_CP & "</font>"
End If

'___________________________________________________________________________________________Miguel___________________________________________________________________________________________
Tickets_Miguel = Feuil1.Cells(Ligne_MoisRecap, 12).Value
CP_Miguel = Feuil1.Cells(Ligne_MoisRecap, 11).Value
Info_Miguel = "Miguel " & Tickets_Miguel & " tickets, " & CP_Miguel & " CP"
If CP_Miguel > 0 Then
    With Sheets("Miguel")
        Date_CP = ""
        For Ligne = Ligne_CP_Debut To Ligne_CP_Fin
            If .Cells(Ligne, Colonne_CP_Debut).Value <> "" Then
                If Format(.Cells(Ligne, Colonne_CP_Debut).Value, "m") = Format(Date, "m") Then
                    If Date_CP = "" Then
                        Date_CP = " Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    Else
                        Date_CP = Date_CP & " et Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    End If
                End If
            End If
        Next
    End With
    Info_Miguel = Info_Miguel & "<font color=""red"">" & Date_CP & "</font>"
End If

'___________________________________________________________________________________________Jessica___________________________________________________________________________________________
Tickets_Jessica = Feuil1.Cells(Ligne_MoisRecap, 16).Value
CP_Jessica = Feuil1.Cells(Ligne_MoisRecap, 15).Value
Info_Jessica = "Jessica " & Tickets_Jessica & " tickets, " & CP_Jessica & " CP"
If CP_Jessica > 0 Then
    With Sheets("Jessica")
        Date_CP = ""
        For Ligne = Ligne_CP_Debut To Ligne_CP_Fin
            If .Cells(Ligne, Colonne_CP_Debut).Value <> "" Then
                If Format(.Cells(Ligne, Colonne_CP_Debut).Value, "m") = Format(Date, "m") Then
                    If Date_CP = "" Then
                        Date_CP = " Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    Else
                        Date_CP = Date_CP & " et Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    End If
                End If
            End If
        Next
    End With
    Info_Jessica = Info_Jessica & "<font color=""red"">" & Date_CP & "</font>"
End If

'___________________________________________________________________________________________Gregory___________________________________________________________________________________________
Tickets_Gregory = Feuil1.Cells(Ligne_MoisRecap, 20).Value
CP_Gregory = Feuil1.Cells(Ligne_MoisRecap, 19).Value
Info_Gregory = "Gregory " & Tickets_Gregory & " tickets, " & CP_Gregory & " CP"
If CP_Gregory > 0 Then
    With Sheets("Gregory")
        Date_CP = ""
        For Ligne = Ligne_CP_Debut To Ligne_CP_Fin
            If .Cells(Ligne, Colonne_CP_Debut).Value <> "" Then
                If Format(.Cells(Ligne, Colonne_CP_Debut).Value, "m") = Format(Date, "m") Then
                    If Date_CP = "" Then
                        Date_CP = " Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    Else
                        Date_CP = Date_CP & " et Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    End If
                End If
            End If
        Next
    End With
    Info_Gregory = Info_Gregory & "<font color=""red"">" & Date_CP & "</font>"
End If

'___________________________________________________________________________________________Elea___________________________________________________________________________________________
Tickets_Elea = Feuil1.Cells(16 + Ligne_MoisRecap, 4).Value
CP_Elea = Feuil1.Cells(16 + Ligne_MoisRecap, 3).Value
Info_Elea = "Elea " & Tickets_Elea & " tickets, " & CP_Elea & " CP"
If CP_Elea > 0 Then
    With Sheets("Elea")
        Date_CP = ""
        For Ligne = Ligne_CP_Debut To Ligne_CP_Fin
            If .Cells(Ligne, Colonne_CP_Debut).Value <> "" Then
                If Format(.Cells(Ligne, Colonne_CP_Debut).Value, "m") = Format(Date, "m") Then
                    If Date_CP = "" Then
                        Date_CP = " Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    Else
                        Date_CP = Date_CP & " et Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    End If
                End If
            End If
        Next
    End With
    Info_Elea = Info_Elea & "<font color=""red"">" & Date_CP & "</font>"
End If

'___________________________________________________________________________________________Lorraine___________________________________________________________________________________________
Tickets_Lorraine = Feuil1.Cells(16 + Ligne_MoisRecap, 8).Value
CP_Lorraine = Feuil1.Cells(16 + Ligne_MoisRecap, 7).Value
Info_Lorraine = "Lorraine " & Tickets_Lorraine & " tickets, " & CP_Lorraine & " CP"
If CP_Lorraine > 0 Then
    With Sheets("Lorraine")
        Date_CP = ""
        For Ligne = Ligne_CP_Debut To Ligne_CP_Fin
            If .Cells(Ligne, Colonne_CP_Debut).Value <> "" Then
                If Format(.Cells(Ligne, Colonne_CP_Debut).Value, "m") = Format(Date, "m") Then
                    If Date_CP = "" Then
                        Date_CP = " Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    Else
                        Date_CP = Date_CP & " et Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    End If
                End If
            End If
        Next
    End With
    Info_Lorraine = Info_Lorraine & "<font color=""red"">" & Date_CP & "</font>"
End If

'___________________________________________________________________________________________Alexandre___________________________________________________________________________________________
Tickets_Alexandre = Feuil1.Cells(16 + Ligne_MoisRecap, 12).Value
CP_Alexandre = Feuil1.Cells(16 + Ligne_MoisRecap, 11).Value
Info_Alexandre = "Alexandre " & Tickets_Alexandre & " tickets, " & CP_Alexandre & " CP"
If CP_Alexandre > 0 Then
    With Sheets("Alexandre")
        Date_CP = ""
        For Ligne = Ligne_CP_Debut To Ligne_CP_Fin
            If .Cells(Ligne, Colonne_CP_Debut).Value <> "" Then
                If Format(.Cells(Ligne, Colonne_CP_Debut).Value, "m") = Format(Date, "m") Then
                    If Date_CP = "" Then
                        Date_CP = " Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    Else
                        Date_CP = Date_CP & " et Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    End If
                End If
            End If
        Next
    End With
    Info_Alexandre = Info_Alexandre & "<font color=""red"">" & Date_CP & "</font>"
End If

'___________________________________________________________________________________________Tristan___________________________________________________________________________________________
Tickets_Tristan = Feuil1.Cells(16 + Ligne_MoisRecap, 16).Value
CP_Tristan = Feuil1.Cells(16 + Ligne_MoisRecap, 15).Value
Info_Tristan = "Tristan " & Tickets_Tristan & " tickets, " & CP_Tristan & " CP"
If CP_Tristan > 0 Then
    With Sheets("Tristan")
        Date_CP = ""
        For Ligne = Ligne_CP_Debut To Ligne_CP_Fin
            If .Cells(Ligne, Colonne_CP_Debut).Value <> "" Then
                If Format(.Cells(Ligne, Colonne_CP_Debut).Value, "m") = Format(Date, "m") Then
                    If Date_CP = "" Then
                        Date_CP = " Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    Else
                        Date_CP = Date_CP & " et Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    End If
                End If
            End If
        Next
    End With
    Info_Tristan = Info_Tristan & "<font color=""red"">" & Date_CP & "</font>"
End If

'___________________________________________________________________________________________Valentin___________________________________________________________________________________________
Tickets_Valentin = Feuil1.Cells(16 + Ligne_MoisRecap, 20).Value
CP_Valentin = Feuil1.Cells(16 + Ligne_MoisRecap, 19).Value
Info_Valentin = "Valentin " & Tickets_Valentin & " tickets, " & CP_Valentin & " CP"
If CP_Valentin > 0 Then
    With Sheets("Valentin")
        Date_CP = ""
        For Ligne = Ligne_CP_Debut To Ligne_CP_Fin
            If .Cells(Ligne, Colonne_CP_Debut).Value <> "" Then
                If Format(.Cells(Ligne, Colonne_CP_Debut).Value, "m") = Format(Date, "m") Then
                    If Date_CP = "" Then
                        Date_CP = " Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    Else
                        Date_CP = Date_CP & " et Du " & .Cells(Ligne, Colonne_CP_Debut).Value & " Au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    End If
                End If
            End If
        Next
    End With
    Info_Valentin = Info_Valentin & "<font color=""red"">" & Date_CP & "</font>"
End If

M_Bilan_Mail
End Sub
  • la procedure "M_Bilan_Mail" pour creer le mail (qui est lancé a partir de la procedure "M_InfoMail")
Sub M_Bilan_Mail()
  Dim OutApp As Object, OutMail As Object
  Dim StrHTML As String, StrSignature As String
  On Error Resume Next
  On Error GoTo 0
  With Application
    .EnableEvents = False ' Désactiver les évènements
    .ScreenUpdating = False ' Désactiver le rafraichissement
  End With
  Set OutApp = CreateObject("Outlook.Application")
  Set OutMail = OutApp.CreateItem(olMailItem)
  With OutMail
    .BodyFormat = olFormatHTML
    .Display  ' Afficher le mail pour la signature (si insertion auto)
    .To = "Destinataire@fai.fr"
    .CC = "LaCopie@fai.fr"
    .BCC = "LaCopieCachee@fai.fr"
    .Subject = "Info : Paies " & Format(Date, "mmmm yyyy")
    StrHTML = "Bonjour Madame ***,<br><br>" _
                & "Voici ci-dessous les éléments pour les paies de " & Format(Date, "mmmm yyyy") & " :<br><br>" _
                & Info_Margot & "<br>" _
                & Info_Nathan & "<br>" _
                & Info_Miguel & "<br>" _
                & Info_Jessica & "<br>" _
                & Info_Gregory & "<br>" _
                & Info_Elea & "<br>" _
                & Info_Lorraine & "<br>" _
                & Info_Alexandre & "<br>" _
                & Info_Tristan & "<br>" _
                & Info_Valentin & "<br><br>" _
                & "Nous restons à votre disposition si besoin.<br><br>" _
                & "Bonne journée à vous.<br><br>"
    StrSignature = "Bien cordialement,"
    .HTMLBody = StrHTML & StrSignature & .HTMLBody
'    .Attachments.Add Piece_jointe
    .Display 'Save pour brouillon et Send => Pour envoi direct
  End With
  With Application
    .EnableEvents = True
    .ScreenUpdating = True
  End With
  Set OutMail = Nothing: Set OutApp = Nothing
End Sub

Le bouton que tu as sur ton fichier réel doit lancer la procedure "M_InfoMail" la procedure du mail se lancera une fois les donnees récupérées.

Merci pour ton retour, entre temps j'ai pu tout corriger avec le peu de connaissance que j'ai, en effet le bouton était pas sur la bonne macro. Certaines infos étaient mélangées entre les salariés, j'ai pu le corriger et ajouter Mohamed.

Je vais essayer d'ajuster les CP pour que quand il n'y en a qu'un afficher juste la date et pas "du **/**/*** au **/**/***" qui sont du coup identiques.

Si besoin je te renvoie un message !

Merci beaucoup pour tes retours ça m'a bien aidé

Alors j'ai réussis à le faire pour un salarié mais quand je modifie tous les codes des autres il me dit erreur de compilation etc.

Le premier code est celui modifié et le deuxième l'original

Tickets_Margot = Feuil1.Cells(Ligne_MoisRecap, 4).Value
CP_Margot = Feuil1.Cells(Ligne_MoisRecap, 3).Value
Info_Margot = "Margot " & Tickets_Margot & " tickets, " & CP_Margot & " CP"
If CP_Margot > 0 Then
    With Sheets("Margot")
        Date_CP = ""
        For Ligne = Ligne_CP_Debut To Ligne_CP_Fin
            If .Cells(Ligne, Colonne_CP_Debut).Value <> "" Then
                If Format(.Cells(Ligne, Colonne_CP_Debut).Value, "m") = Format(Date, "m") Then
                    Dim DateDebut As String
                    Dim DateFin As String
                    DateDebut = .Cells(Ligne, Colonne_CP_Debut).Value
                    DateFin = .Cells(Ligne, Colonne_CP_Fin).Value
                    If Date_CP = "" Then
                        If DateDebut = DateFin Then
                            Date_CP = " le " & DateDebut
                        Else
                            Date_CP = " du " & DateDebut & " au " & DateFin
                        End If
                    Else
                        If DateDebut = DateFin Then
                            Date_CP = Date_CP & " et le " & DateDebut
                        Else
                            Date_CP = Date_CP & " et du " & DateDebut & " au " & DateFin
                        End If
                    End If
                End If
            End If
        Next
    End With
    Info_Margot = Info_Margot & "<font color=""black"">" & Date_CP & "</font>"
End If
'___________________________________________________________________________________________Nathan___________________________________________________________________________________________
Tickets_Nathan = Feuil1.Cells(Ligne_MoisRecap, 8).Value
CP_Nathan = Feuil1.Cells(Ligne_MoisRecap, 7).Value
Info_Nathan = "Nathan " & Tickets_Nathan & " tickets, " & CP_Nathan & " CP"
If CP_Nathan > 0 Then
    With Sheets("Nathan")
        Date_CP = ""
        For Ligne = Ligne_CP_Debut To Ligne_CP_Fin
            If .Cells(Ligne, Colonne_CP_Debut).Value <> "" Then
                If Format(.Cells(Ligne, Colonne_CP_Debut).Value, "m") = Format(Date, "m") Then
                    If Date_CP = "" Then
                        Date_CP = " du " & .Cells(Ligne, Colonne_CP_Debut).Value & " au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    Else
                        Date_CP = Date_CP & " et du " & .Cells(Ligne, Colonne_CP_Debut).Value & " au " & .Cells(Ligne, Colonne_CP_Fin).Value
                    End If
                End If
            End If
        Next
    End With
    Info_Nathan = Info_Nathan & "<font color=""black"">" & Date_CP & "</font>"
End If

Ce que tu as mis me semble correct mais il faut garder la meme logique et déclarer les variables en haut du module DateDebut et DateFin "Public", ce qui donne :

Public DateDebut As String, DateFin As String

Pour la partie des salariés, il faut :

'___________________________________________________________________________________________Margot___________________________________________________________________________________________
Tickets_Margot = Feuil1.Cells(Ligne_MoisRecap, 4).Value
CP_Margot = Feuil1.Cells(Ligne_MoisRecap, 3).Value
Info_Margot = "Margot " & Tickets_Margot & " tickets, " & CP_Margot & " CP"
If CP_Margot > 0 Then
    With Sheets("Margot")
        Date_CP = ""
        For Ligne = Ligne_CP_Debut To Ligne_CP_Fin
            If .Cells(Ligne, Colonne_CP_Debut).Value <> "" Then
                If Format(.Cells(Ligne, Colonne_CP_Debut).Value, "m") = Format(Date, "m") Then
                    DateDebut = .Cells(Ligne, Colonne_CP_Debut).Value
                    DateFin = .Cells(Ligne, Colonne_CP_Fin).Value
                    If Date_CP = "" Then
                        If DateDebut = DateFin Then
                            Date_CP = " le " & DateDebut
                        Else
                            Date_CP = " du " & DateDebut & " au " & DateFin
                        End If
                    Else
                        If DateDebut = DateFin Then
                            Date_CP = Date_CP & " et le " & DateDebut
                        Else
                            Date_CP = Date_CP & " et du " & DateDebut & " au " & DateFin
                        End If
                    End If
                End If
            End If
        Next
    End With
    Info_Margot = Info_Margot & Date_CP
End If

et pour la partie Info_salarié, tu peux supprimer la couleur que tu as changé de red a black

Info_Margot = Info_Margot & Date_CP

'Ctrl + H
'===> remplacer : "<font color=""black"">" & Date_CP & "</font>"
'Par
'===> Date_CP 

Il te reste a modifier ces lignes (sur chaque salariés) :

image

Par :

                    DateDebut = .Cells(Ligne, Colonne_CP_Debut).Value
                    DateFin = .Cells(Ligne, Colonne_CP_Fin).Value
                    If Date_CP = "" Then
                        If DateDebut = DateFin Then
                            Date_CP = " le " & DateDebut
                        Else
                            Date_CP = " du " & DateDebut & " au " & DateFin
                        End If
                    Else
                        If DateDebut = DateFin Then
                            Date_CP = Date_CP & " et le " & DateDebut
                        Else
                            Date_CP = Date_CP & " et du " & DateDebut & " au " & DateFin
                        End If
                    End If

Resultat :

image

Tout fonctionne !

Normalement le fichier est finalisé, merci beaucoup de m'avoir aidé !!!

Bonne après-midi à toi !

Rechercher des sujets similaires à "mail automatique recherche elements"