Comment créer un calendrier dans votre feuille de calcul Excel avec le script VBA

Partage maintenant:

Excel a un large éventail d'utilisations. Dans cet article, nous allons vous montrer comment créer un calendrier dans une feuille de calcul à l'aide d'une macro.

À l'exception du stockage et de l'analyse des données dans votre Excel, vous pouvez également l'utiliser pour terminer d'autres tâches. Par exemple, vous pouvez collecter des informations à l'aide d'Excel ou vous pouvez noter votre planification dans la feuille de calcul. Aujourd'hui, nous avons trouvé un nouvel usage. Vous pouvez créer un calendrier dans une feuille de calcul. Vous pouvez voir l'effet dans l'image ci-dessous.Agenda

Vous pouvez saisir certaines tâches dans ce calendrier. Et la fonction est la même qu'un mémorandum. En utilisant Excel, ces tâches seront plus claires. Suivez maintenant les étapes de la partie suivante et voyez comment cela fonctionne.

Créer un calendrier

  1. Appuyez sur le bouton "Alt + F11" sur le clavier pour ouvrir la feuille de calcul.
  2. Et puis insérez un nouveau module dans l'éditeur Visual Basic.
  3. Copiez maintenant les codes suivants dans le nouveau module :
Sub Create_Monthly_Calender()
    Dim firstweekday As Integer, EndDay As Integer, _
    FirstWeekColumnIndex As Integer, AssignmentDate As Integer, _
    FirstCountNumber As Integer, SecondCountNumber As Integer, _
    LastDay As Range, objRange As Range, RowIndexofLastday As Integer, FirstCountforTargetRange As Integer, SecondCountforTargetRange As Integer

    firstday = InputBox("Input the year, month and the first day with this format: year/month/day")
    If firstday = "" Then Exit Sub


    Range("A1:G1").Merge
    Range("A1") = Year(firstday) & "." & Month(firstday)
    Range("A2") = "Sunday"
    Range("A2").AutoFill Destination:=Range("A2:G2"), Type:=xlFillDefault
    firstweekday = Application.WorksheetFunction.Weekday(firstday)
    Cells(3, firstweekday) = 1

    Select Case Month(firstday)
        Case 1, 3, 5, 7, 8, 10, 12
            EndDay = 31
        Case 4, 6, 9, 11
            EndDay = 30
        Case 2
            If (Year(firstday) Mod 4) = 0 And (Year(firstday) Mod 100) <> 0 Or ((Year(firstday) Mod 400) = 0) Then
                EndDay = 29
            Else
                EndDay = 28
            End If
    End Select

    For FirstWeekColumnIndex = 1 To (7 - firstweekday)
        Cells(3, firstweekday).Offset(0, FirstWeekColumnIndex) = Cells(3, firstweekday).Offset(0, FirstWeekColumnIndex - 1) + 1
    Next FirstWeekColumnIndex

    AssignmentDate = Range("G3") + 1
    For FirstCountNumber = 2 To 10 Step 2
        For SecondCountNumber = 0 To 6
            Cells(3, firstweekday).Offset(FirstCountNumber, 1 - firstweekday + SecondCountNumber) = AssignmentDate
            AssignmentDate = AssignmentDate + 1
            If Cells(3, firstweekday).Offset(FirstCountNumber, 1 - firstweekday + SecondCountNumber) = EndDay Then
                Exit For
            End If
        Next SecondCountNumber
        If Cells(3, firstweekday).Offset(FirstCountNumber, 1 - firstweekday + SecondCountNumber) = EndDay Then
            Exit For
        End If
    Next FirstCountNumber

    ’set format for the range
    With Range("A1")
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Font.Size = 16
        .Font.Bold = True
        .Interior.Color = RGB(196, 202, 201)
    End With

    With Range("A2:G2")
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Font.Bold = True
    End With

    For Each LastDay In ActiveSheet.UsedRange
        If LastDay = EndDay Then
            RowIndexofLastday = LastDay.Row
        End If
    Next

    For FirstCountforTargetRange = RowIndexofLastday To 3 Step -2
            With Range("A" & FirstCountforTargetRange, "G" & FirstCountforTargetRange)
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
                .RowHeight = 20
            End With
    Next FirstCountforTargetRange

        For SecondCountforTargetRange = RowIndexofLastday + 1 To 4 Step -2
            With Range("A" & SecondCountforTargetRange, "G" & SecondCountforTargetRange)
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
                .Font.Bold = True
                .RowHeight = 50
                .ColumnWidth = 12
            End With
    Next SecondCountforTargetRange

    Set objRange = Range("A1", "G" & (RowIndexofLastday + 1))
    With objRange.Borders
        .Color = vbBlack
        .Weight = xlThin
        .LineStyle = xlContinuous
    End With

    ActiveWindow.DisplayGridlines = False
    Cells(3, firstweekday).Offset(1, 0).Select
End Sub

C'est donc une macro très solitaire. Mais vous pouvez l'utiliser directement. Et vous n'avez pas besoin de le modifier.

  1. Appuyez ensuite sur la touche "F5" du clavier.
  2. Dans la fenêtre contextuelle, saisissez la date du premier jour au format "Année/Mois/Jour". Le "Jour" peut être n'importe quel jour de ce mois, ici nous entrerons "1".Date d'entrée
  3. Et puis cliquez sur le bouton "OK". Ensuite, vous reviendrez à l'éditeur. Afin de vérifier le résultat, vous pouvez revenir à la feuille de travail.

Le calendrier est déjà apparu dans la feuille de calcul. Et le curseur sera positionné sur la cellule vide du premier jour.Résultat

En revanche, si vous n'êtes pas satisfait du format des cellules, vous pouvez également modifier les codes selon votre préférence. Avec ce calendrier, vous êtes sûr d'améliorer votre efficacité au travail.

Excel n'est pas moins sujet à l'échec

Si vous utilisez fréquemment Excel, vous constaterez sans doute qu'il arrive souvent qu'il se corrompe. La plupart du temps, il suffit de fermer puis de redémarrer Excel pour résoudre le problème. Cependant, il arrive parfois que la corruption soit plus grave. Dans ce cas, vous pouvez utiliser notre outil performant pour… réparer l'erreur de données Excel xlsxGrâce à cet outil, la quasi-totalité des erreurs peuvent être résolues facilement.

Introduction de l'auteur:

Anna Ma est une experte en récupération de données dans DataNumen, Inc., qui est le leader mondial des technologies de récupération de données, y compris réparer le fichier Word docx et produits logiciels de réparation Outlook. Pour plus d'informations, visitez www.datanumen.com

Partage maintenant:

Les commentaires sont fermés.