XL 2013 Fonction SI

Susuwatari

XLDnaute Nouveau
Bonjour a tous,

Après m'être battu avec excel et les forums déjà présents, je ne peux pas me résigné à stopper mes recherches !
Je compte sur votre aide pour m'apporter une piste (ou même une solution !).

Je vous explique les faits :
Vous trouverez sur le fichier ci-joint un planning contenant les 52 semaines de l'année ainsi qu'une liste de salarié.
En fin de planning je souhaite faire un calcul savant a base de fonction "SI".
Très grossièrement : SI tant d'heure semaine 1 alors tant de sous + SI tant d'heure semaine 2 alors tant de sous +ect pour les 52 semaines.

Avant de taper cette formule (très longue!) a la main, j'ai cherché un moyen de l'alléger. Je n'ai pas réussi, je l'ai tapé à la main.
Malheureusement excel ne supporte guère les formule à rallonge et m'a afficher un message d'erreur.
La formule fonctionne tout de même (ouf!) mais je viens ici pour apprendre et trouver une solution à cette formule à rallonge.

Je vous remercie pour votre aide,

Susuwatari

[Modération: pièce jointe supprimée, contrevenant au RGPD]
 
Dernière modification par un modérateur:

Susuwatari

XLDnaute Nouveau
Bonjour Sylvanu,

J'imagine qu'il est trop lourd a cause de mes nombreuses formules !
J'ai supprimé toute formules sauf les 2 premières lignes dans l'onglet "Planning" colonne "Déplacement".

[Modération: pièce jointe supprimée, contrevenant au RGPD]
 
Dernière modification par un modérateur:

Susuwatari

XLDnaute Nouveau
Le format du fichier est : Classeur binaire excel.
C'est peut être pour ca ...

Je laisse la formule ici et le fichier en format Macro excel.

Formule :
=SI([@1]>48;"Tropd'heure";SI(ARRONDI.SUP([@1]/9;0)>5;4;ARRONDI.SUP([@1]/9;0))*Data_Salariés!$K$8)+SI([@2]>48;"Trop d'heure";SI(ARRONDI.SUP([@2]/9;0)>5;4;ARRONDI.SUP([@2]/9;0))*Data_Salariés!$K$8)+ect ... jusqu'a [@52]
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Oups! Évidemment sur 52 colonnes ça fait une jolie formule.
Comme j'ai vu que vous aviez du VBA je vous propose plutôt une fonction perso.
( si besoin aide : https://www.excel-downloads.com/resources/fonctions-personnelles-utilite-simplicite-et-methode.1135/ )
VB:
Function CalculDeplacement(Lig)
' Formule appliquée
' =SI(Tableau_Planning[[#Cette ligne];[1]]>48;"Trop d'heure";
'  SI(ARRONDI.SUP(Tableau_Planning[[#Cette ligne];[1]]/9;0)>5;5*Data_Salariés!$K$8;
'  ARRONDI.SUP(Tableau_Planning[[#Cette ligne];[1]]/9;0))*Data_Salariés!$K$8)
' Attention modifs : 5 au lieu de 4 et 5 Gd semble plus normal.
    Application.Volatile
    Dim S, C%
    S = 0
    For C = 5 To 56                             ' Pour toutes les semaines
        If Cells(Lig, C) > 48 Then              ' si plus de 48H alerte
            CalculDeplacement = "Trop d'heure."
            Exit Function
        End If
        If Application.RoundUp(Cells(Lig, C) / 9, 0) > 5 Then
            S = S + 4 * [GD]                                            ' Si Somme/9 >5 alors 4
        Else
            S = S + Application.RoundUp(Cells(Lig, C) / 9, 0) * [GD]    ' [GD] Data_salariés K8
        End If
    Next C
    CalculDeplacement = S
End Function
La syntaxe est : =CalculDeplacement(LIGNE())

Vérifiez bien la macro car j'ai quelques doutes :
1- Si plus de 45H alors on devrait mettre 5 et non 4. (45/9) ( j'ai laissé 4 dans la macro )
2- Cela devrait être 4 GD et non 4.
Sinon modifiez en conséquence.

Revenez si problème.

[Modération: pièce jointe supprimée, contrevenant au RGPD]
 
Dernière modification par un modérateur:

Susuwatari

XLDnaute Nouveau
Ca à l'air de bien fonctionner !

Je ne comprend pas tout mais je vais me pencher sur ces fameuses "fonctions perso", ca a l'air bien pratique :)


Un grand merci pour votre soutien Sylvanu, je me sens moins seul dans le développement de cet outil.


Susuwatari
 

Discussions similaires

Statistiques des forums

Discussions
303 601
Messages
2 012 548
Membres
219 333
dernier inscrit
ludo719