Excel calendrier interactif
Excel Pros : Créez un calendrier interactif + notes pour planifier rendez-vous, réunions, projets... pour tous les mois de l'année !
🎯 Dans ce tutoriel Excel, je vais vous montrer comment créer un calendrier mensuel interactif et le dupliquer facilement pour les douze mois de l'année.
📅 La mise en forme conditionnelle appliquée sur le calendrier vous signale que vous avez programmé une réunion, ou des rendez-vous sur des dates.
🔗 De plus, grâce à des liens hypertextes pour chaque jour du calendrier, vous pouvez facilement accéder aux détails de chaque note que vous avez enregistrée.
👀 Vous bénéficiez ainsi d'une vue d'ensemble claire et structurée de votre emploi du temps !
👍 Mais ce n'est pas tout, ce calendrier peut être facilement adapté et utilisé pour les années suivantes, vous assurant une organisation continue et sans faille.
🔋 Par ailleurs, même en cas de coupure d'Internet, votre planning reste toujours accessible, vous assurant ainsi une organisation en toutes circonstances. 👍
Voir la vidéo pour découvrir les différentes étapes :
Pour vous entraîner et répéter les étapes de ce tutoriel :
-> Télécharger le fichier Excel utilisé dans la vidéo
👇
Après avoir ouvert le lien,
- vous cliquez sur "Fichier",
- puis sur "Enregistrer sous", ou sur "Créer une copie"
- et sur "Télécharger une copie".
📌↪️→ Code VBA à utiliser pour créer un calendrier interactif par mois
1ère macro à insérer sur une feuille de module :
Sub CreerFeuillesPourLAnnee()
Dim ws As Worksheet
Dim newWs As Worksheet
Dim mois As Integer
Dim i As Integer
' Boucle pour chaque mois de l'année
For mois = 1 To 12
' Ajouter une nouvelle feuille
Set newWs = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
newWs.Name = StrConv(MonthName(mois), vbProperCase)
' Copier les formules de la feuille de base
ThisWorkbook.Sheets("Matrice").Cells.Copy Destination:=newWs.Cells
' Modifier les formules pour le mois courant
newWs.Cells(3, 3).Formula = "=DATE($B$1," & mois & ",1) - WEEKDAY(DATE($B$1," & mois & ",1), 2) + 1"
For i = 4 To 8
newWs.Cells(i, 3).Formula = "=C" & i - 1 & "+7"
Next i
For i = 3 To 8
newWs.Cells(i, 4).Formula = "=C" & i & "+1"
newWs.Cells(i, 5).Formula = "=C" & i & "+2"
newWs.Cells(i, 6).Formula = "=C" & i & "+3"
newWs.Cells(i, 7).Formula = "=C" & i & "+4"
newWs.Cells(i, 8).Formula = "=C" & i & "+5"
newWs.Cells(i, 9).Formula = "=C" & i & "+6"
Next i
' Ajouter le nom de l'onglet dans la cellule A1
newWs.Cells(1, 1).Value = newWs.Name
' Formater les colonnes L et M
With newWs.Range("L3:L33")
.NumberFormat = "hh:mm"
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.ColumnWidth = 7
.WrapText = True
End With
With newWs.Range("M3:M33")
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.ColumnWidth = 36
.WrapText = True
End With
' Ajouter et formater la colonne N
With newWs.Range("N3:N33")
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.ColumnWidth = 31
.WrapText = True
End With
' Définir la hauteur initiale des lignes à 35
newWs.Rows("3:33").RowHeight = 35
Next mois
End Sub
Sub AppliquerMiseEnFormeConditionnelle()
Dim ws As Worksheet
Dim mois As Integer
Dim formule1 As String
Dim formule2 As String
' Boucle pour chaque mois de l'année
For mois = 1 To 12
' Définir le nom de la feuille
Set ws = ThisWorkbook.Sheets(MonthName(mois))
' Construire les formules dans des variables
formule1 = "=ET(RECHERCHEV(JOUR(C3);$K$3:$K$33;1;FAUX)=JOUR(C3);MOIS(C3)=" & mois & ")"
formule2 = "=MOIS(C3)<>MOIS(DATE($B$1;" & mois & ";1))"
' Appliquer les mises en forme conditionnelles
With ws.Range("C3:I8").FormatConditions
.Delete
.Add Type:=xlExpression, Formula1:=formule1
.Item(1).Interior.Color = RGB(255, 204, 204) ' Couleur de remplissage
.Add Type:=xlExpression, Formula1:=formule2
.Item(2).Font.Color = RGB(166, 166, 166) ' Couleur de police
End With
Next mois
End Sub
Sub AjouterLiensHypertextesAvecFormules()
Dim ws As Worksheet
Dim cell As Range
Dim mois As Integer
' Boucle pour chaque mois de l'année
For mois = 1 To 12
' Définir le nom de la feuille
Set ws = ThisWorkbook.Sheets(MonthName(mois))
' Boucle pour chaque cellule du calendrier
For Each cell In ws.Range("C3:I8")
' Vérifier si la cellule contient une date valide et si le mois correspond
If IsDate(cell.Value) And Month(cell.Value) = mois Then
' Construire le lien hypertexte vers la cellule correspondante dans la colonne K
ws.Hyperlinks.Add Anchor:=cell, address:="", subAddress:="'" & ws.Name & "'!K" & (Day(cell.Value) + 2), textToDisplay:=CStr(cell.Value)
End If
Next cell
' Boucle pour chaque cellule de la colonne K
For Each cell In ws.Range("K3:K33")
' Ajouter un lien hypertexte vers la cellule A1 sans afficher de texte
ws.Hyperlinks.Add Anchor:=cell, address:="", subAddress:="'" & ws.Name & "'!A1", textToDisplay:=" "
Next cell
Next mois
End Sub
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
' Faire défiler jusqu'à la cellule sélectionnée
Application.Goto Reference:=Range(Target.subAddress), Scroll:=True
End Sub
2ème macro à insérer dans "Thisworkbook" :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim cell As Range
Dim rng As Range
Set rng = Intersect(Target, Sh.Range("L3:N33"))
If Not rng Is Nothing Then
For Each cell In rng
If cell.WrapText = True Then
cell.Rows.AutoFit
If cell.RowHeight < 35 Then
cell.RowHeight = 35
End If
End If
Next cell
End If
End Sub
Un autre tutoriel qui pourrait vous intéresser :