Oui je pense
Voici les codes tels que je les ai dans mon fichier.
Dans le code du Combobox 1
'CODE A PLACER AU SEIN DU MODULE DU FORMULAIRE
Private Sub CommandButton1_Click()
Dim Choix%, ReponseIndem%, ReponseTP%
Dim fselection()
Dim TpsPart As Boolean
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)
'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
Dans le Module 4
'CODE A METTRE DANS UN MODULE NORMAL
Sub EditionPDF(fselected, 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("Feuille calcul Indemnités").Range("Partiel").EntireRow.Hidden = False 'affiche les lignes de "Indemnités"
End If
chemin = Dossier & "\" & Nom & ".pdf" 'chemin = dossier & "nom de opération sur liste".pdf >>> A AMELIORER (VARIABILISER DATE OU NOMS)
Worksheets(fselected).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin, ignoreprintareas:=False 'export pdf
Sheets("Feuille calcul Indemnités").Range("Partiel").EntireRow.Hidden = True 'affiche les lignes de "Indemnités"
MsgBox "Edition des fichiers terminée !"
End Sub