XL 2019 remplacer DTpicker par calendrier

Blafi

XLDnaute Occasionnel
Bonsoir le forum,
J'ai une appli qui utilise des DTpicker dans des boites de dialogue servant à rentrer divers autres rensignements dans ma base de données.
J'ai voulu installer cette appli sur le PC d'une amie qui est en windows 11 et office 2019 32 bits; (en fait j'ai tout essayé, l'office 2019 64 bits, l'office 2010 32 bits, l'office 2019 32 bits...) et ce PC refuse absolumment de me fournir mes userforms comportatnt des DTpicker, bien que j'ai effectué toutes les opérations habituelles (placer mscomct2.ocx dans Windows\SysVov64 et le déclarer, ajouter le controle DTpicker dans la boite à outils des userform - il apparait d'ailleurs bien dans la boite à outils).

Malheureusement dès que j'essaye d'insérer un DTpicker dans un userform, j'ai systématiquement l'erreur "classfactory ne trouve pas la class demandée", alors que mon appli marche parfaitement sur différents PC en Win 10 et office 2019 32 bits ou 2010 32bits.

Désespérant de trouver une solution après avoir tout essayé, on m'a conseillé, sur ce forum, de remplacer les DTpicker par un calendrier autonome. Outre que cela va nécessiter de refaire toute mon appli, je n'arrive pas bien à comprendre comment je peux insérer un calendrier (beaucoup plus grands que mes DTpicker) dans mon userform qui comporte 4 ou 5 DTpicker.

J'ai cru comprendre qu'il fallait mettre une textbox et lier cette texbox à un calendrier qui s'ouvrirait au moment d'utiliser la texbox.

Quelqu'un pourrait-il m'expliquer comment arriver à faire cette manip et me fournir si possible un fichier exemple d'intégration dans un userform ?

Merci d'avance de votre aide et à bientôt.
 

Blafi

XLDnaute Occasionnel
Merci de cette suggestion. Je vais regarder comment faire.
Je ne peux pas joindre le fichier qui est "énorme", mais je joins une copie du Userform (imposant) dans lequel je souhaite remplacer les DTPicker par un calendrier. Le principe étant que l'utilisateur entre une date qui sera ensuite intégrée à la base de données.
A ++
 

Pièces jointes

  • Mon Userform.jpg
    Mon Userform.jpg
    670.4 KB · Affichages: 72

Dranreb

XLDnaute Barbatruc
Dans l'explorateur de projets, glissez/déposez le nom UFmCalend ou bien UFmCalenS vers le projet de votre classeur.
Mettez des TextBox à la place des DTPicker, par exemple TBxDateInscr et TBxDatePaiem.
et des procédures _Enter :
VB:
Private Sub TBxDateInscr_Enter()
   UFmCalenS.Coupler "Inscription", TBxDateInscr
   End Sub
 Private Sub TBxDatePaiem_Enter()
   UFmCalenS.Coupler "Paiement", TBxDatePaiem
   End Sub
 

Blafi

XLDnaute Occasionnel
Bonjour,
Merci Dranreb pour ces indications et ce bout de procédure.
J'ai essayé dans le fichier joint de mettre un Userform contenant des textbox qui me demandent d'entrer une date.
Mon problème est que lorsque je lance ma procédure userform1.show, le calendrier apparait tout de suite et non pas mon userform. Je voudrais afficher mon userform puis ensuite choisir l'une des texbox pour entrer la date désirée.
Peux-tu me donner les indications nécessaire car dans mon fichier d'origine (avec le gros userform ci-dessus), je dois déjà rentrer d'autres informations avant d'arriver aux textbox d'entrée de date et si j'arrive directement sur le calendrier, ça ne va pas le faire...
Merci d'avance de ton aide et à bientôt.
 

Pièces jointes

  • Essai calendrier.xlsm
    51.8 KB · Affichages: 20

Blafi

XLDnaute Occasionnel
Re bonjour Dranreb,
Désolé de renouveler ma demande, mais je n'arrive pas à ouvrir l'usf (fichier joint ci-dessus) sans que le calendrier ne s'affiche avant.
j'aimerais
1- ouvrir l'usf avec userform1.show
2- travailler avec les différents contrôles qui se trouveront dans l'usf (mon exemple ci-joint n'en comprend pas)
3- au moment d'utiliser le contrôle textbox déclenchant le calendrier, pouvoir y rentrer la date choisie.

Cela marche bien pour la deuxième texbox mais seulement après que le calendier de la texbox 1 soit fermé...
Il y a un truc qui ne marche pas lors de l'ouverture de mon userform qui fait ouvrir avant le calendrier mais je ne comprends pas quoi.

Merci d'avance de votre aide à nouveau et à bientôt.
 

Dranreb

XLDnaute Barbatruc
Bonjour
J'ai été obligé de m'absenter durant 3 semaines, désolé.
Essayez ça s'il n'y a pas d'autre controle activé avant l'affichage de l'UserForm:
VB:
Option Explicit
Private Sub TBxDateInscr_Enter()
   If Not Me.Visible Then Exit Sub
   UFmCalend.Coupler "Inscription", TBxDateInscr
   End Sub
 Private Sub TBxDatePaiem_Enter()
   UFmCalend.Coupler "Paiement", TBxDatePaiem
   End Sub
Private Sub UserForm_Activate()
   If Me.ActiveControl Is TBxDateInscr Then TBxDateInscr_Enter
   End Sub
 

Discussions similaires

Réponses
2
Affichages
525

Statistiques des forums

Discussions
312 115
Messages
2 085 447
Membres
102 889
dernier inscrit
monsef JABBOUR