Démasquage sous conditions lors de l'impression

Oui c'est cela exactement. Toutes mes excuses.

Par contre, le PDF prend automatiquement le nom de la sélection. Ce que je souhaiterais, c'est que nous puissions le renommer comme on le souhaite.

Donc déjà, ça marche ?

Honnêtement, je suis un peu agacé parce que je ne me sens absolument pas gratifié. Tu déroules ta demande comme si c'était normal pour toi mais je ne suis pas subventionné par l'état pour t'aider.

Enfin bref, pour le nom, il te faudra une inputbox.

Excuses moi ce n'était pas mon intention. En fait, je déroule mon projet au fil de l'eau pour éviter de t'embrouiller dans mes explications comme tu le fais à l'aveugle. Je serais vraiment ingrat de le faire de la sorte. Aprés cela il me reste deux trois petites choses à faire mais comme c'est lier, j'allais faire un autre post ensuite

Sincèrement désolé si je t'ai blessé, ce n'était pas mon intention. Préfères tu que je te déroule mon projet final pour lier tout cela ensemble ?

En tout cas merci et encore merci

Pour faire simple, voici les chose que je souhaitais faire ensuite en dehors de créer un fichier pdf pour plusieurs feuilles selon case sélectionnée

- avec le choix Case 0, je souhaitais y annexer l'envoi du fichier par mail avec le code ci-dessous qui était dans un autre post :

Option Explicit

Sub ChoixMultiFichiers_EnvoiMail_Simu()
    Dim Fichiers As Variant
    Dim i As Integer
    Dim Ol As Outlook.Application
    Dim olMail As MailItem
    Dim SigString As String
    Dim Signature As String

    'Affiche la boîte dialogue "Ouvrir"
    '(C'est l'argument True qui autorise la multisélection)
    Fichiers = Application.GetOpenFilename("Tous les fichiers (*.*),*.*", , , , True)

   Set Ol = New Outlook.Application
   Set olMail = Ol.CreateItem(olMailItem)

'Change only Mysig.htm to the name of your signature
SigString = Environ("appdata") & "\Microsoft\Signatures\travail.htm"

If Dir(SigString) <> "" Then
    Signature = GetBoiler(SigString)
Else
    Signature = ""
End If

    With olMail
        .To = Range("AA1")
        .CC = Range("AB1")
        .Subject = "Calcul Indemnité de départ " & Range("B9") & " à valider"
        .HTMLBody = "<html><body>Bonjour,</body></html><br>" & _
            "<html><body>Ci-joint la simulation de départ demandée pour validation</body></html><br>" & _
            "<html><body>Est-il possible de la faire parvenir ensuite au service RH de la société concernée ?</body></html><br>" & _
            "<html><body>Bonne réception</body></html><br>" & "<html><body>Cordialement</body></html>" & _
             "<br>" & Signature & .HTMLBody             'le corps du mail ..son contenu

        'Boucle sur le tableau pour récupérer le nom du ou des classeurs sélectionnées.
        '(IsArray(Fichiers) renvoie False si aucun fichier n'a été sélectionné).
        If IsArray(Fichiers) Then
            For i = 1 To UBound(Fichiers)
                .Attachments.Add Fichiers(i)
            Next
        End If

        .Display
    End With
End Sub

Function GetBoiler(ByVal sFile As String) As String
'Dick Kusleika
    Dim fso As Object
    Dim ts As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
    GetBoiler = ts.readall
    ts.Close
End Function

- avec le choix Case 1 Dossier Complet, je souhaitais adjoindre un envoi par mail mais sous conditions que voici :

- si la cellule D18 de la feuille Salariés est = "Licenciement Faute Grave", "Licenciement Autres", "Retraite", "Rupture Conventionnelle" et que la cellule E74 de la feuille Courriers est > à 15 000 alors envoi systématique du mail via code ci-dessous. Dans la négative, le mail ne sera pas envoyé.

Option Explicit

