Calcul prestations horaires et prestation fixe pour salaire employé
Bonjour, je remercie par avance à ceux qui trouveront la formule adéquat a mon fichier Excel.
je souhaite que le calcul de la paie des mes employés soit correcte en rapport avec les prestations. "L12:L35"
j'ai un tableau avec le nom de mes employé en B20:B25 et leurs tarif horaire en C20:C25 sur la feuille "Données" et les prestations.
Sur ma feuille caisse dans la partie encaissement je peux choisir le nom de l'employé en C12:C35 le nom de la prestation en D12:D35 (prestation A, B et C),
E12:E35 est la quantité et/ou nombres d'heures des prestations.
H12:H35 est le montant que devra payer le client avec la formule qui va chercher les montant dans la feuille Données :
=SI(D12="";"";SIERREUR(RECHERCHEV(D12; Données!$B$7:$C$12; 2; FAUX) * E12 - G12; ""))
En partie décaissement le nom de mon employé ce copie automatiquement en I12:I35 et fusionne en cas de doublons en C12:C35 :
=SI(C13<>""; SI(SOMMEPROD(($I$11:I12=C13)*1)=0; C13; ""); "")
En L12:L35 est le montant de la paie de mes employés. Avec la formules hyper complexe qui pour moi n'est pas la bonne :
=SI(E12<>""; SIERREUR(SI(D12="mixage"; INDEX(Données!$D$20:$D$25; EQUIV(I12; Données!$B$20:$B$25; 0)) * SOMME.SI.ENS($E$12:$E$35;$C$12:$C$35;I12); INDEX(Données!$C$20:$C$25; EQUIV(I12; Données!$B$20:$B$25; 0))) * SOMME.SI.ENS($E$12:$E$35;$C$12:$C$35;I12); ""); "")
il y'a aussi un code VBA qui permet de remonter le noms de l'employé en colonne I si elle est vide
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LastRow As Long
Dim CheckRange As Range
' Spécifiez la plage de vérification (colonne C dans cet exemple)
Set CheckRange = Range("C:C")
' Vérifie si la modification a eu lieu dans la plage de vérification
If Not Intersect(Target, CheckRange) Is Nothing Then
Application.EnableEvents = False
LastRow = Cells(Rows.Count, "I").End(xlUp).Row
' Cherchez le dernier emplacement du nom dans la colonne I
For i = 11 To LastRow
If Cells(i, "I").Value = Target.Value And Cells(i, "I").Value <> "" Then
' Placez le nom dans la cellule I de cet emplacement
Cells(i, "I").Value = Target.Value
Exit For
ElseIf Cells(i, "I").Value = "" Then
' Placez le nom dans la première cellule vide dans la colonne I
Cells(i, "I").Value = Target.Value
Exit For
End If
Next i
Application.EnableEvents = True
End If
End Sub
Heureuse année 2024 à tous les membres du forum