TextBox et dates formatées, une solution possible ?

JNP

XLDnaute Barbatruc
Bonjour le forum :),

Suite à une discussion tourmentée, mais certes intéressante, je me suis reposé pour la Nième fois la question sur les dates dans les TextBox, question récurente sur le forum car il n'est pas évident de passer d'un texte formaté dans une textbox au format Date de VBA :eek:...

Les questions de LoneWolf m'ont ouvert un horizon dont je souhaiterais discuter avec vous (comme c'est beau, je me surprends moi-même :p...).

Hypothèse de base : stockage simultané de la date en format Date et de son formatage en format String ;).

Pour l'instant, je suis passé par Type, et évidemment, j'aurais pu stocker dans un bête tableau au format Date, le stockage de MonTextBox.Text ne sera utile que par la suite, s'il y a une suite :eek:...

L'idée que je poursuis (encore une belle métaphore, surtout que je ne courre pas vite :p...), ce serait de passer ensuite par un Module de Classe pour traduire n'importe quel type de date dans un TextBox sous les 2 formats (de 01/01/12 à dimanche 1 janvier 2012).

J'avoue caresser l'espoir (faut que j'arrête, moi :p...) d'utiliser des RegExp pour résoudre ce problème :rolleyes:... Sachant que d'un autre côté, l'évènement Exit n'est pas reconnu dans les modules de Classe, et qu'il va falloir déterminer ce qui dans le Change va nous donner le départ de la modification :eek:...

Espérant que ce sujet en captive quelques uns, j'ai posté dans le salon car c'est plus un exercice intellectuel qu'un besoin particulier ;)...

Bonne journée à toutes et à tous :cool:
 

Pièces jointes

  • Test TextBox dates.xls
    74 KB · Affichages: 151

Staple1600

XLDnaute Barbatruc
Re : TextBox et dates formatées, une solution possible ?

Bonjour

JNP: Moi aussi je caresse plein de fols espoirs.

Pour ta quête du string temporel, as-tu songé à voir si il n'y avait pas déjà du stock en magasin (notamment de l'autre côté de l'océan) ?
(Car j'ai un vague souvenir d'avoir lu quelque chose qui ressemble à à ta poursuite idéale ;) )

Sinon, n'hésites à abuser du pattern (tu me feras plaisir)

Bon je te laisse à regrets, faut que je retourne gagner mon pain.
 

tototiti2008

XLDnaute Barbatruc
Re : TextBox et dates formatées, une solution possible ?

Bonjour Jean-Noël, Bonjour Staple,

Pas sûr que ça fasse avancer le schmillblick, mais la traduction de "dimanche 1 janvier 2012" à une date, je pense que tu peux la réaliser avec une expression du genre

Code:
DateValue(Right(TextBox1.Text, Len(TextBox1.Text) - InStr(1, TextBox1.Text, " ")))
 

JNP

XLDnaute Barbatruc
Re : TextBox et dates formatées, une solution possible ?

Re :),
Pour ta quête du string temporel, as-tu songé à voir si il n'y avait pas déjà du stock en magasin (notamment de l'autre côté de l'océan) ?
(Car j'ai un vague souvenir d'avoir lu quelque chose qui ressemble à à ta poursuite idéale ;) )
Merci Jean-Marie. Si tu peux retrouver des traces, ça m'intéresse, mais s'il y a une bonne solution, c'est bizarre qu'on ne la voie pas proposée à chaque fois que le problème se pose :rolleyes:...

Pas sûr que ça fasse avancer le schmillblick, mais la traduction de "dimanche 1 janvier 2012" à une date, je pense que tu peux la réaliser avec une expression du genre
...[/CODE]
Certes Marc, mais la conversion n'est pas en elle même le talon d'Achille du problème :rolleyes:... C'est plus d'identifier un masque qui permette de savoir que la date est entièrement saisie et qu'il faut la transformer en date réelle (peut-être avec un envoi du résultat dans un label au fur et à mesure de la saisie :confused: ?
Bonne suite :cool:
PS : Euh, pour le String temporel, tu veux bien sûr parler de ce sous vêtement féminin dont on aimerait bien qu'il disparaisse en fonction du temps :eek: ?
 

tototiti2008

XLDnaute Barbatruc
Re : TextBox et dates formatées, une solution possible ?

Bonjour à tous,

mais la conversion n'est pas en elle même le talon d'Achille du problème ... C'est plus d'identifier un masque qui permette de savoir que la date est entièrement saisie et qu'il faut la transformer en date réelle (peut-être avec un envoi du résultat dans un label au fur et à mesure de la saisie ?
Bonne suite

La conversion risque de vite être un paramètre important du problème, surtout si on veut savoir si ce qui a été saisi est une date valide ou non
Sans parler de comment interpréter une saisie (par exemple "10/11/12", est-ce le 11 octobre 2012, le 12 novembre 2010... je vous laisse faire les autres combinaisons)
Mais peut-être que je ne prend pas le problème par le bon bout :confused:
 

JNP

XLDnaute Barbatruc
Re : TextBox et dates formatées, une solution possible ?

Re :),
La conversion risque de vite être un paramètre important du problème, surtout si on veut savoir si ce qui a été saisi est une date valide ou non
Sans parler de comment interpréter une saisie (par exemple "10/11/12", est-ce le 11 octobre 2012, le 12 novembre 2010... je vous laisse faire les autres combinaisons)
Mais peut-être que je ne prend pas le problème par le bon bout :confused:
C'est pas faux, mais le premier problème est de savoir si la saisie est complête ou non :eek:...
Avec un Exit, on pourrait facilement le déterminer, mais avec un Change :rolleyes:...
Entre saisie français ou anglais, il doit être possible de lire les choix locaux, non ;) ?
A + :cool:
 