Sub ChoixMultiFichiers_EnvoiMail_ValidSTC()
    Dim Fichiers As Variant
    Dim i As Integer
    Dim Ol As Outlook.Application
    Dim olMail As MailItem
    Dim SigString As String
    Dim Signature As String

    'Affiche la boîte dialogue "Ouvrir"
    '(C'est l'argument True qui autorise la multisélection)
    Fichiers = Application.GetOpenFilename("Tous les fichiers (*.*),*.*", , , , True)

   Set Ol = New Outlook.Application
   Set olMail = Ol.CreateItem(olMailItem)

'Change only Mysig.htm to the name of your signature
SigString = Environ("appdata") & "\Microsoft\Signatures\travail.htm"

If Dir(SigString) <> "" Then
    Signature = GetBoiler(SigString)
Else
    Signature = ""
End If

    With olMail
        .To = Range("AA1")
        .CC = Range("AB1")
        .Subject = "Solde de Tout compte " & Range("B9") & " à valider"
        .HTMLBody = "<html><body>Bonjour,</body></html><br>" & _
            "<html><body>Ci-joint dossier Solde de Tout Compte pour validation</body></html><br>" & _
            "<html><body>Est-il possible de m'informer de sa validation pour envoi courrier au salarié ?</body></html><br>" & _
            "<html><body>Bonne réception</body></html><br>" & "<html><body>Cordialement</body></html>" & _
             "<br>" & Signature & .HTMLBody             'le corps du mail ..son contenu

        'Boucle sur le tableau pour récupérer le nom du ou des classeurs sélectionnées.
        '(IsArray(Fichiers) renvoie False si aucun fichier n'a été sélectionné).
        If IsArray(Fichiers) Then
            For i = 1 To UBound(Fichiers)
                .Attachments.Add Fichiers(i)
            Next
        End If

        .Display
    End With
End Sub

Function GetBoiler(ByVal sFile As String) As String
'Dick Kusleika
    Dim fso As Object
    Dim ts As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
    GetBoiler = ts.readall
    ts.Close
End Function

Et c'était terminé pour ce sujet

Encore désolé

Oui, mais honnêtement, je n'ai plus envie de m'investir.

Je vous donne les pistes pour que vous terminiez mais c'est fini pour moi.

Option Explicit

Sub EnvoiMail(PJ as string)
    Dim Fichiers As Variant
    Dim i As Integer
    Dim Ol As Outlook.Application
    Dim olMail As MailItem
    Dim SigString As String
    Dim Signature As String

   Set Ol = New Outlook.Application
   Set olMail = Ol.CreateItem(olMailItem)

'Change only Mysig.htm to the name of your signature
SigString = Environ("appdata") & "\Microsoft\Signatures\travail.htm"

If Dir(SigString) <> "" Then
    Signature = GetBoiler(SigString)
Else
    Signature = ""
End If

    With olMail
        .To = Range("AA1")
        .CC = Range("AB1")
        .Subject = "Calcul Indemnité de départ " & Range("B9") & " à valider"
        .HTMLBody = "<html><body>Bonjour,</body></html><br>" & _
            "<html><body>Ci-joint la simulation de départ demandée pour validation</body></html><br>" & _
            "<html><body>Est-il possible de la faire parvenir ensuite au service RH de la société concernée ?</body></html><br>" & _
            "<html><body>Bonne réception</body></html><br>" & "<html><body>Cordialement</body></html>" & _
             "<br>" & Signature & .HTMLBody             'le corps du mail ..son contenu
        .Attachments.Add PJ
        .Display
    End With
End Sub

Function GetBoiler(ByVal sFile As String) As String
'Dick Kusleika
    Dim fso As Object
    Dim ts As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
    GetBoiler = ts.readall
    ts.Close
End Function

Appelée par macro EditionPDF ainsi :

Call EnvoiMail(Chemin)

Le but étant de factoriser le code afin de ne pas écrire un code pour chaque cas.

A vous de fixer les conditions d'envoi (en nommant vos cellules D18 et E74) avant l'exécution.

Et pour le nom dans édition PDF

Nom = Inputbox("Nom du fichier :")
If Nom = "" then Nom = "Nompardefaut"
'Nom = Nom & ".pdf" à activer le cas échéant

Voilà, bon courage pour la suite.

