Format date MDF Xlcalendar dans Userform
#1
Aspirant XLPages

Inscription: 17/08/2009

Messages: 27

Système d'exploitation:
PC
Version Excel utilisée:
2003
Posté le : 18-08-2009 00h34
Merci beaucoup pour votre utilitaire qui est fantastique.

Voici mes 2 problèmes :
1. Format de date incorrect de Userform à feuille Excel
2. Saisie date sans faire double clic

1.
J'utilise mdf Xlcalendar V1.1 dans un Userform (textbox) pour effectuer une saisie dans une mini base excel.

Le code initial associé a ma textbox était
Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Cancel = True
    mDFXLcalShow CalCtrl:=TextBox1, CalFormat:="dddd dd/mm/yyyy", CalLang:="FR"
End Sub

Je l'ai modifié par :
Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Cancel = True
    mDFXLcalShow CalCtrl:=TextBox1, CalFormat:="dd/mm/yyyy", CalLang:="FR"
End Sub
Effectivement cela fonctionne parfaitement dans la userform, cependant lorsque le champ se déverse dans ma feuille excel, le format n'est plus dd/mm/yyyy mais mm/dd/yyyy.
Si je conserve le format fourni dans la FAQ alors la date est correcte, mais le format de ma cellule d'arrivée n'est plus bon (La cellule d'arrivée est utilisée pour généré automatiquement un planning).

2.
J'ai effectué une tentative pour faire apparaître le calendrier par un simple clic, mais cette dernière s'est avérée infructueuse.
Private Sub TextBox1_Click(ByVal Cancel As MSForms.ReturnBoolean)
    Cancel = True
    mDFXLcalShow CalCtrl:=TextBox1, CalFormat:="dd/mm/yyyy", CalLang:="FR"
End Sub

Je vous joins mon fichier excel et vous remercie par avance pour vos réponse


Pièce jointe:
zip Projet Gantt ABA.zip   [ Taille: 30.50 Ko - Téléchargements: 4049 ]
Hors Ligne
Rapport   Haut 

Re: Format date MDF Xlcalendar dans Userform
#2
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 18-08-2009 05h04
Bonsoir Alragorn, merci du compliment et bienvenue sur XLpages.com

Tout d'abord, ATTENTION lorsque tu fournis un fichier en pièce jointe STP : ton classeur crée une barre d'outils, mais ne la supprime pas à la fermeture !

Pour les visiteurs qui auraient testé ce fichier, fermer cette barre n'est pas suffisant, pour la supprimer complètement il convient de passer par le menu de personnalisation des barres d'outils d'Excel. Et pour ceux qui ne sauraient pas faire, on peut aussi procéder comme ça :

- Avec Excel ouvert, ALT + F11 pour basculer sur VBA
- CTRL + G pour afficher la fenêtre d'exécution
- Dans cette fenêtre d'exécution, taper :
Application.CommandBars("Projet Outil").Delete
- Puis, valider par Entrée.


Revenons maintenant à tes questions :


1 - Si j'ai bien compris ton intention, voici comment régler le problème :

DANS LE MODULE DE CODE DU USERFORM

Je remets le code des évènements DblClick() comme tu souhaitais le faire, c'est à dire (dd/mm/yyyy) :
Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Cancel = True
    mDFXLcalShow CalCtrl:=TextBox1, CalFormat:="dd/mm/yyyy", CalLang:="FR"
End Sub

Private Sub TextBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Cancel = True
    mDFXLcalShow CalCtrl:=TextBox2, CalFormat:="dd/mm/yyyy", CalLang:="FR"
End Sub

C'est dans l'évènement OKButton_Click(), qui gère le transfert de la donnée du TextBox vers la feuille de calcul qu'il convient d'agir :
   Cells(LigneSuivante, 2) = CDate(TextBox1.Text)
    Cells(LigneSuivante, 3) = CDate(TextBox2.Text)

Explication :

On retrouve dans ce cas toute la subtilité (déroutante) des formats de données...

De par la nature des contrôles TextBox, les données contenue dans ces derniers sont de type String (chaine de caractères). Dans ton cas, ces données représentent certes des Dates, mais il n'empêche que l'expression contenue reste de type Stringet ce, quelque soit la façon dont on a saisi ces éléments (avec ou sans le XLcalendar, la donnée d'un TextBox reste une chaine de caractères).

Tes cellules, elles, s'attendent à recevoir une donnée de type Date.

Si tu te contentes de transférer dans une telle cellule, une valeur de type chaine de caractères, Excel va automatiquement chercher à convertir l'expression texte en une expression de type Date. L'ennui, c'est qu'Excel n'a pas été conçu par des gaulois ... et donc, tu te retrouve avec des dates au format... anglo-saxon !

Le moyen simple que j'ai appliqué ici, c'est de forcer cette conversion de String en Date dès le départ, grâce à la fonction de conversion CDdate(), et pour empêcher Excel de le faire lui même avec sa procédure automatique douteuse...


2 - Concernant l'affichage du XLcalendar sur un seul clic dans le TextBox, il n'y a pas d'évènement Click() ou même RightClick() pour ce contrôle ActiveX. Pour ma part, je préfère le Double-clic, toutefois si tu le souhaites vraiment, tu peux faire aussi comme ça :
Private Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If Button = 1 Then
        mDFXLcalShow CalCtrl:=TextBox1, CalFormat:="dd/mm/yyyy", CalLang:="FR"
    End If
End Sub
ou même encore autrement :
Private Sub TextBox1_Enter()
    mDFXLcalShow CalCtrl:=TextBox1, CalFormat:="dd/mm/yyyy", CalLang:="FR"
End Sub
Cette dernière méthode à l'avantage (ou l'inconvénient) de fonctionner même si on utilise la touche TAB pour naviguer entre les contrôles du Userform...

Cordialement,


Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Format date MDF Xlcalendar dans Userform
#3
Aspirant XLPages

Inscription: 17/08/2009

Messages: 27

Système d'exploitation:
PC
Version Excel utilisée:
2003
Posté le : 18-08-2009 08h53
Merci beaucoup pour ta réponse.

L'utilisation de cdate() fonctionne parfaitement.

J'ai abandonné l'idée du simple clic pour rester sur le principe du double click, c'est encore le plus simple et comme je suis novice sur Excel, je ne souhaite pas complexifier les choses.

Merci encore pour ton aide précieuse

Cordialement
Hors Ligne
Rapport   Haut 

Re: Format date MDF Xlcalendar dans Userform
#4
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 18-08-2009 13h09
Bonjour Alragorn, le Forum,

Puisque la réponse apportée te convient, je clos le présent fil de discussions en le qualifiant [résolu].
Je te remercie d'y penser la prochaine fois (voir le lien dans ma signature).

Bien cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes