| auteur : SilkyRoad | Vba |
Sub Test ()
Dim Annee As Integer, Semaine As Integer, NumJour As Integer
Annee = 2007
Semaine = 43
NumJour = 0
MsgBox Evaluate (" TEXT(DATE( " & Annee & " ,1,3)-WEEKDAY(DATE( " & Annee & _
" ,1,3))-5+(7* " & Semaine & " )+ " & NumJour & " , " " dd/mm/yyyy " " ) " )
End Sub
|
|
| auteur : SilkyRoad |
Cette procédure est facilement intégrable à un évènement de la feuille de
calcul ou à une barre d'outils personnelle: La date sélectionnée est automatiquement insérée dans la cellule active.
Vous devez disposer de l'ocx MSCOMCT2.ocx pour utiliser les contrôles MonthView et DataPicker.
Ce premier exemple utilise le contrôle Monthview:
Enlevez le commentaire sur cette ligne '.insertlines j + 3, " Unload Me" pour
que la fenêtre se referme automatiquement après l'insertion de la date.
Vba |
Option Explicit
Dim Usf As Object
Sub LancementProcedure ()
Dim X As Object
Dim NomMonthView As String
NomMonthView = " MonthView1 "
Set X = UserForm_Et_MonthView_Dynamique (NomMonthView)
X. Show
ThisWorkbook. VBProject . VBComponents . Remove Usf
Set Usf = Nothing
End Sub
Function UserForm_Et_MonthView_Dynamique (NomObjet As String ) As Object
Dim Obj As Object
Dim j As Integer
Set Usf = ThisWorkbook. VBProject . VBComponents . Add (3 )
With Usf
. Properties (" Caption " ) = " Mon calendrier "
. Properties (" Width " ) = 135
. Properties (" Height " ) = 140
End With
Set Obj = Usf. Designer . Controls . Add (" MSComCtl2.MonthView.2 " )
With Obj
. Left = 0 : . Top = 0 : . Width = 150 : . Height = 140
. Name = NomObjet
. ForeColor = & HC000C0
. TitleBackColor = & HC000C0
End With
With Usf. CodeModule
j = . CountOfLines
. insertlines j + 1 , " Sub " & NomObjet & " _DateClick(ByVal DateClicked As Date) "
. insertlines j + 2 , " ActiveCell = DateClicked "
. insertlines j + 4 , " End Sub "
End With
VBA. UserForms . Add (Usf. Name )
Set UserForm_Et_MonthView_Dynamique = UserForms (UserForms. Count - 1 )
End Function
|
Voici une deuxième procédure qui utilise le contrôle DataPicker:
Vba |
Option Explicit
Dim Usf As Object
Sub LancementProcedure ()
Dim X As Object
Dim NomdtPicker As String
NomdtPicker = " DtPicker1 "
Set X = UserForm_Et_DataPicker_Dynamique (NomdtPicker)
X. Show
ThisWorkbook. VBProject . VBComponents . Remove Usf
Set Usf = Nothing
End Sub
Function UserForm_Et_DataPicker_Dynamique (NomObjet As String ) As Object
Dim Obj As Object
Dim j As Integer
Set Usf = ThisWorkbook. VBProject . VBComponents . Add (3 )
With Usf
. Properties (" Caption " ) = " Mon calendrier "
. Properties (" Width " ) = 130
. Properties (" Height " ) = 40
End With
Set Obj = Usf. Designer . Controls . Add (" MSComCtl2.DTPicker.2 " )
With Obj
. Left = 0 : . Top = 0 : . Width = 130 : . Height = 20
. Name = NomObjet
. CalendarBackColor = & HFF00FF
End With
With Usf. CodeModule
j = . CountOfLines
. insertlines j + 1 , " Sub " & NomObjet & " _Change() "
. insertlines j + 2 , " ActiveCell.Value = Format(DateSerial(Year( " _
& NomObjet & " ), Month( " & NomObjet & " ), Day( " _
& NomObjet & " )), " & Chr (34 ) & " dd mmmm yyyy " & Chr (34 ) & " ) "
. insertlines j + 4 , " End Sub "
End With
VBA. UserForms . Add (Usf. Name )
Set UserForm_Et_DataPicker_Dynamique = UserForms (UserForms. Count - 1 )
End Function
|
|
| auteur : Michel_M |
La procédure suivante permet obtenir l'heure universelle, c'est-à-dire au méridien de Greenwich.
Vba |
Sub Donner_HeureGMT ()
Dim dtTime As Object
Set dtTime = CreateObject (" Wbemscripting.swbemdatetime " )
dtTime. setvardate (FormatDateTime (Time ))
MsgBox " heure GMT: " & dtTime. getvardate (False )
End Sub
|
|
| auteur : SilkyRoad |
Par exemple, la date 04/01/2005 renvoie la valeur 2 alors qu'il s'agit de la semaine 1.
En Europe, la première semaine doit contenir au moins 4 jours.
Par contre, la fonction NO.SEMAINE est basé sur la norme US (La semaine 1 commence le 1er janvier). Cette différence de norme
donne donc un résultat erroné pour les européens si le premier jeudi de l'année tombe après le 4 janvier.
Vous pouvez utiliser la fonction suivante pour régler ce problème:
=ENT(MOD(ENT((A1-2)/7)+0,6;52+5/28))+1
|
| auteur : SilkyRoad |
TimeStamp est un format standard représentant un nombre de secondes écoulées depuis le 1er janvier 1970.
Vba |
Sub Test_V1 ()
MsgBox Timestamp_To_Date (1193499779 )
End Sub
Function Timestamp_To_Date (TimeStamp As Long) As Date
Timestamp_To_Date = DateAdd (" s " , TimeStamp, CDate (" 01/01/1970 " ))
End Function
|
Et si vous souhaitez transformer une date classique en TimeStamp:
Vba |
Sub Test_V2 ()
MsgBox Date_To_StampTime (CDate (" 27/10/2007 15:42:59 " ))
End Sub
Function Date_To_StampTime (DateLocale As Date ) As Long
Date_To_StampTime = DateDiff (" s " , CDate (" 01/01/1970 " ), DateLocale)
End Function
|
|
| auteur : Maxence Hubiche |
Le module DateTime contient les procédures et les propriétés adoptées dans les opérations portant
sur la date et l'heure. Ces constantes peuvent être utilisées partout dans votre code.
Consultez le tutoriel de Maxence Hubiche: Les Fonctions Date/Heure
|
| auteur : Michel Gaboly |
Avec l'année en A1, et le mois en B1, utilisez la fonction :
=DATE(A1;B1 + 1;1) + MOD(3 - JOURSEM(DATE(A1;B1 + 1;1);2);7) - 7
Description de la formule:
DATE(A1;B1 + 1;1)
Donne le 1er du mois suivant.
JOURSEM(Réf;2)
Donne le numéro de jour dans la semaine, en commençant par le lundi.
MOD()
Est la fonction modulo, qui renvoie le reste entier d'une division. Le 3 utilisé comme
1er argument de MOD() correspond au numéro de jour du mercredi dans la semaine.
=DATE(A1;B1 + 1;1) + MOD(3 - JOURSEM(DATE(A1;B1 + 1;1);2);7)
Renvoie le premier mercredi du mois suivant. En ôtant 7, on a le dernier mercredi du mois de référence.
|
Consultez les autres F.A.Q's
Les sources présentés sur cette pages sont libre de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2008
Developpez LLC. Tout droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérets.
Cette page est déposée à la SACD.
|