Bonjour

J'ai beau essayé tout ce que vous me dites, je suis bloqué

Pourriez vous m'aider svp ?

Bonjour FMAILYS,

Qu'est-ce que vous essayer qui ne marche pas ?

Bonjour

Je viens de réussir la partie enregistrement sous le nom que je souhaitais grâce à vos pistes

Sub EditionPDF(fselection, TempsPartiel As Boolean)

Dim ws As Worksheet
Dim Dossier$, Nom$, chemin$

'OUVRE BOITE DE DIALOGUE DE SELECTION DOSSIER
With Application.FileDialog(msoFileDialogFolderPicker)
    .Show 'affiche
    If .SelectedItems.Count > 0 Then 'si dossier selectionné
       Dossier = .SelectedItems(1) 'Dossier a pour valeur le répertoire
   Else
      MsgBox "Procédure annulée, aucun dossier sélectionné"

      Exit Sub 'sinon, sortie procédure

    End If
End With

Nom = Génération.ComboBox1.Value

'EDITION PDF
If TempsPartiel Then 'si temps partiel (issu du choix effectué en amont) vrai
    Sheets("Indemnités").Range("Partiel").EntireRow.Hidden = False 'affiche les lignes de "Indemnités"
End If
Nom = InputBox("Nom du fichier :")
If Nom = "" Then Nom = "Nompardefaut"
'Nom = Nom & ".pdf" à activer le cas échéant
chemin = Dossier & "\" & Nom & ".pdf" 'chemin = dossier & "nom de opération sur liste".pdf >>> A AMELIORER (VARIABILISER DATE OU NOMS)
Worksheets(fselection).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin, ignoreprintareas:=False 'export pdf
Sheets("Indemnités").Range("Partiel").EntireRow.Hidden = True 'affiche les lignes de "Indemnités"
Sheets("salariés").Select
Range("A6").Select

MsgBox "Edition des fichiers terminée !"

End Sub

Ce que je n'arrive pas à faire c'est rattacher mon code d'envoi mail selon les conditions que j'avais énoncé

Merci

Bonjour,

Je n'ai pas votre code à jour donc j'ai repris la dernière version que j'avais. Il faudra peut-être y faire à nouveau les modifications nécessaires déjà effectuées auparavant.

'CODE A PLACER AU SEIN DU MODULE DU FORMULAIRE
Private Sub CommandButton1_Click()

Dim Choix%, ReponseIndem%, ReponseTP%
Dim fselection()
Dim TpsPart As Boolean
Dim Motif$

Choix = ComboBox1.ListIndex 'renvoie le choix sélectionné

'DEFINIT LES FEUILLES A IMPRIMER SELON LE CHOIX SELECTIONNE DANS USERFORM
Select Case Choix
'CHOIX INDEMNITE
    Case 0
        fselection = Array("Feuille calcul indemnités", "renseignements salariés") 'FEUILLES A IMPRIMER (A ADAPTER!)
        ReponseTP = MsgBox("Le salarié avait-il une période à temps partiel ?", vbYesNo, "Temps partiel") 'msg temps partiel
        Select Case ReponseTP
            Case vbNo: TpsPart = False 'si reponse non, variable TpsPart = faux
            Case vbYes: TpsPart = True 'si reponse oui, TpsPart = vrai
            Case Else: MsgBox "Procédure annulée !", , "Annulation": Exit Sub 'sinon, sortie procedure
        End Select
'CHOIX DOSSIER COMPLET
    Case 1
        ReponseIndem = MsgBox("AVEZ-VOUS CALCULE UNE INDEMNITE ?", vbYesNo, "Indemnités") 'msg indemnités
        Select Case ReponseIndem
            Case vbNo: fselection = Array("Renseignements salarié", "CONTROLE DSN FIN CONTRAT", "Calcul CP", "Courriers Salariés") 'A ADAPTER (ici, sans "Indemnités" !!!) 'si non, feuilles sans "Indemn"
            Case vbYes
                fselection = Array("Renseignements salarié", "Feuille calcule Indemnités", "CONTROLE DSN FIN CONTRAT", "Calcul CP", "Courriers Salariés") 'si oui, feuilles avec "Indemn" PUIS :
                ReponseTP = MsgBox("Le salarié avait-il une période à temps partiel ?", vbYesNo, "Temps partiel") 'msg TP
                Select Case ReponseTP
                    Case vbNo: TpsPart = False 'voir cas 0
                    Case vbYes: TpsPart = True
                    Case Else: MsgBox "Procédure annulée !", , "Annulation": Exit Sub
                End Select
            Case Else: MsgBox "Procédure annulée !", , "Annulation": Exit Sub
        End Select
