Menu

Incompréhension de code

Messages postés
114
Date d'inscription
mercredi 18 avril 2018
Dernière intervention
23 mars 2019
-
Bonjour tout le monde

quelqu’un peut m'expliquer ce code (ce qu'il fait exactement ?)



Sub recup_conges()

'debut en s50 2017
'colonne S dans l'onglet perso
'ligne 13 pour la charge

'ceu2 comme debut dans l'onglet des conges
'remplissage du nouvel onglet pour ne pas prendre en compte les TAD


Dim dispo As Integer
Dim jour As Integer
Dim semaine As Integer
Dim personne As Integer


'le nombre de personne dans la liste est de 18
For personne = 0 To 18

semaine = 0

'5 signifie que la personne était pressente pendant toute la semaine
dispo = 5



For jour = 0 To 365 * 2 + 5

        If Worksheets("Recup_absences").Range("d2").offset(personne, jour).Value <> "" And jour Mod 7 <= 4 Then
        dispo = dispo - 1
        End If
        
        If jour Mod 7 = 5 Then
        Worksheets("synthese_conges_SS_tad").Range("b2").offset(personne, semaine).Value = dispo
        semaine = semaine + 1
        dispo = 5
        End If
Next jour
Next personne
'Worksheets("Aurélien Thorez").Range("aa13").Value = 5

MsgBox ("Mise à jour des congés terminée")

End Sub



merci d'avance pour vos réponse
Afficher la suite 

Votre réponse

2 réponses

Messages postés
114
Date d'inscription
mercredi 18 avril 2018
Dernière intervention
23 mars 2019
0
Merci
surtout pour

If Worksheets("Recup_absences").Range("d2").offset(personne, jour).Value <> "" And jour Mod 7 <= 4 Then
dispo = dispo - 1

merci encore
Commenter la réponse de blalaa
Messages postés
1896
Date d'inscription
lundi 3 mai 2010
Dernière intervention
25 mars 2019
132
0
Merci
Bonjour,

De manière générale pour comprendre une macro, tu peux faire ça : https://www.commentcamarche.net/contents/1381-debogage

La personne qui a codé l'a fait sur la base des personnes (une personne par ligne) et des dates (en colonne). La macro semble partir du principe que tous les jours sont travaillés, si on écrit quelque chose dans une cellule, on compte ça comme travaillé ou congé/RTT/autre absence (je ne sais pas quelle logique a été prise).
Mod=modulo => jour Mod 7 renvoie un résultat de 0 (lundi) à 4 (vendredi), je pense.

Plus bas (dans le code), tous les "jour Mod 7 = 5" (samedi ?), on indique le nombre de jours travaillés (ou non travaillés ?) dans la semaine.

A+
blalaa
Messages postés
114
Date d'inscription
mercredi 18 avril 2018
Dernière intervention
23 mars 2019
-
merci pour votre reponse
Commenter la réponse de Zoul67