• Initiateur de la discussion Initiateur de la discussion vserrano
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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 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 !!!
 
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 ??
 
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)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
24
Affichages
539
Réponses
10
Affichages
399
Réponses
4
Affichages
154
Retour