XL 2016 [Résolu ] Problème avec le calendrier "Calendar 4.1 de PatrickToulon"

  • Initiateur de la discussion Initiateur de la discussion Cloburk
  • 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 !

Cloburk

XLDnaute Nouveau
Bonjour à tous,
Avec grand plaisir j'ai découvert le Calendar 4.1 de Patrick. Je l'ai intégré dans mes userform de l'applic. que je suis en train de faire.
Tout fonctionnait à merveille jusqu'au 31 déc 2019.
En janvier 2020, lorsque le calendrier s'affiche, il est presque vierge. la date du jour s'affiche, l'année s'affiche, mais le mois est vide et les jours sont vides.
J'ai rechargé le fichier origine depuis le site XLD et surprise l'erreur est également présente.
Quelqu'un a-t-il une idée ? Patrick, peut-être peux tu jeter un coup d'oeil ? Etant le géniteur de ce magnifique Userform, tu trouveras rapidement le bug !

Je précise que si je change le mois février et que je reviens en janvier tout rentre dans l'ordre
Merci par avance et cordiales salutations.
Cloburk
 
re
ok
tu remplace
VB:
dat = Date : If Not Obj Is Nothing And IsDate(Obj) Then dat = IIf(Calendar.region = 0 And TypeName(Obj) <> "Range", Format(Obj.Value, "mm/dd/yyyy"), Obj.Value)

PAR ceci avec commentaires
VB:
dat = Date'on donne la date a "dat"
If Not Obj Is Nothing Then 'si obj injecté par objx dans la fonction  n'est pas rien
        If IsDate(Obj) Then 'si c'est une date
           'si c'est un range cdate(.value) , si c'est un control la date formatée
dat = IIf(Calendar.region = 0 And TypeName(Obj) <> "Range", Format(Obj.Value, "mm/dd/yyyy"), CDate(Obj.Value))
        End If
    End If
    Cbmonth.ListIndex = Month(dat) - 1   'et enfin le combo cbmonth prend l'index du mois dans sa liste
un simple oubli de ma part désolé 😳 😛😳😕
ca se produisait quand le target ou controls etait vide au départ
le principe étant
1 si vide mois et année en cours
2 mois et année de target ou control (objx) si non vide
voila qui est réglé😉
demo
demo3.gif


demo dans userform

demo3.gif
 
Dernière édition:
Bonjour Patrick, bonjour à tous,

Merci pour cette solution, ça fonctionne à merveille. Et encore merci pour cette solution qui remplace vraiment bien le DTpicker que j'utilisais jusqu'a ce que je sois confronté à Excel 64 bits.

Bon dimanche
 
Bonjour Lolote83
j'ai fait la correction dans les ressource mais ca n'est pas encore dispo because (doit passer l'approbation de la modération)

un peu de recherche et vous auriez trouvé 😉 LA RESSOURCE EST ICI EN VERSION ANTÉRIEUR POUR LE MOMENT
cela dit voici un exemplaire
bonne utilisation
 

Pièces jointes

Bonsoir
c'est l'userform et la facon d'ont on l'appelle qui est important
donc pour mettre mon claendrier dans ton fichier il suffit d'y transférer mon userform calendar
les methodes d'apelle sont soit dans le sheets soit dans le module pour la showtopleft

et c'est tout 😉
 
Bonjour

merci pour votre réponse rapide. Mais j'ai beau lire les explications pour méthodes d'appel je ne parvient pas à le faire dans mes fichiers ...mon niveau en VBA est proche du zéro....
Accepteriez vous de prendre un petit temps pour m'expliquer?🙂
 
re
bonsoir
prends un fichier vierge

va dans le module feuil1
et met lui ca
VB:
Option Explicit

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True

    If Target(1).Row = 1 Or Target.Columns.Count > 1 Then Exit Sub

         Select Case Target.Column
        
        Case 1: Target = Calendar.ShowX(Target(1), 2, 0, 0): ' region = 0 ou "US" Etats Unis

        Case 2: Target = Calendar.ShowX(Target(1), 2, 0, 1):   ' region = 1 ou "FR" France

        Case 3: Target = Calendar.ShowX(Target(1), 2, 0, 2): ' region = 2  ou "CA" Canada

        Case Else:  Target = Calendar.ShowX(Target(1), 0, 2):   'automatique region

        End Select
        
   'Unload Calendar
End Sub

en gros ca dit
si la cellule selectionné au click droite est 1 c'est version US "mm/dd/yyyy"
si c'est la colonne 2 c'est francais "dd/mm/yyyy"
si c'est la colonne 3 c'est canadien "yyyy-mm-dd"

maintenant exporte le userform de mon fichier sur ton bureau par exemple

pour cela click droit sur le module "calendar" ( voir capture)

demo3.gif


dans ton nouveau fichier
importe le calendar de la même façon "importer un fichier
et voila ton nouveau fichier a le calendar

ca peut pas être plus simple 😉
ca je pourrais pas le faire a ta place
 
Bonjour,
Moi, je viens de tester chez moi car je trouve que ce calendrier est vraiment top.
j'ai bien coller le code d'appel dans une feuille vierge, et importer le userform
et quand je clique droit, ça me met cette erreur sur cette ligne là ?

Capture-2.JPG
 
- 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
Retour