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 SubLorsque 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
 
	 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		