Incompréhension de code

Fermé
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020 - Modifié le 14 mars 2019 à 09:46
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020 - 8 mars 2019 à 16:21
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
A voir également:

2 réponses

blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020
8 mars 2019 à 15:55
surtout pour

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

merci encore
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
8 mars 2019 à 16:15
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+
0
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020
8 mars 2019 à 16:21
merci pour votre reponse
0