Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo

precedent    sommaire    suivant   


Comment retrouver par macro le Lundi correspondant à un numéro de semaine spécifié ?
auteur : SilkyRoad
Vba

Sub Test()
Dim Annee As Integer, Semaine As Integer, NumJour As Integer
 
Annee = 2007
Semaine = 43
NumJour = 0 ' 0=Lundi, 1=Mardi ...
 
MsgBox Evaluate("TEXT(DATE(" & Annee & ",1,3)-WEEKDAY(DATE(" & Annee & _
    ",1,3))-5+(7*" & Semaine & ")+" & NumJour & ",""dd/mm/yyyy"")")
End Sub

Comment créer un calendrier dynamiquement et insérer la date sélectionnée dans la cellule active ?
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"
    'Lance la procédure de création du userform et du contrôle MonthView
    Set X = UserForm_Et_MonthView_Dynamique(NomMonthView)
    
    'Affichage userform
    X.Show
    
    'Suppression du userform après la fermeture
    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
    'Création UserForm
    Set Usf = ThisWorkbook.VBProject.VBComponents.Add(3)
    With Usf
        .Properties("Caption") = "Mon calendrier"
        .Properties("Width") = 135
        .Properties("Height") = 140
    End With
    
    'Création du contrôle MonthView
    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
    
    
    'Ajout de la procédure évènementielle DateClick du contrôle MonthView
    With Usf.CodeModule
        j = .CountOfLines
        .insertlines j + 1, "Sub " & NomObjet & "_DateClick(ByVal DateClicked As Date)"
        'Insère la date dans la cellule active
        .insertlines j + 2, "   ActiveCell = DateClicked"
        'Option pour refermer l'userform après l'insertion de la date.
        '.insertlines j + 3, "   Unload Me"
        .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) & ")"
        'Option pour refermer l'userform après l'insertion de la date.
        '.insertlines j + 3, "   Unload Me"
        .insertlines j + 4, "End Sub"
    End With
    
    VBA.UserForms.Add (Usf.Name)
    Set UserForm_Et_DataPicker_Dynamique = UserForms(UserForms.Count - 1)
  
End Function

Comment obtenir l'heure universelle de Greenwich ?
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

Pourquoi la fonction NO.SEMAINE renvoie parfois une valeur erronée ?
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



Comment convertir un TimeStamp UNIX en date locale ?
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

Comment utiliser les fonctions Date/Heure (module DateTime) ?
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



Comment retrouver le dernier mercredi d'un mois ?
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.



precedent    sommaire    suivant   

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.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com