'CHOIX COURRIERS STC
    Case 2
        fselection = Array("Courriers Salariés") 'feuille à imprimer
'LISTE LAISSEE VIDE
    Case Else
        MsgBox "Procédure annulée, aucune donnée n'est renseignée!", vbCritical, "Erreur de sélection"
        Exit Sub 'sortie procédure
End Select

'EXECUTION DE LA MACRO EditionPDF (qui dépend du choix temps partiel)
Call EditionPDF(fselection, TpsPart) 'exécution EditionPDF (en fonction de fselection et de TpsPart)

'----------------LIGNES AJOUTEES------------------------
'-------------------------------------------------------
'-------------------------------------------------------
'ENVOI DU MAIL SOUS CONDITIONS
if Choix = 0 then Call EnvoiMail(chemin) 'envoi mail sans condition si choix 0

If Choix = 1 then 'si choix 1
    Motif = join(Array("Licenciement Faute Grave", "Licenciement Autres", "Retraite", "Rupture Conventionnelle"))
    if instr(Motif,Sheets("Salariés").Range("D18").value) > 0 and sheets("Courriers").range("E74").value > 15000 then
'si la cellule D18 de la feuille Salariés est = "Licenciement Faute Grave", "Licenciement Autres", "Retraite", "Rupture Conventionnelle" et que la cellule E74 de la feuille Courriers est > à 15 000
        Call EnvoiMail(chemin) 'alors envoi systématique du mail via code ci-dessous    
    end if
end if
'-------------------------------------------------------
'-------------------------------------------------------
'-------------------------------------------------------

'MSG POUR CONTINUER SUR UF OU FERMER
If Not MsgBox("Voulez-vous poursuivre avec le formulaire ?", vbYesNo, "Demande de confirmation") = vbYes Then 'si continuer non, on ferme
    Unload Me
    Exit Sub
End If

ComboBox1.ListIndex = -1 'si continuer oui, on définit la liste sur valeur vide

End Sub

C'est un premier essai et j'ai peut-être négligée certaines conditions. En tout cas, pour rendre le code effectif, il faut aller sur le module de la macro EditionPDF et ajouter en début de module la variable chemin$ comme ça :

Public chemin$

Il faut par conséquent la retirer du code EditionPDF :

Dim Dossier$, Nom$ 'au lieu de : Dim Dossier$, Nom$, chemin$

Cdlt,

Ok je commence à comprendre

J'ai mis à la fin du code EditionPDF

Call ChoixMultiFichiers_EnvoiMail_Simu 'nom du code pour envoi par mail

Et ca fonctionne.

Pour les conditions, il faut que j'utilise les fonctions IF Then c'est cà ?

Si je mets cà

If Range("D18") = "Licenciement Faute Grave" Or Range("D18") = "Licenciement Autres" Or Range("D18") = "Retraite" Or Range("D18") = "Rupture Conventionnelle" Or Sheets("Courriers").Range("E74") >= 15000 Then
Call ChoixMultiFichiers_EnvoiMail_Simu

Ca ne marche pas. De plus, cette règle ne vaut que si Case 1 sélectionnée

Oui, les conditions passent en général par If...Elseif (falcultatif)...Else(facultatif)....End if. Et quand les conditions deviennent trop nombreuses, si c'est possible, on préférera un Select case.

En tout cas, tant mieux si ça marche.

Il faut mettre :

If (Range("D18") = "Licenciement Faute Grave" Or Range("D18") = "Licenciement Autres" Or Range("D18") = "Retraite" Or Range("D18") = "Rupture Conventionnelle") And Sheets("Courriers").Range("E74") >= 15000 Then

