XL 2019 Vba

olivier1984

XLDnaute Junior
Bonsoir à tous les experts du forum.

Je n'arrive pas à résoudre le problème d'erreur "valeur" sur une formule dans la feuille "PAIE" notamment sur les colonnes "Salaire brut" et "salaire brut prorata "

Principe : certains salariés sont payés à la journée et c'est uniquement pour eux qu'est réservée la colonne "jours travaillés". Pour tous ceux dont la colonne "jours travaillés est renseignée on devra afficher le calcul du brut dans la colonne "salaire brut prorata" et pour ceux dont cette colonne "jours travaillés" n'est pas renseignée on devra afficher le calcul du brut dans la colonne "salaire brut".

1er Problème : j'ai constaté que les formules marchent bien mais dès lors que la colonne "salaire dimanche" est vide C'est-à-dire lorsqu'il n'y a pas d'heures supplémentaires du dimanche (d'où colonne "jour dim" vide) ça renvoie automatiquement un message d'erreur, on dirait que ça veut m'obliger à toujours renseigner une valeur à ce niveau ce qui ne m'arrange pas.
Une proposition svp.

2ème problème :
La feuille ITS calcule parfaitement pour chaque salarié l'impôt sur le revenu puis j'associe manuellement la valeur à chaque salarié dans la colonne "ITS" de feuille "Paie" (vous pourrez voir la formule utilisée).
Problème : j'ai en réalité j'ai une centaine d'ouvriers et je ne pourrais pas répéter cette manœuvre pour tous ces ouvriers.
J'aimerais donc si possible incrémenter une formule "SI" qu'on devra écrire plutôt au niveau de la colonne "ITS" Dans la feuille "Paie" sachant que comme c'est sous forme de tableau, la formule se dupliquera sur toutes les autres lignes. Sans oublier que la base de calcul c'est soit le salaire brut soit le salaire brute prorata selon que l'employé est payé au jour ou mensuellement.

Ou à défaut d'une formule, un code macro qui récupèrera la valeur de l'impôt calculé dans la feuille "ITS" Et viendra coller cette valeur dans la feuille "Paie" au niveau du salarié concerné. Le problème aussi à ce niveau est qu'il faudra alors dupliquer pour tous les ouvriers (plus d'une centaine...) dans la feuille "ITS" ce Petit Tableau qui calcule l'impôt sur le revenu, ce qui n'est pas non plus évident (pour moi en tous cas.)
Toute solution ou proposition serait la bienvenue.

Dernier problème :
J'aimerais un code VBA qui me permettra d'imprimer tous les bulletins dans un seul fichier pdf (Voir la feuille "cadre 2018"). Pour les formules de recherche qui afficheront les éléments du bulletin il n'y a aucun soucis je saurais parfaitement le faire.

Merci d'avance à tous ceux qui se pencheront sur mes soucis.
Cordialement.
 

Pièces jointes

  • PAIE GIGI PRO.xlsm
    780.3 KB · Affichages: 4

TooFatBoy

XLDnaute Barbatruc
Bonjour,

1er Problème :
...
Une proposition svp.
Une proposition :
Code:
=SI([@[Jours Travaillés]]="";SOMME([@[Salaire Base]];[@[Total Primes]];[@[Salaire dimanche]]);"")
et
Code:
=SI([@[Jours Travaillés]]="";"";SOMME([@[Salaire au prorata]];[@[Salaire dimanche]]))



2ème problème :
La feuille ITS calcule parfaitement pour chaque salarié l'impôt sur le revenu puis j'associe manuellement la valeur à chaque salarié dans la colonne "ITS" de feuille "Paie" (vous pourrez voir la formule utilisée).
Une proposition :
Code:
=SIERREUR(INDEX(ITS!E:E;EQUIV([@[Nom & Prénom]];ITS!B:B;0)+1);"-")
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour olivier1984, TooFatBoy, le forum,

