VBA : Les ActiveX de contrôle des dates



Dans cette article je souhaite expliquer comment utiliser les contrôles ActiveX "Microsoft Monthview "et "Microsoft DTPicker", puisqu'ils ne sont plus fournis en natif dans les versions Excel 2013 et 2016. Dans une première partie nous développerons la récupération et l'installation de ces contrôles, puis leurs utilisations pour contrôler efficacement une saisie de date dans une feuille de calcul ou dans un formulaire VBA.

Installation des contrôles

 

En premier lieu, mettons en place les contrôles "Microsoft Monthview" et "Microsoft DTPicker", le fichier MSCOMCT2.OCX contient les contrôles en question, ainsi que les contrôles UpDown, ScrollBar et Animation. Il faut commencer par télécharger ce fichier, car il n'existe probablement pas sur votre ordinateur (si vous utilisez Excel 2013 ou 2016) vous pouvez le télécharger à l'adresse suivante : http://www.ocxme.com/ocx/files/mscomct2_ocx.html
Vous devez ensuite copier le fichier dans le dossier c:\Windows\system32 si vous avez une version 32 bits de Windows, ou dans le dossier c:\windows\sysWOW64\ en cas de version 64 bits.
Il faut à présent Exécuter le fichier OCX, pour cela activer l'invite de commande en mode AdministrateurUtiliser la commande CMD dans votre commande Démarrer / Exécuter ou dans la zone de recherche selon votre version de Windows. Attention de bien valider la saisie à l'aide des touches SHIFT+ CTRL + Entrée du clavier pour bien basculer l'invite de commande en mode Administrateur.




La ligne de commande à saisir, sera alors :

Pour windows 32 bits : %systemroot%\System32\regsvr32 c:\windows\System32\MSCOMCT2.OCX
Pour windows 64 bits : %systemroot%\SysWoW64\regsvr32 c:\windows\SysWOW64\MSCOMCT2.OCX


Utilisation des contrôles dans Excel : Saisir une date dans une cellule

 

    • Accéder à l'onglet Développeur du Ruban
    • Utilisez la commande Insérer / contrôles ActiveX / Autres contrôles
    • Sélectionnez le contrôle "Microsoft Date and Time Picker control 6.0 (SP6)"
     


    • Dessinez l'objet en glissant + Positionnement et redimensionnement

    Attention la commande Mode Création du ruban Développeur est alors active, pour faire le test de fonctionnement, vous devrez d'abord la désactiver.




    • Quelques réglages de bases possibles grâce au menu contextuel de l'Objet



    • Pour affectez le choix utilisateur à une cellule, utilisez la commande Propriétés du  Menu contextuel



    • Renseignez la propriété LinKedCell

     

    Utilisation des contrôles en VBA : Saisir une date dans un formulaire

     

    Nous allons en premier lieu ajouter les contrôles dans la boite à Outils :



    • Affichez la boîte à outils
    • Faites clic droit pour obtenir le menu contextuel de la boîte
    • Sélectionner alors la commande Contrôle Supplémentaires…


    • Dans la liste des contrôles Choisissez "Microsoft MonthView control 6.0 (SP6)" et "Microsoft Date and Time control 6.0 (SP6)"


     
    • Cliquez sur OK
    • Dessiner les 2 objets MonthView1 et DTPicker1 sur votre formulaire grâce aux nouveaux contrôles apparaissant dans la boîte à outils.



    Ici le code VBA nous montre comment affecter le choix de l'utilisateur dans un contrôle ou l'autre, à une cellule de la feuille de calcul.

    Private Sub CommandButton1_Click()
         Range("a10").Value = DTPicker1.Value
         Range("a11").Value = MonthView1.Value

         UserForm1.Hide
    End Sub



    Merci de votre attention…



    11 commentaires:

    Anonyme a dit…

    bonjour,
    j'ai réussi à faire cela avec Excel 2016/32 Bits sur un Windows 32 bits. Par contre je ne parviens pas à le faire sur un Windows 64 bits avec un Excel 64 bits !!!!

    avez-vous uns solution ?

    cordialement

    anniebadey@orange.fr

    Olivier VBA a dit…

    Bonsoir,

    A priori si le fichier est copié dans le bon dossier c:\windows\sysWOW64\
    et le ligne de commande %systemroot%\SysWoW64\regsvr32 c:\windows\SysWOW64\MSCOMCT2.OCX exécuter correctement il n'y a pas de soucis.

    Bien qu'une fois j'ai vu un blocage pour certains contrôle à cause d'une clé incorrecte dans la base de registre, il faut peut être cherché de ce cote là.

    Regarde çà : https://support.microsoft.com/fr-fr/kb/2793374

    Bon courage

    Olivier

    Unknown a dit…

    Bonjour,

    J'ai suivi scrupuleusement chacune des étapes (2 fois) afin d'installer le contrôle, cependant arrivée à l'invitation de commandes, je reçois un message qui m'indique,

    "Echec du chargement du module c:\windows\System32\MSCOMT2.OCX
    Vérifiez que le fichier binaire est stocké à l'emplacement désigné par le chemin d'accès spécifié ou déboguez le pour rechercher d'éventuels problèmes de fichier .DLL binaire ou dépendants.
    Le module spécifié est introuvable"

    Pouvez vous m'aider ?

    Bien cordialement
    Mathilde

    Unknown a dit…

    Bonsoir,

    Alors là ... super. Depuis le temps que je galère pour retrouver mes DTPICKERS un seul mot me vient! MERCI

    Unknown a dit…

    Grand merci pour ce tutoriel.
    Cordialement,

    Anonyme a dit…

    Merci pour cette astuce qui a très bien fonctionné sur ma config : Win10/64 et Excel365/64 !
    Fred

    Anonyme a dit…

    Bonjour, Je cherche a faire la meme chose sur un powerpoint.
    J'ai tout fais comme expliqué mais je ne sais pas comment recuperer la valeur du UserForm dans un Label.
    Pouvez vous m'aider?
    Merci

    Unknown a dit…

    Bonjour,
    Malheureusement ce contrôle ne fonctionne pas sous un Microsoft office 64 bits, ce dernier n'est pas et ne sera pas optimisé pour VBA. Si vous souhaitez utiliser ce contrôle il vous faudra réinstaller office en 32 bits.

    Cordialement.

    Anonyme a dit…

    Bonjour et merci pour votre article, cela m'a bien aidé.
    Bonne continuation à vous et bonnes fêtes de fin d'année 2017 ! :-)

    Unknown a dit…

    Super Tutorial, clair, précis, et efficace.
    Fonctionne parfaitement avec Excel 2007 sous Vista 32 bits
    Merci mille fois.

    Anonyme a dit…

    Fonctionne impeccablement bien avec Office 2016 en version 32 et 64 Bits.
    Merci beaucoup!

    Enregistrer un commentaire

    top