Car c'est d'abord un OU (l'une des 4 feuilles) et un ET (>15000). Avec de préférence la .value après chaque range. L'équivalent de :

Motif = join(Array("Licenciement Faute Grave", "Licenciement Autres", "Retraite", "Rupture Conventionnelle"))
if instr(Motif,Sheets("Salariés").Range("D18").value) > 0 and sheets("Courriers").range("E74").value > 15000 then

Ok merci

Maintenant me reste plus qu'à lier ces conditions uniquement si on sélectionne Case 1

Non mais je vous ai répondu avec ces conditions déjà placées, mais après l'édition du PDF cependant (pour capter la PJ).

EDIT : Mais avec ma solution, il ne faut pas mettre Call EnvoiMail à la fois dans EditionPDF et dans CommandButton

Désolé je ne comprends pas votre dernier message

Ok il est bien uniquement dans aprés edition pdf et pas dans command button

Mons souci est de bien distinguer les deux car si sélect case O alors envoimail validation sinon envoi mail simul

voici le code que j'ai aprés rajout

'CODE A METTRE DANS UN MODULE NORMAL
Sub EditionPDF(fselection, TempsPartiel As Boolean)

Dim ws As Worksheet
Dim Dossier$, Nom$, chemin$

'OUVRE BOITE DE DIALOGUE DE SELECTION DOSSIER
With Application.FileDialog(msoFileDialogFolderPicker)
    .Show 'affiche
    If .SelectedItems.Count > 0 Then 'si dossier selectionné
       Dossier = .SelectedItems(1) 'Dossier a pour valeur le répertoire
   Else
      MsgBox "Procédure annulée, aucun dossier sélectionné"

      Exit Sub 'sinon, sortie procédure

    End If
End With

Nom = Génération.ComboBox1.Value

'EDITION PDF
If TempsPartiel Then 'si temps partiel (issu du choix effectué en amont) vrai
    Sheets("Indemnités").Range("Partiel").EntireRow.Hidden = False 'affiche les lignes de "Indemnités"
End If
Nom = InputBox("Sous quel nom souhaitez-vous enregistrer ce fichier ?")
If Nom = "" Then Nom = "Nompardefaut"
'Nom = Nom & ".pdf" à activer le cas échéant
chemin = Dossier & "\" & Nom & ".pdf" 'chemin = dossier & "nom de opération sur liste".pdf >>> A AMELIORER (VARIABILISER DATE OU NOMS)
Worksheets(fselection).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin, ignoreprintareas:=False 'export pdf
Sheets("Indemnités").Range("Partiel").EntireRow.Hidden = True 'affiche les lignes de "Indemnités"
Sheets("salariés").Select
Range("A6").Select

MsgBox "Edition des fichiers terminée !"

Motif = Join(Array("Licenciement Faute Grave", "Licenciement Autres", "Retraite", "Rupture Conventionnelle"))
If InStr(Motif, Sheets("Salariés").Range("D18").Value) > 0 And Sheets("Courriers").Range("E74").Value > 15000 Then Call ChoixMultiFichiers_EnvoiMail_Valid

End Sub

Maintenant ceci doit se faire en fonction du critère Sélection

Puis je mettre quelquepart If Select Case 1, Case 1 correspondant à ces conditions et envoi mail valid

Case 0 sans conditions mais envoi mail Simul

Ah vous avez 2 macros différentes pour les envois de mails ? En fait, moi j'ai fait ça :

'CODE A PLACER AU SEIN DU MODULE DU FORMULAIRE
Private Sub CommandButton1_Click() '<<<<< nom pas bon je crois

'.......début du code

'EXECUTION DE LA MACRO EditionPDF (qui dépend du choix temps partiel)
Call EditionPDF(fselection, TpsPart) 'exécution EditionPDF (en fonction de fselection et de TpsPart)

'----------------LIGNES AJOUTEES------------------------
'-------------------------------------------------------
'-------------------------------------------------------
'ENVOI DU MAIL SOUS CONDITIONS
if Choix = 0 then Call EnvoiMail(chemin) 'envoi mail sans condition si choix 0

If Choix = 1 then 'si choix 1
    Motif = join(Array("Licenciement Faute Grave", "Licenciement Autres", "Retraite", "Rupture Conventionnelle"))
    if instr(Motif,Sheets("Salariés").Range("D18").value) > 0 and sheets("Courriers").range("E74").value > 15000 then
'si la cellule D18 de la feuille Salariés est = "Licenciement Faute Grave", "Licenciement Autres", "Retraite", "Rupture Conventionnelle" et que la cellule E74 de la feuille Courriers est > à 15 000
        Call EnvoiMail(chemin) 'alors envoi systématique du mail via code ci-dessous    
    end if
end if
'-------------------------------------------------------
'-------------------------------------------------------
'-------------------------------------------------------

'.......fin du code

End Sub

Il ne vous reste plus qu'à décider quelle macro exécuter selon le choix effectué.

Vigilance toutefois : définir chemin comme une variable publique (voir ma 1ère réponse avec du code d'aujourd'hui).

Voilà j'ai corriger

'CODE A PLACER AU SEIN DU MODULE DU FORMULAIRE
Private Sub CommandButton1_Click()

Dim Choix%, ReponseIndem%, ReponseTP%
Dim fselection()
Dim TpsPart As Boolean
Dim Motif$

Choix = ComboBox1.ListIndex 'renvoie le choix sélectionné

'DEFINIT LES FEUILLES A IMPRIMER SELON LE CHOIX SELECTIONNE DANS USERFORM
Select Case Choix
'CHOIX INDEMNITE
    Case 0
        fselection = Array("Indemnités", "salariés") 'FEUILLES A IMPRIMER (A ADAPTER!)
        ReponseTP = MsgBox("Le salarié avait-il une période à temps partiel ?", vbYesNo, "Temps partiel") 'msg temps partiel
        Select Case ReponseTP
            Case vbNo: TpsPart = False 'si reponse non, variable TpsPart = faux
            Case vbYes: TpsPart = True 'si reponse oui, TpsPart = vrai
            Case Else: MsgBox "Procédure annulée !", , "Annulation": Exit Sub 'sinon, sortie procedure
        End Select
'CHOIX DOSSIER COMPLET
    Case 1
        ReponseIndem = MsgBox("AVEZ-VOUS CALCULE UNE INDEMNITE ?", vbYesNo, "Indemnités") 'msg indemnités
        Select Case ReponseIndem
            Case vbNo: fselection = Array("salariés", "DSN", "CP", "Courriers", "ES", "Asaisir") 'A ADAPTER (ici, sans "Indemnités" !!!) 'si non, feuilles sans "Indemn"
            Case vbYes
                fselection = Array("salariés", "Indemnités", "DSN", "CP", "Courriers", "ES", "Asaisir") 'si oui, feuilles avec "Indemn" PUIS :
                ReponseTP = MsgBox("Le salarié avait-il une période à temps partiel ?", vbYesNo, "Temps partiel") 'msg TP
                Select Case ReponseTP
                    Case vbNo: TpsPart = False 'voir cas 0
                    Case vbYes: TpsPart = True
                    Case Else: MsgBox "Procédure annulée !", , "Annulation": Exit Sub
                End Select
            Case Else: MsgBox "Procédure annulée !", , "Annulation": Exit Sub
        End Select
'CHOIX COURRIERS STC
    Case 2
        fselection = Array("Courriers Salariés") 'feuille à imprimer
'LISTE LAISSEE VIDE
    Case Else
        MsgBox "Procédure annulée, aucune donnée n'est renseignée!", vbCritical, "Erreur de sélection"
        Exit Sub 'sortie procédure
End Select

'EXECUTION DE LA MACRO EditionPDF (qui dépend du choix temps partiel)
Call EditionPDF(fselection, TpsPart) 'exécution EditionPDF (en fonction de fselection et de TpsPart)

'----------------LIGNES AJOUTEES------------------------
'-------------------------------------------------------
'-------------------------------------------------------
'ENVOI DU MAIL SOUS CONDITIONS
If Choix = 0 Then Call ChoixMultiFichiers_EnvoiMail_Simu   'envoi mail sans condition si choix 0

If Choix = 1 Then 'si choix 1
    Motif = Join(Array("Licenciement Faute Grave", "Licenciement Autres", "Retraite", "Rupture Conventionnelle"))
    If InStr(Motif, Sheets("Salariés").Range("D18").Value) > 0 And Sheets("Courriers").Range("E74").Value > 15000 Then
'si la cellule D18 de la feuille Salariés est = "Licenciement Faute Grave", "Licenciement Autres", "Retraite", "Rupture Conventionnelle" et que la cellule E74 de la feuille Courriers est > à 15 000
        Call ChoixMultiFichiers_EnvoiMail_ValidSTC 'alors envoi systématique du mail via code ci-dessous
    End If
End If
'-------------------------------------------------------
'-------------------------------------------------------
'-------------------------------------------------------

'MSG POUR CONTINUER SUR UF OU FERMER
If Not MsgBox("Voulez-vous poursuivre avec le formulaire ?", vbYesNo, "Demande de confirmation") = vbYes Then 'si continuer non, on ferme
    Unload Me
    Exit Sub
End If

ComboBox1.ListIndex = -1 'si continuer oui, on définit la liste sur valeur vide

End Sub

Cela donne ça.

Néanmoins, pour la sélection de la case 1, si D18 ne correspond à aucun des critères donnés, il ne devrait pas envoyer le mail.

ci-dessous Code EditionPDF

Public chemin$
'CODE A METTRE DANS UN MODULE NORMAL
Sub EditionPDF(fselection, TempsPartiel As Boolean)

Dim ws As Worksheet
Dim Dossier$, Nom$

'OUVRE BOITE DE DIALOGUE DE SELECTION DOSSIER
With Application.FileDialog(msoFileDialogFolderPicker)
    .Show 'affiche
    If .SelectedItems.Count > 0 Then 'si dossier selectionné
       Dossier = .SelectedItems(1) 'Dossier a pour valeur le répertoire
   Else
      MsgBox "Procédure annulée, aucun dossier sélectionné"

      Exit Sub 'sinon, sortie procédure

    End If
End With

Nom = Génération.ComboBox1.Value

'EDITION PDF
If TempsPartiel Then 'si temps partiel (issu du choix effectué en amont) vrai
    Sheets("Indemnités").Range("Partiel").EntireRow.Hidden = False 'affiche les lignes de "Indemnités"
End If
Nom = InputBox("Sous quel nom souhaitez-vous enregistrer ce fichier ?")
If Nom = "" Then Nom = "Nompardefaut"
'Nom = Nom & ".pdf" à activer le cas échéant
chemin = Dossier & "\" & Nom & ".pdf" 'chemin = dossier & "nom de opération sur liste".pdf >>> A AMELIORER (VARIABILISER DATE OU NOMS)
Worksheets(fselection).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin, ignoreprintareas:=False 'export pdf
Sheets("Indemnités").Range("Partiel").EntireRow.Hidden = True 'affiche les lignes de "Indemnités"
Sheets("salariés").Select
Range("A6").Select

MsgBox "Edition des fichiers terminée !"

End Sub

Ai je fait quelquechose de mal, je ne vois pas. Les conditions indiquées sont correctes

Oui, à moins qu'il existe des feuilles nommées "Licenciement" ou "Rupture", ça ne devrait pas envoyer le mail.

Alors, je propose dans un premier temps de modifier ainsi :

ListeMotifs = Join(Array("Licenciement Faute Grave", "Licenciement Autres", "Retraite", "Rupture Conventionnelle"))
Motif = Sheets("Salariés").Range("D18").Value
If Not Motif = "" and InStr(ListeMotifs, Motif) > 0 And Sheets("Courriers").Range("E74").Value > 15000 Then

Il faut rajouter la variable ListeMotifs$ au début de la macro (Dim ListeMotifs$, Motif$)

Rechercher des sujets similaires à "demasquage conditions lors impression"