IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Créer un calendrier dynamiquement et insérer la date choisie dans la cellule active


Sujet :

Contribuez

  1. #1
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut Créer un calendrier dynamiquement et insérer la date choisie dans la cellule active
    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.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    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:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    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

  2. #2
    Membre régulier Avatar de pilounet54
    Homme Profil pro
    retraité
    Inscrit en
    Février 2008
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 489
    Points : 89
    Points
    89
    Par défaut
    c'est de la balle! impeccable comment tu veux que je trouve tous cela moi en te remerciant tres tres vivementà garder trés trés précieusement je pourrai te mettre 10000 points pour cela @+

  3. #3
    Membre averti Avatar de XLRATOR
    Homme Profil pro
    Comptable Analyste
    Inscrit en
    Août 2012
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable Analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 226
    Points : 356
    Points
    356
    Par défaut
    Super Tuto,
    Merci beaucoup,
    Je croie qu'il serait également trés utile d'afficher laforme juste à droite de la céllule active, je vais éssayer de faire.
    Et oui! je suis un être-humain, et c'est de la nature humaine qu'à chaque fois qu'on a quelque chose de bien que l'on en demande plus.

    Merci Silkyroad.

    Cordialement

    Karim
    Entre la canne à pèche et le poisson c'est certainement la canne que je choisirais, puis apprendrais à m'en servir.
    Si on vous souffle une solution au complet c'est que vous n'auriez rien compris du problème.
    Consultez la , de forte chances que votre problème y figure et c'est plus vite que de poser une question et en attendre la réponse.
    FAQ Excel: http://excel.developpez.com/faq/

  4. #4
    Membre averti Avatar de XLRATOR
    Homme Profil pro
    Comptable Analyste
    Inscrit en
    Août 2012
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable Analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 226
    Points : 356
    Points
    356
    Par défaut
    Salut à tous,
    Chose promise, chose due,
    et si on rajoutait ses deux lignes aux propriétés d'usf dans la procédure "UserForm_Et_DataPicker_Dynamique":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            .Properties("Left") = ActiveCell.Left + 100
            .Properties("Top") = ActiveCell.Top + 115
    Voyons voir !

    Cordialement

    Karim
    Entre la canne à pèche et le poisson c'est certainement la canne que je choisirais, puis apprendrais à m'en servir.
    Si on vous souffle une solution au complet c'est que vous n'auriez rien compris du problème.
    Consultez la , de forte chances que votre problème y figure et c'est plus vite que de poser une question et en attendre la réponse.
    FAQ Excel: http://excel.developpez.com/faq/

Discussions similaires

  1. [XL-2003] insérer un formule conditionnelle dans la cellule active
    Par BtjpsspgrW dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/10/2014, 19h28
  2. [Calendrier] Dynamique avec passage de date en paramètre
    Par hannibal974 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 10
    Dernier message: 22/05/2014, 02h26
  3. Réponses: 1
    Dernier message: 18/08/2012, 05h38
  4. [Calendrier] Créer un calendrier dynamique en php
    Par almisuifre dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 11/01/2012, 09h27
  5. Réponses: 2
    Dernier message: 13/12/2011, 11h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo