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.

15bdd.xlsm (14.75 Ko)
27doc-absence-2018.xlsm (128.99 Ko)

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

Tu avais juste oublié de déclarer la variable calendar_

en effet, excuse-moi

Rechercher des sujets similaires à "raisonnement date"