Réutiliser planning Excel 52 semaines

 Excel : Récapitulatif automatique d'un planning sur 52 semaines
+ planning pour les années suivantes



🎯 Dans ce tutoriel, nous allons continuer notre série sur la gestion de planning.


➡️ Si vous vous avez suivi le précédent tutoriel intitulé "Créer un planning de suivi des tâches sur 52 semaines avec un bouton toupie sur Excel", vous allez adorer la suite.


🆕 En effet, aujourd'hui, je vous montre comment ajouter une fontionnalité importante avec la création d'un récapitulatif automatique de planning sur 52 semaines.


📊 Ainsi, cela vous permettra de visualiser rapidement toutes vos tâches enregistrées sans avoir besoin d'utiliser le bouton toupie pour rechercher une ou des tâches spécifiques.


🔍 De plus, avec ce récapitulatif, vous allez pouvoir analyser les tâches de votre planning, comme identifier les périodes de fortes activités, mais aussi, optimiser la gestion des tâches récurrentes et éviter les goulots d'étranglement dans votre flux de travail.


📅 Mais ce n'est pas tout, dans la dernière partie de la vidéo, je vous explique comment préparer votre planning pour démarrer une nouvelle année sur de bonnes bases. Vous apprendrez à duppliquer votre planning afin de conserver les données de l'année précédente, à effacer toutes les données en une seule fois pour mettre à jour les dates et repartir au 1er janvier 2026.



Voir la vidéo pour suivre les différentes étapes :


Excel : Récapitulatif automatique d'un planning sur 52 semaines + planning pour les années suivantes



📌↪️→ Code VBA à utiliser :

1ère macro pour créer les récapitulatif :

Sub RécapitulatifSemaines()
    On Error GoTo GestionErreur

    Dim i As Integer
    Dim dernièreLigne As Long
    Dim destination As Range
    Dim startDate As Date
    Dim endDate As Date
    Dim plageHeures As Range
    Dim planningSheet As Worksheet
    Dim semaineSheet As Worksheet

    ' Initialiser la date de début de la première semaine
    startDate = DateValue("01/01/2025")

    ' Créer ou sélectionner la feuille Récapitulatif
    On Error Resume Next
    Set recapSheet = ThisWorkbook.Sheets("Récapitulatif")
    If recapSheet Is Nothing Then
        Set recapSheet = ThisWorkbook.Sheets.Add
        recapSheet.Name = "Récapitulatif"
    Else
        recapSheet.Cells.Clear ' Effacer les données existantes
    End If
    On Error GoTo 0

    ' Définir les heures
    Set plageHeures = ThisWorkbook.Sheets("Planning").Range("A4:A24")
    Set planningSheet = ThisWorkbook.Sheets("Planning")

    ' Copier les jours dans les cellules B1:H1
    recapSheet.Range("B1").Value = "Mercredi"
    recapSheet.Range("C1").Value = "Jeudi"
    recapSheet.Range("D1").Value = "Vendredi"
    recapSheet.Range("E1").Value = "Samedi"
    recapSheet.Range("F1").Value = "Dimanche"
    recapSheet.Range("G1").Value = "Lundi"
    recapSheet.Range("H1").Value = "Mardi"

    With recapSheet.Range("B1:H1")
        .Font.Bold = True
        .Font.Size = 12
    End With

    ' Définir la hauteur de la ligne 1 à 32
    recapSheet.Rows("1:1").RowHeight = 32

    dernièreLigne = 2 ' Initialiser la dernière ligne à 2 pour les données

    ' Enregistrer les données actuelles
    Dim currentWeek As Integer
    currentWeek = planningSheet.Range("Z1").Value
    Set semaineSheet = ThisWorkbook.Sheets("Semaine " & currentWeek)
    semaineSheet.Range("A1:G21").Value = planningSheet.Range("B4:H24").Value

    ' Copier les données de chaque semaine sur la feuille Récapitulatif
    For i = 1 To planningSheet.Range("Z1").Value
        Set semaineSource = ThisWorkbook.Sheets("Semaine " & i).Range("A1:H24") ' Inclure les heures

        ' Copier les heures pour chaque nouvelle semaine
        recapSheet.Range("A" & dernièreLigne & ":A" & dernièreLigne + plageHeures.Rows.Count - 1).Value = plageHeures.Value

        ' Copier les données de la semaine
        Set destination = recapSheet.Range("B" & dernièreLigne)
        destination.Resize(semaineSource.Rows.Count, semaineSource.Columns.Count).Value = semaineSource.Value

        ' Calculer dates de début et de fin de la semaine
        endDate = startDate + 6

        ' Afficher le numéro de semaine et les dates dans la même cellule
        recapSheet.Range("I" & dernièreLigne).Value = "Semaine " & i & vbCrLf & Format(startDate, "dd/mm") & " au " & Format(endDate, "dd/mm")

        ' Centrer et aligner le texte au centre, et le mettre en caractères gras
        With recapSheet.Range("I" & dernièreLigne)
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .Font.Bold = True
        End With

        ' Passer à la semaine suivante
        startDate = endDate + 1

        dernièreLigne = dernièreLigne + plageHeures.Rows.Count + 1 ' Passer à la ligne suivante pour la semaine suivante
    Next i

    ' Appliquer la fonction "Renvoyer à la ligne automatiquement" à toutes les cellules utilisées
    With recapSheet.UsedRange
        .WrapText = True
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
    End With

    ' Mettre la colonne A au format heure
    recapSheet.Columns("A").NumberFormat = "h:mm"

    Exit Sub 

GestionErreur:
    MsgBox "Une erreur est survenue : " & Err.Description 
End Sub




2ème macro pour effacer les informations de l'année précédente 

Sub EffacerToutesLesTâches()
    Dim i As Integer
    Dim recapSheet As Worksheet
    For i = 1 To 52
        ' Efface le contenu des cellules de A1 à G21 pour chaque feuille de semaine
        ThisWorkbook.Sheets("Semaine " & i).Range("A1:G21").ClearContents
        
        ' Efface également le contenu de la feuille Planning
        ThisWorkbook.Sheets("Planning").Range("B4:H24").ClearContents
    Next i
    
    ' Effacer les données de l'onglet Récapitulatif
    Set recapSheet = ThisWorkbook.Sheets("Récapitulatif")
    recapSheet.Cells.ClearContents
    
    MsgBox "Les données de l'année précédente ont été effacées."
End Sub
















Posts les plus consultés de ce blog

Suivi des stocks et inventaire avec alerte

Listes déroulantes multi-sélections

Cases à cocher interactives sur Excel