Pour l'impression en PDF des bulletins de paie voyez le fichier joint et cette macro :
VB:
Sub PDF()
Dim F As Worksheet, c As Range, a(), n
Set F = Sheets("CADRE_2018")
F.Visible = xlSheetVisible 'au cas où...
F.Select
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each c In [Liste_Salariés] 'liste de validation
    If c <> "" Then
        F.Copy Before:=F
        ActiveSheet.Range("N26") = c
        ReDim Preserve a(n)
        a(n) = ActiveSheet.Name
        n = n + 1
    End If
Next
If n = 0 Then Exit Sub
Sheets(a).Select
ActiveSheet.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & "\Fichier PDF.pdf"
Sheets(a).Delete
End Sub
A+
 

Pièces jointes

  • PAIE GIGI PRO.xlsm
    983.7 KB · Affichages: 6

job75

XLDnaute Barbatruc
Une remarque sur le 2ème problème qui ne me paraît pas cohérent.

Le prélèvement à la source de l'ITS par l'employeur ne doit pas utiliser le barème de l'impôt.

Il doit utiliser le taux moyen d'imposition calculé par le fisc sur tous les revenus du ménage.

A+
 

olivier1984

XLDnaute Junior
Une remarque sur le 2ème problème qui ne me paraît pas cohérent.

Le prélèvement à la source de l'ITS par l'employeur ne doit pas utiliser le barème de l'impôt.

Il doit utiliser le taux moyen d'imposition calculé par le fisc sur tous les revenus du ménage.

A+
Merci Pour cette qui est logique cependant ce que vous dîtes est vrai quand il s'agit des personnes physiques exerçant une activité commerciale or là il s'agit des employés et c'est ainsi que s'applique ce taux dans la législation fiscale de notre pays.
Sachant que chaque pays tient une fiscalité qui lui est spécifique...
 

olivier1984

XLDnaute Junior
Bonjour,


Une proposition :
Code:
=SI([@[Jours Travaillés]]="";SOMME([@[Salaire Base]];[@[Total Primes]];[@[Salaire dimanche]]);"")
et
Code:
=SI([@[Jours Travaillés]]="";"";SOMME([@[Salaire au prorata]];[@[Salaire dimanche]]))




Une proposition :
Code:
=SIERREUR(INDEX(ITS!E:E;EQUIV([@[Nom & Prénom]];ITS!B:B;0)+1);"-")
Un grand merci à toi toofatboy pour ces propositions de formules.
Je te fais un retour incessamment après avoir testé.
Bon dimanche
 

olivier1984

XLDnaute Junior
Bonjour,


Une proposition :
Code:
=SI([@[Jours Travaillés]]="";SOMME([@[Salaire Base]];[@[Total Primes]];[@[Salaire dimanche]]);"")
et
Code:
=SI([@[Jours Travaillés]]="";"";SOMME([@[Salaire au prorata]];[@[Salaire dimanche]]))




Une proposition :
Code:
=SIERREUR(INDEX(ITS!E:E;EQUIV([@[Nom & Prénom]];ITS!B:B;0)+1);"-")
Bonjour Toofatboy
C'était juste pour te dire un grand merci pour toutes tes formules proposées qui marchent parfaitement et il n'y a plus aucun message d'erreur.
Cordialement
 

job75

XLDnaute Barbatruc
Bonjour olivier1984, le forum,

En fait il faut créer tous les bulletins de paie et les personnaliser un par un chaque mois.

On utilisera donc cette macro pour éditer le fichier PDF :
VB:
Sub PDF()
Dim t, F As Worksheet, i, a(), n
t = Timer
Set F = Sheets("CADRE_2018")
F.Visible = xlSheetVisible
For i = F.Index + 1 To Worksheets.Count
    ReDim Preserve a(n)
    a(n) = Worksheets(i).Name
    n = n + 1
Next
If n = 0 Then Exit Sub
Sheets(a).Select
ActiveSheet.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & "\Fichier PDF.pdf"
F.Select
MsgBox "Fichier PDF créé en " & Format(Timer - t, "0.00 \sec"), , n & " employés"
End Sub
A+
 

Pièces jointes

  • PAIE GIGI PRO.xlsm
    958.7 KB · Affichages: 3

Statistiques des forums

Discussions
314 486
Messages
2 110 114
Membres
110 670
dernier inscrit
Mangouste