espérant une réponse constructive...
sauriez-vous comment afficher sous VBA un champ qui apparait vide, mais qui
en fait sert à saisir des heures sous forme "20:30". De plus, il me faudrait
pouvoir les saisir en ne tapant que les chiffre, sans les ":" Est-ce
possible ?...
De plus, est-il possible de passer d'un tel champ à l'autre avec le clavier
?...
Merci par avance,
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
Bonjour Oliv,
Excel à l'instar du logiciel Access ne possède pas de masque de saisie. Pour déterminer l'apparence que peut prendre une date, tu as la possibilité de définir le format de ton choix à partir de la barre des menus / format / cellules / onglet nombre / Personnaliser ....
Cependant pour faciliter la saisie, tu peux utiliser ces procédures qui ajouteront une barre d'outil à partir de laquelle il te sera loisible d'utiliser pour insérer la ou les dates désirées. Pour ce faire, tu délectionnes ta cellule, tu la formate selon ton désir et tu utilises la barre pour déterminer la valeur à insérer.
Ce qui suit a été élaboré par Michel Perron.
Tu copies ce qui suit dans un module standard, et tu appelles la procédure :AddCalendar
'------------------------- 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 = DateSerial(a, .Caller(2) - 1, .Caller(1)) End With End Sub '-------------------------
Sur le site de Disciplus (Miisange) ou sur le site de Frédéric Sigonneau, tu as d'autres alternatives
Salutations!
"Oliv'" a écrit dans le message de news: 42128b99$0$17268$ Bonjour,
espérant une réponse constructive... sauriez-vous comment afficher sous VBA un champ qui apparait vide, mais qui en fait sert à saisir des heures sous forme "20:30". De plus, il me faudrait pouvoir les saisir en ne tapant que les chiffre, sans les ":" Est-ce possible ?... De plus, est-il possible de passer d'un tel champ à l'autre avec le clavier ?... Merci par avance,
Oliv'
Bonjour Oliv,
Excel à l'instar du logiciel Access ne possède pas de masque de saisie. Pour déterminer l'apparence que peut prendre une
date, tu as la possibilité de définir le format de ton choix à partir de la barre des menus / format / cellules / onglet
nombre / Personnaliser ....
Cependant pour faciliter la saisie, tu peux utiliser ces procédures qui ajouteront une barre d'outil à partir de
laquelle il te sera loisible d'utiliser pour insérer la ou les dates désirées. Pour ce faire, tu délectionnes ta
cellule, tu la formate selon ton désir et tu utilises la barre pour déterminer la valeur à insérer.
Ce qui suit a été élaboré par Michel Perron.
Tu copies ce qui suit dans un module standard, et tu appelles la procédure :AddCalendar
'-------------------------
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 = DateSerial(a, .Caller(2) - 1, .Caller(1))
End With
End Sub
'-------------------------
Sur le site de Disciplus (Miisange) ou sur le site de Frédéric Sigonneau, tu as d'autres alternatives
Salutations!
"Oliv'" <choco2x@free.fr> a écrit dans le message de news: 42128b99$0$17268$8fcfb975@news.wanadoo.fr...
Bonjour,
espérant une réponse constructive...
sauriez-vous comment afficher sous VBA un champ qui apparait vide, mais qui
en fait sert à saisir des heures sous forme "20:30". De plus, il me faudrait
pouvoir les saisir en ne tapant que les chiffre, sans les ":" Est-ce
possible ?...
De plus, est-il possible de passer d'un tel champ à l'autre avec le clavier
?...
Merci par avance,
Excel à l'instar du logiciel Access ne possède pas de masque de saisie. Pour déterminer l'apparence que peut prendre une date, tu as la possibilité de définir le format de ton choix à partir de la barre des menus / format / cellules / onglet nombre / Personnaliser ....
Cependant pour faciliter la saisie, tu peux utiliser ces procédures qui ajouteront une barre d'outil à partir de laquelle il te sera loisible d'utiliser pour insérer la ou les dates désirées. Pour ce faire, tu délectionnes ta cellule, tu la formate selon ton désir et tu utilises la barre pour déterminer la valeur à insérer.
Ce qui suit a été élaboré par Michel Perron.
Tu copies ce qui suit dans un module standard, et tu appelles la procédure :AddCalendar
'------------------------- 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 = DateSerial(a, .Caller(2) - 1, .Caller(1)) End With End Sub '-------------------------
Sur le site de Disciplus (Miisange) ou sur le site de Frédéric Sigonneau, tu as d'autres alternatives
Salutations!
"Oliv'" a écrit dans le message de news: 42128b99$0$17268$ Bonjour,
espérant une réponse constructive... sauriez-vous comment afficher sous VBA un champ qui apparait vide, mais qui en fait sert à saisir des heures sous forme "20:30". De plus, il me faudrait pouvoir les saisir en ne tapant que les chiffre, sans les ":" Est-ce possible ?... De plus, est-il possible de passer d'un tel champ à l'autre avec le clavier ?... Merci par avance,