Démasquage sous conditions lors de l'impression

Ça commence bien dis donc ! Désolé, tout est codé sans test donc il va peut-être y avoir quelques déconvenues jusqu'au magnifique résultat final.

Peux-tu essayer avec

Unload Me

C'est ce qu'il y a déja et qui ne fonctionne pas non ?

'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

C'est ce qu'il y a déja et qui ne fonctionne pas non ?

'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

Je l'ai mis sur mon précédent commentaire :

Unload Me 'à la place de Unload.Me

Je l'ai mis sur mon précédent commentaire :

Unload Me 'à la place de Unload.Me

Ok ca lance bien le message pour le temps partiel mais quand je réponds Oui ou Non

voici message

capture
with Application.FileDialog(msoFileDialogFolderPicker)
    .show 'affiche

Nouvelle erreur suite modif

capture

Encore une faute de syntaxe :

Dossier = .SelectedItems(1)

Message erreur

capture

Attention, je souhaite que les feuilles ne génère pas de PDF avec une seule feuille mais toutes les feuilles ainsi sélectionnée crée un seul pdf

Ex: Case 0 Les feuilles Renseignements salariés + Feuille Calcul indemnité doivent faire un seul PDF que nous appellerons comme l'on souhaite et que l'on mettra ou l'on souhaite

Alors, je n'avais pas compris ça. Peux-tu essayer comme ça ? Je ne suis pas certain du résultat...

'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 = true 'affiche
    if .selecteditems.count > 0 then 'si dossier selectionné
        Dossier = .selected.items(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 = Userform1.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(fselection).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
capture

Je ne vois pas d'ou peut venir l'erreur

Est ce le nom de l'userform ou de la combo qui poserait souci ?

En effet, j'ai renommé userform1 en Génération

Cependant une nouvelle erreur apparait

capture

Je pense oui ! J'avance dans l'ombre de mon côté donc je ne connais pas les noms des objets et ne peux encore moins tester...

En tout cas, il faut remplacer la ligne exportasfixedformat par ces 2 lignes (devrait marcher sur windows) :

worksheets(fselection).Select
Activesheet.exportasfixedformat type:=xltypePDF, filename:=chemin, ignoreprintareas:=false 'export pdf

Je pense oui ! J'avance dans l'ombre de mon côté donc je ne connais pas les noms des objets et ne peux encore moins tester...

En tout cas, il faut remplacer la ligne exportasfixedformat par ces 2 lignes (devrait marcher sur windows) :

worksheets(fselection).Select
Activesheet.exportasfixedformat type:=xltypePDF, filename:=chemin, ignoreprintareas:=false 'export pdf

Apparemment non

capture

En cas d'erreur, peux-tu me dire quel est le message ?

Peux-tu essayer en remplacer chaque fselection de la macro EditionPDF par fselected (y compris l'argument).

J'ai remplacé fselection de la sub editionPDF par fselected. Plus aucun Fselection sur ce code et ce message d'erreur

capture

Faut il aussi que je le change ailleurs ?

Tu as renommé correctement les feuilles ?

Oui je pense

capture

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

Feuille calcule Indemnités ! (cas 1)

J'ai insisté à plusieurs reprises sur les noms de feuilles et tu n'as même pas correctement contrôlé.

Il faut choisir des noms simples et pas mettre le dictionnaire sur chaque nom d'onglet : Indemnités, Infos, DSN, CP, Courriers...

C'est votre fichier donc c'est sera simple à mémoriser. Ainsi, tu fais les modifs aux endroits appropriés dans le code également et il devrait y avoir moins de risque d'erreurs.

Rechercher des sujets similaires à "demasquage conditions lors impression"