Bonjour à tous,
J'aimerais avoir la possibilité d'afficher une calendrier qui pourrait
évoluer en affichant mois suivant ou mois précédent. Jusque-là, je sais faire
e n utilisant la barre outils Contrôle et la fonction Contrôle calendrier.
Ensuite, j'aimerais pouvoir cliquer sur une date et que le jour choisi
s'affiche au format date (jj/mm/aaaa) dans une cellule hors du calendrier.
Merci de me renseigner. Peut-être avez-vous une autre solution que la barre
outils Contrôle.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichDenis
Il y a cette barre d'outils publiée ici sous la plume de Michel Perron qui peut être très intéressante :
'-------------------------- Sub AddCalendar() Application.ScreenUpdating = False Call MenuDelete Dim CmdBar As CommandBar, i As Integer Set CmdBar = Application.CommandBars.Add("Calendar", msoBarTop) With CmdBar.Controls.Add(Type:=msoControlComboBox) .Style = msoComboNormal: .Width = 50 For i = 1980 To 2020: .AddItem i: Next i .Text = Year(Date) .OnAction = ThisWorkbook.Name & "!UpDateDays" End With UpDateDays CmdBar.Visible = True Set CmdBar = Nothing End Sub
Private Sub UpDateDays() Application.ScreenUpdating = False Dim m%, a%, j% With Application.CommandBars("Calendar") a = CInt(.Controls(1).Text) Do While .Controls.Count > 1 .Controls(.Controls.Count).Delete Loop For m = 1 To 12 With .Controls.Add(msoControlPopup) .Caption = Format(DateSerial(1, m, 1), "mmmm") For j = 1 To Day(DateSerial(a, m + 1, 0)) With .Controls.Add .Caption = Format(DateSerial(a, m, j), "dd/mm/yy - dddd") .OnAction = ThisWorkbook.Name & "!DateSelect" .Style = msoButtonCaption End With Next j End With Next m End With End Sub
Sub MenuDelete() On Error Resume Next Application.CommandBars("Calendar").Delete End Sub '-------------------------- Private Sub DateSelect() Dim a% With Application a = CInt(.CommandBars("Calendar").Controls(1).Text) ActiveCell.NumberFormat = "dd/mm/yyyy" ActiveCell = DateSerial(a, .Caller(2) - 1, .Caller(1)) End With End Sub '--------------------------
"bibiche" a écrit dans le message de news:
Bonjour à tous, J'aimerais avoir la possibilité d'afficher une calendrier qui pourrait évoluer en affichant mois suivant ou mois précédent. Jusque-là, je sais faire e n utilisant la barre outils Contrôle et la fonction Contrôle calendrier. Ensuite, j'aimerais pouvoir cliquer sur une date et que le jour choisi s'affiche au format date (jj/mm/aaaa) dans une cellule hors du calendrier. Merci de me renseigner. Peut-être avez-vous une autre solution que la barre outils Contrôle.
Il y a cette barre d'outils publiée ici sous la plume de Michel Perron
qui peut être très intéressante :
'--------------------------
Sub AddCalendar()
Application.ScreenUpdating = False
Call MenuDelete
Dim CmdBar As CommandBar, i As Integer
Set CmdBar = Application.CommandBars.Add("Calendar", msoBarTop)
With CmdBar.Controls.Add(Type:=msoControlComboBox)
.Style = msoComboNormal: .Width = 50
For i = 1980 To 2020: .AddItem i: Next i
.Text = Year(Date)
.OnAction = ThisWorkbook.Name & "!UpDateDays"
End With
UpDateDays
CmdBar.Visible = True
Set CmdBar = Nothing
End Sub
Private Sub UpDateDays()
Application.ScreenUpdating = False
Dim m%, a%, j%
With Application.CommandBars("Calendar")
a = CInt(.Controls(1).Text)
Do While .Controls.Count > 1
.Controls(.Controls.Count).Delete
Loop
For m = 1 To 12
With .Controls.Add(msoControlPopup)
.Caption = Format(DateSerial(1, m, 1), "mmmm")
For j = 1 To Day(DateSerial(a, m + 1, 0))
With .Controls.Add
.Caption = Format(DateSerial(a, m, j), "dd/mm/yy - dddd")
.OnAction = ThisWorkbook.Name & "!DateSelect"
.Style = msoButtonCaption
End With
Next j
End With
Next m
End With
End Sub
Sub MenuDelete()
On Error Resume Next
Application.CommandBars("Calendar").Delete
End Sub
'--------------------------
Private Sub DateSelect()
Dim a%
With Application
a = CInt(.CommandBars("Calendar").Controls(1).Text)
ActiveCell.NumberFormat = "dd/mm/yyyy"
ActiveCell = DateSerial(a, .Caller(2) - 1, .Caller(1))
End With
End Sub
'--------------------------
"bibiche" <bibiche@discussions.microsoft.com> a écrit dans le message de news:
2B2FBEB8-B0F7-4757-9856-812FF60C52CE@microsoft.com...
Bonjour à tous,
J'aimerais avoir la possibilité d'afficher une calendrier qui pourrait
évoluer en affichant mois suivant ou mois précédent. Jusque-là, je sais faire
e n utilisant la barre outils Contrôle et la fonction Contrôle calendrier.
Ensuite, j'aimerais pouvoir cliquer sur une date et que le jour choisi
s'affiche au format date (jj/mm/aaaa) dans une cellule hors du calendrier.
Merci de me renseigner. Peut-être avez-vous une autre solution que la barre
outils Contrôle.
Il y a cette barre d'outils publiée ici sous la plume de Michel Perron qui peut être très intéressante :
'-------------------------- Sub AddCalendar() Application.ScreenUpdating = False Call MenuDelete Dim CmdBar As CommandBar, i As Integer Set CmdBar = Application.CommandBars.Add("Calendar", msoBarTop) With CmdBar.Controls.Add(Type:=msoControlComboBox) .Style = msoComboNormal: .Width = 50 For i = 1980 To 2020: .AddItem i: Next i .Text = Year(Date) .OnAction = ThisWorkbook.Name & "!UpDateDays" End With UpDateDays CmdBar.Visible = True Set CmdBar = Nothing End Sub
Private Sub UpDateDays() Application.ScreenUpdating = False Dim m%, a%, j% With Application.CommandBars("Calendar") a = CInt(.Controls(1).Text) Do While .Controls.Count > 1 .Controls(.Controls.Count).Delete Loop For m = 1 To 12 With .Controls.Add(msoControlPopup) .Caption = Format(DateSerial(1, m, 1), "mmmm") For j = 1 To Day(DateSerial(a, m + 1, 0)) With .Controls.Add .Caption = Format(DateSerial(a, m, j), "dd/mm/yy - dddd") .OnAction = ThisWorkbook.Name & "!DateSelect" .Style = msoButtonCaption End With Next j End With Next m End With End Sub
Sub MenuDelete() On Error Resume Next Application.CommandBars("Calendar").Delete End Sub '-------------------------- Private Sub DateSelect() Dim a% With Application a = CInt(.CommandBars("Calendar").Controls(1).Text) ActiveCell.NumberFormat = "dd/mm/yyyy" ActiveCell = DateSerial(a, .Caller(2) - 1, .Caller(1)) End With End Sub '--------------------------
"bibiche" a écrit dans le message de news:
Bonjour à tous, J'aimerais avoir la possibilité d'afficher une calendrier qui pourrait évoluer en affichant mois suivant ou mois précédent. Jusque-là, je sais faire e n utilisant la barre outils Contrôle et la fonction Contrôle calendrier. Ensuite, j'aimerais pouvoir cliquer sur une date et que le jour choisi s'affiche au format date (jj/mm/aaaa) dans une cellule hors du calendrier. Merci de me renseigner. Peut-être avez-vous une autre solution que la barre outils Contrôle.