Erreur Code
Hendrick
-
pijaku Messages postés 13513 Statut Modérateur -
pijaku Messages postés 13513 Statut Modérateur -
Bonjour,
Je consultais se document créer par votre équipe lorsque je me suis rendu compte d'une erreur dans le code.
https://www.commentcamarche.net/faq/41159-vba-excel-toutes-versions-controle-calendrier-transposable
Je n'ai pas trouver la source du problème, mais quand on sélectionne une date avant le 13ieme jour d'un mois (12 et moins), la date ne s'affiche pas correctement.
Par exemple:
On sélectionne le 1 mars 2016, on devrait donc retrouver : 2016-03-01
Cependant, on retrouve plutôt : 2016-01-03.
Donc, si on transfère la date sous le format «Long», on retrouve : 3 janvier 2016.
Merci de votre aide,
HF
Je consultais se document créer par votre équipe lorsque je me suis rendu compte d'une erreur dans le code.
https://www.commentcamarche.net/faq/41159-vba-excel-toutes-versions-controle-calendrier-transposable
Je n'ai pas trouver la source du problème, mais quand on sélectionne une date avant le 13ieme jour d'un mois (12 et moins), la date ne s'affiche pas correctement.
Par exemple:
On sélectionne le 1 mars 2016, on devrait donc retrouver : 2016-03-01
Cependant, on retrouve plutôt : 2016-01-03.
Donc, si on transfère la date sous le format «Long», on retrouve : 3 janvier 2016.
Merci de votre aide,
HF
A voir également:
- Erreur Code
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
3 réponses
Bonjour,
Salut f...
Effectivement, le souci vient bien du format des cellules. Comme le format dépend des paramètres régionaux de Windows, il se peut que l'affichage soit mauvais.
Je reviens demain sur le sujet avec des propositions, notamment une nouvelle version du code.
Bonne soirée à tous les deux
--
Salut f...
Effectivement, le souci vient bien du format des cellules. Comme le format dépend des paramètres régionaux de Windows, il se peut que l'affichage soit mauvais.
Je reviens demain sur le sujet avec des propositions, notamment une nouvelle version du code.
Bonne soirée à tous les deux
--
Bonjour,
Comme promis, je reviens sur le sujet.
Le calendrier renvoie une date, sous la forme d'une valeur de type Date.
Donc Excel la reconnait comme telle.
Le souci ne peut donc venir que de la mise en forme de la cellule.
J'ai essayé le classeur test en changeant les paramètres régionaux de Windows, aucun souci de mon côté.
Tu trouveras la dernière version de ce calendrier chez nos amis et voisins de CodeS SourceS, à cet emplacement (source modifiée ce matin).
Je n'ai pas encore pris le temps de modifier la fiche pratique qui t'amène ici, je vais le faire dans la journée.
J'ai légèrement modifié le code de la Classe pour qu'il soit plus accessible.
Le format de date peut être déterminé dans la fonction Value de la Classe :
Comme promis, je reviens sur le sujet.
Le calendrier renvoie une date, sous la forme d'une valeur de type Date.
Donc Excel la reconnait comme telle.
Le souci ne peut donc venir que de la mise en forme de la cellule.
J'ai essayé le classeur test en changeant les paramètres régionaux de Windows, aucun souci de mon côté.
Tu trouveras la dernière version de ce calendrier chez nos amis et voisins de CodeS SourceS, à cet emplacement (source modifiée ce matin).
Je n'ai pas encore pris le temps de modifier la fiche pratique qui t'amène ici, je vais le faire dans la journée.
J'ai légèrement modifié le code de la Classe pour qu'il soit plus accessible.
Le format de date peut être déterminé dans la fonction Value de la Classe :
Public Function Value(Affich_Barre_Titre As Boolean, Optional Inhib As Boolean, Optional L#, Optional T#) As Date
Dim Liste, Sep$, maDate As Date
'récupère, via la Function Liste_Parametres, les Private Const paramétres du calendrier
Liste = Liste_Parametres
'création de l'userform (Caption, Width, Height et Optional Left et Top)
Call NewUsf(Format(Date, "mmmm yyyy"), 7 * (CInt(Liste(1, 3)) + CInt(Liste(4, 3))) + CInt(Liste(4, 3)) + 5, CInt(Liste(5, 3)) * 2 + CInt(Liste(0, 3)), L, T)
'Procédure de création des contrôles du Calendrier
Call Creer_Calendrier(Date, "", Liste, Affich_Barre_Titre)
'Procédure inhibant la croix de fermeture
If Affich_Barre_Titre = False Then Call AfficheTitleBarre(Usf.Caption, Affich_Barre_Titre)
If Inhib = False Then Call Usf_Initialize
'Attribution du Focus au bouton correspondant à la date du jour
Usf.Controls("Btn_Jours" & Day(Date)).SetFocus
'Affichage de l'userform
Usf.Show
'le séparateur de date (selon le choix systeme)
Sep = Application.International(xlDateSeparator)
'Gestionnaire d'erreur => Si Usf.Tag ne contient rien
On Error GoTo Fin
'===============================================================================================================
'Attribution à Value de : Usf.Tag (jour) et Usf.Caption (Mois et Année)
maDate = IIf(Usf.Tag = "X", Date, CDate(Usf.Tag & Sep & Month(Usf.Caption) & Sep & Right(Usf.Caption, 4)))
'exemple de modification possible :
'maDate = Format(maDate, "mm/dd/yyyy")
Value = maDate
'===============================================================================================================
'UnLoad l'userform entraine la procédure Class_Terminate
Unload Usf
Exit Function
Fin:
'En cas d'erreur, la valeur de notre calendrier
Value = CDate(Date)
End Function
Je me demande, le problème pourrait venir des paramètres de mon ordinateur qui est Canadien. Les paramètres par défaut quant à l'affichage de l'heure sont peut-être différent. Ici, on indique l'heure par défaut comme 2016-03-31.
Ce n'est qu'une idée, mais cela pourrait entrainer des différences au code peut-être.
Merci