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

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
 

patricktoulon

XLDnaute Barbatruc
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é :oops: :p:oops::confused:
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:

Cloburk

XLDnaute Nouveau
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
 

patricktoulon

XLDnaute Barbatruc
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

  • new calendar version 2019-2020 V.4.1.1.xlsm
    55.4 KB · Affichages: 46

PHS

XLDnaute Nouveau
Bonjour
Je suis désolé mais j'ai une question de novice....que je suis.
Comment faire pour que ce petit fichier très pratique devienne une option insérable dans mes fichiers?

Merci de bien vouloir aider un débutant!
PHS
 

patricktoulon

XLDnaute Barbatruc
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 ;)
 

PHS

XLDnaute Nouveau
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?:)
 

patricktoulon

XLDnaute Barbatruc
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
 

Flown720

XLDnaute Nouveau
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
 

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla