Microsoft 365 DatePicker dans Userform pour Excel365 ?

  • Initiateur de la discussion Initiateur de la discussion F22Raptor
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F22Raptor

XLDnaute Impliqué
Bonjour à tous,

J'utilise le DatePicker sous Windows10 + Excel 2016, et notre IT nous fait tester des postes W11+Excel365 pour migration dans quelques semaines.

Il fallait déjà, sous Excel 2016, importer MSCOMCT2.OCX et cocher le contrôle sous VBA, mais une fois ces désagréments réglés, ça marche très bien dans mon UserForm VBA.

Par contre, rien du tout sous Excel 365 : le contrôle à disparu du Userform (et j'ai des messages d'erreur sur mon code, évidemment).
L'IT a ajouté MSCOMCT2.OCX dans C:\Windows\SysWOW64 , mais ça ne marche pas mieux, et je ne la vois pas dans les références/contrôles supplémentaires de l'éditeur VBA.

Je soupçonne que la compatibilité soit terminée en 64bits sous W11/Excel365 ...
Vous confirmez ? ... ou pas ?

(c'est quand même terrible cette tendance de MS à ne pas corriger les bugs, en changeant de version, et à décommissionner des fonctionnalités)
 
Solution
Bonjour à tous.
La question est encore, et toujours est-il bien utile de se compliquer la vie pour entrer une date dans une zone de texte ?
Bonjour @valtraze
avec le calendar click -->affichage--> selection et recommence si tu t'es trompé de selection
utilisation de la souris

sans calendar
pour les pc portables
1°Sans pavé ver Maj-->taper verMaj-->taper la date avec pavé haut --> éventuelles reprise ou effacement complet pour corriger)
utilisation de la souris et clavier et ou pavé numérique
2° les autre quasi pareil sans le( pavé haut) pavé num directe


autres avantages avantage d'un calendrier
1° supposons que je veuille taper la date du mardi âpres le lundi de pâque
ben j'ai intérêt a avoir un calendrier...
Bonjour à tous,

J'utilise le DatePicker sous Windows10 + Excel 2016, et notre IT nous fait tester des postes W11+Excel365 pour migration dans quelques semaines.

Il fallait déjà, sous Excel 2016, importer MSCOMCT2.OCX et cocher le contrôle sous VBA, mais une fois ces désagréments réglés, ça marche très bien dans mon UserForm VBA.

Par contre, rien du tout sous Excel 365 : le contrôle à disparu du Userform (et j'ai des messages d'erreur sur mon code, évidemment).
L'IT a ajouté MSCOMCT2.OCX dans C:\Windows\SysWOW64 , mais ça ne marche pas mieux, et je ne la vois pas dans les références/contrôles supplémentaires de l'éditeur VBA.

Je soupçonne que la compatibilité soit terminée en 64bits sous W11/Excel365 ...
Vous confirmez ? ... ou pas ?

(c'est quand même terrible cette tendance de MS à ne pas corriger les bugs, en changeant de version, et à décommissionner des fonctionnalités)
Bonjour F22Raptor,
je te confirme, plus de compatibilité, 365 est en 64 bits nativement et donc plus de compatibilité avec les programmes en 32 bits.... Et bien sûr, pas de solution de remplacement, sauf à jouer avec tes petits doigts sur ton clavier et créer toi-même ton datepicker via un USF !
Ou alors, utiliser MonthCalendar de l'API de Windows, mais à coder, pas simple !!!

Perso, j'avais trouvé il y a fort longtemps un USF tout fait, très simple à utiliser (même moi, j'y suis arrivé !!!), il suffit de l'appeler dans ton code par Ta_Variable_Date = CalendarForm.GetDate et ... c'est tout ! L'USF est très documenté, tu peux lui passer des variables, changer l'aspect etc... etc...
Je ne sais plus trop ce que j'en ai fait, mais l'auteur s'appelle Trevor Eyre, une petite recherche sur le net devrait te permettre de le retrouver !
 
Bonjour F22Raptor,
je te confirme, plus de compatibilité, 365 est en 64 bits nativement et donc plus de compatibilité avec les programmes en 32 bits.... Et bien sûr, pas de solution de remplacement, sauf à jouer avec tes petits doigts sur ton clavier et créer toi-même ton datepicker via un USF !
Ou alors, utiliser MonthCalendar de l'API de Windows, mais à coder, pas simple !!!

Perso, j'avais trouvé il y a fort longtemps un USF tout fait, très simple à utiliser (même moi, j'y suis arrivé !!!), il suffit de l'appeler dans ton code par Ta_Variable_Date = CalendarForm.GetDate et ... c'est tout ! L'USF est très documenté, tu peux lui passer des variables, changer l'aspect etc... etc...
Je ne sais plus trop ce que j'en ai fait, mais l'auteur s'appelle Trevor Eyre, une petite recherche sur le net devrait te permettre de le retrouver !
Merci ! Bon, ben on va s'y coller ! 😀
 
Bonjour à tous,
je te confirme, plus de compatibilité, 365 est en 64 bits nativement et donc plus de compatibilité avec les programmes en 32 bits....
Oui et non Vous avez la possibilité de choisir la version lors de l'installation. Si vous ne faites pas le choix la version 64bits est définie par défaut.
1754510418671.png
 
Dans les Ressources XLD voyez le calendrier de patricktoulon.
Salut,
pas facile à s'y retrouver dans les ressources. Le calendrier de Patricktoulon se trouve ici , il prend en compte plusieurs langues, les couleurs sont modifiables et il fonctionne en 32 bits, 64 bits et sous MAC.
CalendarPatrickT.gif


Question : est-il possible de le mettre sous forme de complément ?

Nullosse
 
Dernière édition:
Bonjour à tous.
La question est encore, et toujours est-il bien utile de se compliquer la vie pour entrer une date dans une zone de texte ?
Bonjour @valtraze
avec le calendar click -->affichage--> selection et recommence si tu t'es trompé de selection
utilisation de la souris

sans calendar
pour les pc portables
1°Sans pavé ver Maj-->taper verMaj-->taper la date avec pavé haut --> éventuelles reprise ou effacement complet pour corriger)
utilisation de la souris et clavier et ou pavé numérique
2° les autre quasi pareil sans le( pavé haut) pavé num directe


autres avantages avantage d'un calendrier
1° supposons que je veuille taper la date du mardi âpres le lundi de pâque
ben j'ai intérêt a avoir un calendrier dans la tête à jour chaque année ( c'est pas mon cas)
le calendar lui te la donne

2° j'ai une date dans un textbox et je veux changer le jour
je selectionne tout ou la partie jour _> et je tape le nouveau jour
donc souris --> +selection partielle-->taper
le calendar lui s'ouvre sur le mois de la date inscrite dans l'appelant donc click->click-> terminé


je ne parle même pas des nombreux format et regions dispos

pour la question "ergonomie" si on fait le calcul ...........


@nullosse
en voilà une idée faut voir
vu que ce userform calendar est utiliser comme interface et module classe en même temps
le mettre dans un complément ferait un subclassing
et donc certainement provoquerait des event repeat intempestifs
sauf , gestion simple avec tag de l'appelant si pas utilisé (j'avais fait quelque essais )
 
@nullosse
en voilà une idée faut voir
vu que ce userform calendar est utiliser comme interface et module classe en même temps
le mettre dans un complément ferait un subclassing
et donc certainement provoquerait des event repeat intempestifs
sauf , gestion simple avec tag de l'appelant si pas utilisé (j'avais fait quelque essais )
Salut,
j'ai réussi à créer un complément Excel à partir de ton calendrier de façon simple. Je ne sais pas si il y a des effets de bord et si cela fonctionne partout, en tout cas cela fonctionne chez moi en Excel 2016.
J'ai créé un fichier complément CalendrierPatrickT.xlam que j'ai mis dans C:\Users\<moncompte>\AppData\Roaming\Microsoft\AddIns
Dedans j'ai mis le userform calendar
J'ai créé un module ModuleCal dans le xlam avec comme code :
VB:
Public Function CalShowX(Optional objX As Variant, Optional Side As Long = 2, Optional top As Long = 0, Optional optionRegionale As Long = 1000)
CalShowX = Calendar.ShowX(objX, Side, top, optionRegionale)
End Function
J'ai activé le complément dans les compléments Excel :
ComplementCalendrier.png

Dans le classeur de test je référence le complément dans les références :

VBARefCalProject.png
VBACalProject.png


Au lieu d'appeler Calendar.ShowX , j'appelle CalShowX . exemple :
Code:
Private Sub Label5_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  If Button = 2 Then
        Label5 = CalShowX(Label5, 0, 2, 1)
    End If
End Sub

TestCalendar.gif


En pièces jointes le complément et le classeur de test.
Dans le Userform Calendar j'ai un effet de léger clignotement au chargement à cause du Me.Repaint qui se trouve à la fin de la fonction ShowX. Est-il nécessaire ?

Nullosse
 

Pièces jointes

Dernière édition:
Salut,
voici une nouvelle version du calendrier de patricktoulon en complément xlam :
1 - Le ThemeCreator est intégré au complément ( L'appeler par la macro AfficherThemeCreator)
2 - Si on crée un nouveau thème il est enregistré dans le complément.
3 - Suppression du clignotement à l'affichage du calendrier ( repaint mis en commentaire)
4 - Dans le classeur de test , le clic sur la shape fonctionne maintenant, ajout d'un bouton pour afficher le ThemeCreator.

Pour l'installation du complément voir le post #10

Nullosse
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour