Mise en forme calendrier

Bonjour,

J'essai d'automatiser la mise en forme d'un calendrier à partir d'un planning d'équipe.

Le fichier est en PJ, j'ai un bouton "Planning Consultant" qui va ouvrir mon Userform.

Dans le UserForm, je dois sélectionner le trigramme d'un consultant à l'aide d'une liste déroulante, et l'année souhaité.

Le but étant d'avoir un calendrier lisible rapidement avec une visu sur un an.

Le userform va créer un nouveau fichier contenant un calendrier avec la mise en forme souhaité.

Je bloque sur la copie du contenu des cellules du fichier de base sur mon nouveau fichier.

Les critères pour savoir quoi copié sont le trigramme de I8 à X8 du consultant qui va définir la colonne à copier et la date dans la colonne H.

Tous le contenu de la colonne cible sera a copié en gardant la mise en forme dans la 4 ème colonne du mois sur le fichier crée.

C'est pas forcément parlant comme ça mais en regardant le fichier je pense que ça sera plus clair.

Si une ame charitable peu jeter un oeil, je vous devrait une reconnaissance éternelle :)

J'ai essayé pas mal de chose mais rien à faire. un exemple de code testé mais infructueux. Du coup j'ai laissé dans le code du UserForm uniquement tous ce qui fonctionne bien.

Merci

    ' Appeler la procédure pour copier les données depuis l'onglet "Planning"
    CopierDonneesDuMois ThisWorkbook.Sheets("Planning"), ws, trigramme
End Sub

' Procédure pour copier les données du mois en cours depuis l'onglet "Planning"
Sub CopierDonneesDuMois(wsPlanning As Worksheet, wsCalendrier As Worksheet, trigramme As String)
    Dim currentMonth As Integer
    Dim currentDay As Integer
    Dim planningDate As String
    Dim targetRange As range
    Dim foundCell As range

    ' Boucle pour parcourir chaque mois
    For currentMonth = 1 To 12
        ' Boucle pour copier les données pour chaque jour du mois
        For currentDay = 3 To 33 ' Ajustez les plages de cellules selon votre configuration
            ' Recherche de la date dans la colonne H de l'onglet "Planning"
            Dim dateString As String
            dateString = wsCalendrier.Cells(currentDay, (currentMonth - 1) * 4 + 1).Value
            Dim parts() As String
            parts = Split(dateString, " ")
              If UBound(parts) = 2 Then
                Dim day As Integer
                Dim mois As Integer
                Dim year As Integer
                day = Val(parts(1))
                mois = month(dateValue(parts(2) & " 1"))
                year = Val(parts(3))
    ' Créer une date à partir des éléments extraits
                planningDate = DateSerial(year, mois, day)

                Set foundCell = wsPlanning.Columns(8).Find(planningDate, wsPlanning.Cells(2, 8))

                If Not foundCell Is Nothing Then
                    ' Copier les données du mois actuel depuis l'onglet "Planning" en conservant la mise en forme
                    Set targetRange = wsCalendrier.Cells(currentDay, (currentMonth) * 4 + 1)
                    wsPlanning.Cells(foundCell.Row, trigramme).Copy
                    targetRange.PasteSpecial xlPasteAll
                End If
            End If
        Next currentDay
    Next currentMonth
End Sub
14testplanning.xlsm (101.26 Ko)

Bonjour,

Essayez ceci,

Avant de faire le test, allez dans le module 2, dans la macro "Complements", remplacez le nom du fichier "Planning.xlsm" par le nom de votre fichier (2 endroits).

Après exécution de la macro, les feuilles "Calendrier_Consultant" ne seront visibles qu'après avoir fermer le "Userform".

6planning.xlsm (91.85 Ko)

Cdlt

Merci beaucoup pour le coup de main, j'ai procéder un petit peu différemment mais je me suis aidé de votre solution pour arriver au résultat.

Merci :)

Rechercher des sujets similaires à "mise forme calendrier"