Raisonnement de Date
Bonjour,
J'ai essayé de chercher un titre explicite mais c'est pas évident pour mon cas..
Dans le cadre d'un projet tutoré, je dois automatiser les tâches liées à la comptabilité d'une association. (gratuitement)
Il m'a été confié la mission d'automatiser le tableau d'absentéisme annuel des salariés.
J'ai décidé de faire ça sous VBA.
Les salariés remplissent leur calendrier Google et grâce à un site j'ai le calendrier sous excel. C'est donc mon fichier de base (BDD).
Dans le fichier annuel (Doc Absence 2018) il y a une feuille pour chaque mois. Dans chaque feuille il y a un les prénoms de tout les salariés (ici je les ai inventé)
Je dois reporter les données de mon fichier de base vers le fichier annuel.
J'ai fait en sorte que ça trouve le mois et le salarié concerné et que ca mette le motif de l'absence.
Mais je suis bloqué au niveau des dates, par exemple si un salarié prend un congé de 5 jours le 27/X/N du mois je dois compléter la fin du mois X et le début de X+1.
Auriez vous une idée ? (je met les 2 fichiers en PJ. Vous pourrez voir mon macro "CongéToutleMonde")
Je vous remercie d'avance.
Cordialement.
bonjour,
une proposition
Sub CongéToutleMonde()
année = 2018
Set wsi = Workbooks("BDD.xlsm").Sheets("sheet1") ' wsi feuille contenant les données dans bdd
Set wbo = Workbooks("Doc Absence " & année & ".xlsm") 'classeur à mettre à jour
ligne = 2
While wsi.Cells(ligne, 1) <> ""
title_ = wsi.Cells(ligne, 1)
start_ = wsi.Cells(ligne, 2)
end_ = wsi.Cells(ligne, 3)
calendar_ = Cells(ligne, 5)
pm = "" 'mois de la date prédédente
For i = start_ To end_ 'on prend un à un les jours de la période d'absence
If i >= DateSerial(année - 1, 1, 1) And i <= DateSerial(année - 1, 12, 31) Then 'on vérifie si la date est bien dans l'année à prendre en compte
' càd entre le 1/1 et 31/12 de l'année précédente (2017 pour année 2018)
mois_d = Format(i, "mmmm") 'le mois en texte
Dim jour_d As Integer
jour_d = Format(i, "d") 'le jour en nbr
'ouvre le doc en quest
With wbo.Sheets(mois_d)
If pm <> mois_d Then ' si changement de mois
pm = mois_d
col = 3
While .Cells(3, col) <> calendar_ 'on recherche la colonne de la personne sur le mois en cours
col = col + 1
Wend
End If
.Cells(jour_d + 3, col) = title_ ' on met à jour l'information d'absence
.Cells(jour_d + 3, col + 1) = title_
End With
End If
Next i
ligne = ligne + 1
Wend
End Sub
edit correction calendar_ et ajout commentaires
Tu avais juste oublié de déclarer la variable calendar_
Sinon c'est fonctionnel, je te remercie beaucoup