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$)