Tableau de congé

vserrano

XLDnaute Junior
Bonjour,

Avant de commencer à créer un tableau, je voudrais savoir si il existe ou si mon idée est possible ?

J'imagine un tableau,
1. Avec un onglet pour chaque mois.
2. Un onglet paramétrage avec les jours férié. D’ailleurs dans cet onglet j'aimerai aussi informer les jours où la société sera fermé.
3. J'aimerai que sur cet onglet les salariés puissent mettre leurs demandes et que selon cette demande que excel aille renseigner les onglets selon les dates et les personnes.

J'ai une imagination debordante !!! J'ai beaucoup aimé un tableau que j'ai trouvé sur ce forum, je le mets en copie aussi (congé 2018).

Merci d'avance pour votre aide

Valérie
 

Pièces jointes

  • Nouveau Feuille de calcul Microsoft Excel.xlsx
    17.7 KB · Affichages: 54
  • Congé 2018.xlsx
    132.5 KB · Affichages: 55

Victor21

XLDnaute Barbatruc
Bonjour Valérie.

Pourquoi un onglet par mois ?
Plus d'1 million de lignes, et plus de 16000 colonnes.
Lorsque vous reviendrez pour demander des extractions, des stats, ou pour ajouter les autres types d'absence, ce sera plus simple de vous répondre si toutes vos données sont sur la même feuille.
-Une ligne par absence : Matricule, Nom, Prénom, Type d'absence, Début, Fin, Nb de jours pris en compte,...
-Pas de ligne vide.
Pour les couleurs et autres fioritures, c'est une fois que tout roule correctement qu'on s'y penche ;)
 

vserrano

XLDnaute Junior
Bonjour Valérie.

Pourquoi un onglet par mois ?
Plus d'1 million de lignes, et plus de 16000 colonnes.
Lorsque vous reviendrez pour demander des extractions, des stats, ou pour ajouter les autres types d'absence, ce sera plus simple de vous répondre si toutes vos données sont sur la même feuille.
-Une ligne par absence : Matricule, Nom, Prénom, Type d'absence, Début, Fin, Nb de jours pris en compte,...
-Pas de ligne vide.
Pour les couleurs et autres fioritures, c'est une fois que tout roule correctement qu'on s'y penche ;)
Bonjour Victor
Bonjour Valérie.

Pourquoi un onglet par mois ?
Plus d'1 million de lignes, et plus de 16000 colonnes.
Lorsque vous reviendrez pour demander des extractions, des stats, ou pour ajouter les autres types d'absence, ce sera plus simple de vous répondre si toutes vos données sont sur la même feuille.
-Une ligne par absence : Matricule, Nom, Prénom, Type d'absence, Début, Fin, Nb de jours pris en compte,...
-Pas de ligne vide.
Pour les couleurs et autres fioritures, c'est une fois que tout roule correctement qu'on s'y penche ;)

Bonjour Victor21, je suis preneuse de toute bonne idée et il est vrai qu'il faut voir plus loin que son nez !!!
 

vgendron

XLDnaute Barbatruc
j'ai cliqué sur ventilé mais ca ne coche pas dans le tableau voulu
ah oui pardon. j'avais pas vu qu'il mettait tout en janvier..
voir correction ici, avec les tests en plus
VB:
Sub Ventiler()
Application.ScreenUpdating = False
Dim JourToRecord, Deb, Fin As Date
With Sheets("Demande de congé")
    For i = 1 To .Range("TabDemande").Rows.Count
        Employé = .Range("TabDemande").Item(i, 1)
        TypeCongé = .Range("TabDemande").Item(i, 2)
       
        Deb = .Range("TabDemande").Item(i, 3)
        Fin = .Range("TabDemande").Item(i, 4)
        NbJours = Fin - Deb + 1
        'tester si Deb et Fin sont vides..
        If Deb = 0 Or Fin = 0 Then
            MsgBox Employé & " n'a pas saisi de dates"
        Else
            For j = 1 To NbJours
                JourToRecord = Deb + j - 1
                Mois = Format(JourToRecord, "mmmm")
                jour = Day(JourToRecord)
                'Tester si c'est un jour férié
                Set JF = Sheets("Tableau de bord").Range("Liste_JF").Find(JourToRecord)
                If JF Is Nothing And WorksheetFunction.Weekday(JourToRecord, 2) <= 5 Then
                    With Sheets(Mois)
                        .Activate
                        Set ligne = .Range("A:A").Find(Employé, LookIn:=xlValues, lookat:=xlWhole)
                        If Not ligne Is Nothing Then
                            .Cells(ligne.Row, jour + 2) = TypeCongé
                        End If
                    End With
                End If
            Next j
        End If
    Next i
End With
Application.ScreenUpdating = True
End Sub

@Victor21 : Pourquoi serait ce une annerie ce que tu as dit ??
 

vserrano

XLDnaute Junior
RE, bonjour, vgendron.
Oubliez si vous avez lu, c'était une ânerie...
???
Sub Ventiler()
Application.ScreenUpdating = False
Dim
JourToRecord, Deb, Fin As Date
With
Sheets("Demande de congé")
For i = 1 To .Range("TabDemande").Rows.Count
Employé = .Range("TabDemande").Item(i, 1)
TypeCongé = .Range("TabDemande").Item(i, 2)

Deb = .Range("TabDemande").Item(i, 3)
Fin = .Range("TabDemande").Item(i, 4)
NbJours = Fin - Deb + 1
'tester si Deb et Fin sont vides..
If Deb = 0 Or Fin = 0 Then
MsgBox Employé & " n'a pas saisi de dates"
Else
For j = 1 To NbJours
JourToRecord = Deb + j - 1
Mois = Format(JourToRecord, "mmmm")
jour = Day(JourToRecord)
'Tester si c'est un jour férié
Set JF = Sheets("Tableau de bord").Range("Liste_JF").Find(JourToRecord)
If JF Is Nothing And WorksheetFunction.Weekday(JourToRecord, 2) <= 5 Then
With Sheets(Mois)
.Activate
Set ligne = .Range("A:A").Find(Employé, LookIn:=xlValues, lookat:=xlWhole)
If Not ligne Is Nothing Then
.Cells(ligne.Row, jour + 2) = TypeCongé
End If
End With
End If
Next j
End If
Next i
End With
Application.ScreenUpdating = True
End
Sub
Vgendron,
J'ai un bug dans la macro au niveau de
Set JF = Sheets("Tableau de bord").Range("Liste_JF").Find(JourToRecord)
 

Discussions similaires

Statistiques des forums

Discussions
312 107
Messages
2 085 360
Membres
102 874
dernier inscrit
Petro2611