Répartition de jours selon un chiffre

J

Jojo

Guest
Bonjour, ce probleme est la suite d'une autre question que j'avais posé il y a une semaine concernant un fichier traitant des accidents du travail. Probleme que j'avais pu alors résoudre grace à Monique (merci encore et sommeprod)

Je travaille sous excel 2002 (et oui on a upgradé mon excel)

Voila le probleme, dans mon fichier, je declare dans des colonnes la date de l'Accident, la date de debut d'arret de travail s'il y a et la date de reprise.

Cela me donne ainsi dans une autre colonne la durée de l'arret de travail.

Grace a la formule sommeprod, j'arrive dans la feuille Suivi des accidents, à faire apparaitre combien j'ai eu d'accident sans arret, avec arret, et la durée de l'accident pour chaque secteur.

Mais voila le hic, c'est que si une personne à un accident en janvier et doit s'arreter 120 jours, cela me marque 1 arret en janvier et 120 jours d'arret (normal, la formule est faite pour donner ce résultat, vous me direz) or il faudrait, qu'en fait, si l'accident dure 120 jour que cela marque le nombre de jour d'arret en janvier (si arret le 15, cela donne 16 jours), en fevrier 28, en mars 31, etc. jusqu'a occurence de 120 jours. Et voici donc mon probleme, je ne sais pas encore comment faire sans passer par 50 colonnes et calculs intermedaires afin de rendre le calcul plus simple et a ma portée.

J'ai joint mon fichier pour plus de clarté
 

Pièces jointes

  • Masque-cerfa-vo.zip
    45.3 KB · Affichages: 33
M

Monique

Guest
Bonjour,

Tu n'as pas 50 colonnes supplémentaires, mais quand même 12 (tu pourras les masquer).
Les arrêts sont ventilés M, M+1, M+2 etc
Pour le nombre de jours d'AT par mois, en janvier c'est un SommeProd simple,
en février c'est un double, en mars un triple...
Donc, j'ai donné des noms à des bouts de formules, celles que l'on retrouve 12 fois en décembre.
Ms pour =MOIS(DateAT)
DecA pour =DECALER(DuréeAT;;1)
DecB pour =DECALER(DuréeAT;;2)
DecL pour =DECALER(DuréeAT;;12)

A part ça, tu as la fonction FIN.MOIS()
Pour qu'elle fonctionne :
barre de menu - outils - Macros complémentaires
et tu coches "Utilitaire d'analyse"

Le fichier joint n'est qu'une toute petite partie de ton fichier, tu préviens si tu as du mal à mettre les 2 ensemble.
 

Pièces jointes

  • RepartitionJoursJojo.zip
    8.3 KB · Affichages: 59
J

jojo

Guest
Kikoo Monique,

Bon j'avoue ne pas comprendre ce que tu a fait :p cela depasse mon niveau, mais j'ai trouvé ce code sous VBA qui globalement fait la meme chose et qui m'a permis de m'en sortir, le voila :

Sheets("Statistiques").Cells(1, 50) = Sheets("Tableau des AT").Cells(l, 11)
Sheets("Statistiques").Cells(1, 51) = Sheets("Statistiques").Cells(x, 8)
debut = Format(Range("AX1").Value, "0")
For z = 1 To [AY1]
d = debut + z
m = Month(d)
Select Case m
Case 1
m1 = z
Case 2
m2 = z - m1
Case 3
m3 = z - m1 - m2
Case 4
m4 = z - m1 - m2 - m3
Case 5
m5 = z - m1 - m2 - m3 - m4
Case 6
m6 = z - m1 - m2 - m3 - m4 - m5
Case 7
m7 = z - m1 - m2 - m3 - m4 - m5 - m6
Case 8
m8 = z - m1 - m2 - m3 - m4 - m5 - m6 - m7
Case 9
m9 = z - m1 - m2 - m3 - m4 - m5 - m6 - m7 - m8
Case 10
m10 = z - m1 - m2 - m3 - m4 - m5 - m6 - m7 - m8 - m9
Case 11
m11 = z - m1 - m2 - m3 - m4 - m5 - m6 - m7 - m8 - m9 - m10
Case 12
m12 = z - m1 - m2 - m3 - m4 - m5 - m6 - m7 - m8 - m9 - m10 - m11
End Select
Next
Dim test As String
Dim test2 As String
test = Sheets("Statistiques").Cells(1, 52)
test2 = Sheets("Statistiques").Cells(x, 10)
If test2 <> test Then
Cells(x, 70) = m1
Cells(x, 71) = m2
Cells(x, 72) = m3
Cells(x, 73) = m4
Cells(x, 74) = m5
Cells(x, 75) = m6
Cells(x, 76) = m7
Cells(x, 77) = m8
Cells(x, 78) = m9
Cells(x, 79) = m10
Cells(x, 80) = m11
Cells(x, 81) = m12
Else

End If

Le if avec le test, c'est ma tambouille pour pas qu'il affiche toujours des résultats, apres je me sers de sommeprod pour faire mes sommes de jours.
 

Discussions similaires

Réponses
14
Affichages
543

Statistiques des forums

Discussions
312 345
Messages
2 087 470
Membres
103 551
dernier inscrit
d3vi