Incompréhension de code [Fermé]

Signaler
Messages postés
171
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020
-
Messages postés
171
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020
-
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

2 réponses

Messages postés
171
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020

surtout pour

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

merci encore
Messages postés
1938
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
11 mai 2020
134
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+
Messages postés
171
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020

merci pour votre reponse