Staple1600

XLDnaute Barbatruc
Re : TextBox et dates formatées, une solution possible ?

Re

Entre saisie français ou anglais, il doit être possible de lire les choix locaux, non ;) ?
Je confirme.

Avec par exemple Application.International(xlDateOrder)

Code:
Sub DateMMDDorDDMM()
MsgBox Format(Date, IIf(Application.International(32) = 1, "dd/mm/yyyy", "mm/dd/yyyy"))
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : TextBox et dates formatées, une solution possible ?

Re


JNP:
Bah elle est pas longue
0 = mois-jour-année
1 = jour-mois-année
2 = année-mois-jour

PS: Je pressens que j'ai du faire une boulette, non (surement encore la fatigue ;) )
 

david84

XLDnaute Barbatruc
Re : TextBox et dates formatées, une solution possible ?

Bonsoir,
Suite aux discussions que j'ai initiées ici ou , 2 réflexions :
- le problème de traitement et d'affichage de la date diffère en fonction des versions d'Excel
- ce qui semble poser problème dans le traitement des dates est le format appliqué à la date (dans la feuille de calcul, plus particulièrement les formats personnalisés et dans un array, tout type de format).

Pour l'instant, pour m'en sortir, j'ai testé 2 possibilités :
- soit en modifiant au début de la procédure le format de date dans la feuille de calcul comme dans la discussion Find et les dates et en rétablissant le format initial à la fin,
- soit en modifiant le format dans l'array (format "General") au début de procédure et en le rétablissant à la fin comme dans la discussion "Tri multicolonne".

J'ai limpression que cela se rapproche de ton idée de base quand tu dis :
Hypothèse de base : stockage simultané de la date en format Date et de son formatage en format String
, mais peut-être n'ai-je pas compris.
A+
 

JNP

XLDnaute Barbatruc
Re : TextBox et dates formatées, une solution possible ?

Re :),
- soit en modifiant le format dans l'array (format "General") au début de procédure et en le rétablissant à la fin comme dans la discussion "Tri multicolonne".

J'ai limpression que cela se rapproche de ton idée de base quand tu dis :
D'abord "Bonne fête"... :p
Effectivement, c'est globalement l'idée :rolleyes:...
La problèmatique vient de l'absence de format dans les TextBox :eek:...
Donc si on veut faire des calculs sur les dates dans un TextBox, soit on écrit 40906 pour la date d'aujourd'hui, pratique pour les calculs rapides, mais pas très causant pour l'utilisateur :rolleyes:...
Soit on formate la date, mais pour retravailler dessus ensuite, il faut reconvertir la String en Date, ce qui est plus ou moins pratique :eek:...
D'où l'idée de stocker dans une variable "2D" en même temps le format String et le format Date, associée à chaque TextBox ;)...
Après, on fait appel à l'un ou à l'autre suivant les besoins :p...
Bonne suite :cool:
 

david84

XLDnaute Barbatruc
Re : TextBox et dates formatées, une solution possible ?

Re
D'abord "Bonne fête"...
d'abord merci:)
D'où l'idée de stocker dans une variable "2D" en même temps le format String et le format Date, associée à chaque TextBox ...
Après, on fait appel à l'un ou à l'autre suivant les besoins ...
Oui mais je pense que cela dépend de ce que l'on fait.
Tu parles de format Date et de format String mais les 2 sont des formats.

Quand tu travailles dans un Array, le format Date utilisé (quel qu'il soit, que ce soit un format Date système ou un autre format Date ou un format personnalisé) pose problème, soit lors du traitement des données de l'Array, soit lors de l'affichage dans la feuille de calcul (soit les 2, cela évolue en fonction de la version d'Excel utilisée).

Donc là pour l'instant, quand je travaille dans un Array, je n'ai pas trouvé de moyen plus "sûr" que de passer la date au format "General" (40906 pour la date d'aujourd'hui) au début de la procédure et de la transformer à nouveau avant réaffichage dans la feuille de calcul.

Après, dans un TextBox, je ne sais pas trop mais il faudrait peut-être commencer par rechercher ce qui pose problème : est-ce le type de format utilisé ou est-ce avant tout le fait qu'une date soit formatée ?
A+
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : TextBox et dates formatées, une solution possible ?

Re :),
As-tu disséqué un peu mon fichier :rolleyes: ?
J'ai utilisé une variable personnalisée avec Type
Code:
Public Type MonTextbox
    Text As String
    Date As Date
End Type
qui me permet ensuite d'avoir un Array à 2 dimensions, mais avec les 2 types de variables, String et Date
Code:
Dim Tableau(1 To 20) As MonTextbox
...
Tableau(I).Date = Int(Rnd() * 366) + DateSerial(2012, 1, 1)
Tableau(I).Text = Format(Tableau(I).Date, "dddd dd mmmm yyyy")
...
C'est peut-être plus clair ainsi :p...
A + :cool:
 

JNP

XLDnaute Barbatruc
Re : TextBox et dates formatées, une solution possible ?

Re :),
Alors j'ai mal pressenti ou pas ?
(voir mon précédent message que tu as du zappé ;) ?)
Je ne sais pas, je n'ai qu'une version française sous la main... Il faudrait que des possesseurs de versions étrangères fassent le test, moi, ça me renvoie bien 1 :rolleyes:...
A + :cool:
 

Discussions similaires

Réponses
19
Affichages
3 K
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 203
Messages
2 086 195
Membres
103 153
dernier inscrit
SamirN