Bonjour à tous !
Je reviens vers vous aujourd'hui car après avoir réussi avec l'aide de @JHA et @TooFatBoy a remplir mes rapport de quart, je me suis mis en tête de me vérifier mes fiches de paie a l'aide d'excel.
Je m'explique :
A chaque quart, nous avons des primes, de salissure, de repas, d'incommodité, de nuit, de week-end etc etc malheureusement notre service compta doit avoir des soucis avec les chiffres car nous ne trouvons jamais le résultat eux et nous !
Du coup je me suis dit que j'allais le faire avec Excel, j'ai d'abord essayer de m'afficher un calendrier a l'aide de formules simple et ChatGPT,
J'ai réussi a avoir en colonne A les jours de l'année, et en colonne B mon cycle de travail.
j'ai essayer quelques calculs simple, et je me suis rendu compte que ca ne marcherait pas (ou que je ne saurais pas le faire) car en essayant de compter les jours qui sont des jours ouvrable (du lundi au vendredi) le format de date renseigné en A1 ne fonctionnerait pas, car c'est une formule étirée.
Je me suis donc tourné vers le VBA et j'ai bosser la dessus (toujours avec l'aide de ChatGPT, je n'y connais rien moi-même)
Concrètement ce que je souhaite faire, c'est m'afficher un calendrier annuel a partir de A3 avec mon cycle de travail dedans. (un peu comme mon planning sur l'image que je joint, juste les jours blanc sur l'image doivent etre grisé avec la mention "Repos") mais je dois pouvoir modifier les jours en question - Par exemple si je suis en congé ou en AM etc -
Il me faudrait pouvoir modifier l'année a volonté et que les jours fériés soient compris dedans.
Ceci afin que je puisse recouper les informations voulues a savoir :
Sur une période d'un mois (dates glissantes, parfois on est payé sur une période du 1er au 31 parfois, du 1er au 25 etc il me faudra ajuster en fonction), le nombre de fois ou j'ai travailler un jour ouvrable, le nombre de fois ou j'ai travaillé un samedi ou dimanche, le nombre de fois ou j'ai travailler de nuit le samedi ou dimanche, le nombre de jour total travaillés, le nombre de jour travaillé un jour férié.
Ca c'est l'idée du projet fini, ma premiere question est : est-ce que c'est possible en VBA ?
Ensuite voici le code sur lequel on a travaillé avec ChatGPT, tous ce que j'ai décris plus haut n'y est pas encore, j'y vais petit a petit.
Lorsque je l'execute, j'ai bien une nouvelle feuille "calendrier" qui se crée, j'ai bien ne A2 un menu deroulant dans lequel je peut sélectionner une année entre 2022 et 2024 mais rien d'autres.
Aucun calendrier, toutes les cellules sont vide et excel ne me retourne aucune erreur.
Du coup je en sais pas vraiment si c'est le code qui ne fonctionne pas, ou si c'est un parametre d'excel qui ne va pas.
Version d'excel : Microsoft® Excel® pour Microsoft 365 MSO (Version 2305 Build 16.0.16501.20074) 64 bits
Est-ce que quelqu'un a une idée ?
D'avance merci,
Eiwinnd
Je reviens vers vous aujourd'hui car après avoir réussi avec l'aide de @JHA et @TooFatBoy a remplir mes rapport de quart, je me suis mis en tête de me vérifier mes fiches de paie a l'aide d'excel.
Je m'explique :
A chaque quart, nous avons des primes, de salissure, de repas, d'incommodité, de nuit, de week-end etc etc malheureusement notre service compta doit avoir des soucis avec les chiffres car nous ne trouvons jamais le résultat eux et nous !
Du coup je me suis dit que j'allais le faire avec Excel, j'ai d'abord essayer de m'afficher un calendrier a l'aide de formules simple et ChatGPT,
J'ai réussi a avoir en colonne A les jours de l'année, et en colonne B mon cycle de travail.
j'ai essayer quelques calculs simple, et je me suis rendu compte que ca ne marcherait pas (ou que je ne saurais pas le faire) car en essayant de compter les jours qui sont des jours ouvrable (du lundi au vendredi) le format de date renseigné en A1 ne fonctionnerait pas, car c'est une formule étirée.
Je me suis donc tourné vers le VBA et j'ai bosser la dessus (toujours avec l'aide de ChatGPT, je n'y connais rien moi-même)
Concrètement ce que je souhaite faire, c'est m'afficher un calendrier annuel a partir de A3 avec mon cycle de travail dedans. (un peu comme mon planning sur l'image que je joint, juste les jours blanc sur l'image doivent etre grisé avec la mention "Repos") mais je dois pouvoir modifier les jours en question - Par exemple si je suis en congé ou en AM etc -
Il me faudrait pouvoir modifier l'année a volonté et que les jours fériés soient compris dedans.
Ceci afin que je puisse recouper les informations voulues a savoir :
Sur une période d'un mois (dates glissantes, parfois on est payé sur une période du 1er au 31 parfois, du 1er au 25 etc il me faudra ajuster en fonction), le nombre de fois ou j'ai travailler un jour ouvrable, le nombre de fois ou j'ai travaillé un samedi ou dimanche, le nombre de fois ou j'ai travailler de nuit le samedi ou dimanche, le nombre de jour total travaillés, le nombre de jour travaillé un jour férié.
Ca c'est l'idée du projet fini, ma premiere question est : est-ce que c'est possible en VBA ?
Ensuite voici le code sur lequel on a travaillé avec ChatGPT, tous ce que j'ai décris plus haut n'y est pas encore, j'y vais petit a petit.
Code:
Sub AfficherCalendrier()
Dim year As Integer
Dim calendarSheet As Worksheet
Dim startDate As Date
Dim endDate As Date
Dim currentDate As Date
Dim currentRow As Integer
Dim currentColumn As Integer
' Vérifier si la feuille "Calendrier" existe, sinon la créer
On Error Resume Next
Set calendarSheet = ThisWorkbook.Sheets("Calendrier")
On Error GoTo 0
If calendarSheet Is Nothing Then
Set calendarSheet = ThisWorkbook.Sheets.Add
calendarSheet.Name = "Calendrier"
End If
' Effacer le contenu de la feuille "Calendrier"
calendarSheet.Cells.ClearContents
' Créer la validation des données pour le menu déroulant de l'année
With calendarSheet.Range("A2").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="2022,2023,2024" ' Modifier la liste des années ici
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
' Demander à l'utilisateur de sélectionner l'année
On Error Resume Next
year = calendarSheet.Range("A2").Value
On Error GoTo 0
' Vérifier si l'année a été spécifiée
If year <> 0 Then
' Calculer la date de début et de fin pour l'année spécifiée
startDate = DateSerial(year, 1, 1)
endDate = DateSerial(year, 12, 31)
' Afficher les jours de la semaine dans la première ligne
calendarSheet.Range("B1:H1").Value = Array("Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche")
' Initialiser les variables de position
currentRow = 3 ' Commencer à la ligne 3
currentColumn = 2
' Boucle pour afficher les dates de chaque mois
Dim mois As Integer
For mois = 1 To 12
' Calculer la date de début et de fin pour le mois
startDate = DateSerial(year, mois, 1)
endDate = DateSerial(year, mois + 1, 0)
' Afficher le nom du mois
calendarSheet.Cells(currentRow, currentColumn).Value = Format(startDate, "mmmm")
' Passer à la prochaine colonne
currentColumn = currentColumn + 1
' Réinitialiser la colonne si nécessaire
If currentColumn > 8 Then
currentColumn = 2
End If
' Afficher les dates du mois
currentDate = startDate
Do While currentDate <= endDate
' Vérifier si la date est un lundi
If Weekday(currentDate, vbMonday) = 2 Then ' Modifier pour lundi
' Passer à la prochaine ligne
currentRow = currentRow + 1
End If
' Afficher la date dans la cellule correspondante
calendarSheet.Cells(currentRow, currentColumn).Value = Format(currentDate, "dd")
' Passer à la prochaine colonne
currentColumn = currentColumn + 1
' Réinitialiser la colonne et la ligne si nécessaire
If currentColumn > 8 Then
currentColumn = 2
End If
If Weekday(currentDate, vbMonday) = 7 Then ' Modifier pour dimanche
currentRow = currentRow + 1
End If
' Passer à la prochaine date
currentDate = currentDate + 1
Loop
Next mois
' Mettre en forme la feuille "Calendrier" pour une meilleure lisibilité
calendarSheet.Columns.AutoFit
calendarSheet.Rows.AutoFit
calendarSheet.Cells.HorizontalAlignment = xlCenter
' Activer la feuille "Calendrier"
calendarSheet.Activate
End If
End Sub
Lorsque je l'execute, j'ai bien une nouvelle feuille "calendrier" qui se crée, j'ai bien ne A2 un menu deroulant dans lequel je peut sélectionner une année entre 2022 et 2024 mais rien d'autres.
Aucun calendrier, toutes les cellules sont vide et excel ne me retourne aucune erreur.
Du coup je en sais pas vraiment si c'est le code qui ne fonctionne pas, ou si c'est un parametre d'excel qui ne va pas.
Version d'excel : Microsoft® Excel® pour Microsoft 365 MSO (Version 2305 Build 16.0.16501.20074) 64 bits
Est-ce que quelqu'un a une idée ?
D'avance merci,
Eiwinnd