XL 2019 Souci de formatage de TxtBox au format date

egman

XLDnaute Occasionnel
Bonjour à tous,
je viens solliciter votre aide pour un souci de formatage de txtbox au format date.
J'ai récupéré une table Access où j'avais pas mal de dates, or quand je veux récupérer ces dates de mon tableau excel dans le userform elles apparaissent sous forme numérique.
J'ai regardé un peu partout comment faire mais je ne trouve pas de solution qui fonctionne.
Je vous joint un petit fichier explicatif avec ce que j'ai fait.....mais sans succès
D'avance merci pour votre aide
 

Roblochon

XLDnaute Impliqué
Bonjour,

Le fichier est resté coincé dans les tuyaux.
Si les dates sont sous forme numérique telle que 43634 (pour aujourd'hui) peut-être que TextBox1.Text = Format(LaDateNumérique,"dd/mm/yyyy")
le ferait mais sinon, pousser le fichier plus loin dans les tuyaux.
Bon fin d'après-midi
 

Dranreb

XLDnaute Barbatruc
Boujour.
Normalement si on affecte une valeur Date à une TextBox elle l'affiche sous forme jj/mm/aaaa.
Si ce n'est pas le cas dans votre classeur, pouvez vous pousser le .xlsm, qu'on puisse trouver pourquoi ?
 

egman

XLDnaute Occasionnel
Boujour.
Normalement si on affecte une valeur Date à une TextBox elle l'affiche sous forme jj/mm/aaaa.
Si ce n'est pas le cas dans votre classeur, pouvez vous pousser le .xlsm, qu'on puisse trouver pourquoi ?
Bonsoir Dranreb. Merci de porter attention à mon souci de format.
Je n'ai pas joint le fichier car c'est un fichier de séances de patients, de plus il fait 4Mo.
Je vois pas trop comment le scinder en petits bouts.
Est ce que le code suffirait en texte ?
 

Dranreb

XLDnaute Barbatruc
Faite un fichier avec trois lignes de séances bidons reproduisant le problème et virez tout ce qui ne le concerne pas.
Sinon vérifiez que vos cellules contiennent bien des dates et non du texte et faites des essais de renseignement de TextBox dans un petit UserForm très simple à partir de ces valeurs de cellules
 

ChTi160

XLDnaute Barbatruc
Re egman
Edit :Oupss Bernard trop rapide lol
le Fil , le Forum
quelques lignes (Representatives)anonymisees suffiraient !
jean marie
 

Dranreb

XLDnaute Barbatruc
Par exemple j'ai mis ça dans un nouvel UserForm1 que j'ai muni d'une TextBos1 dans un nouveau classeur :
VB:
Option Explicit
Private Sub UserForm_Initialize()
   ActiveSheet.Cells(1, 1).Value = Date
   TextBox1.Text = ActiveSheet.Cells(1, 1).Value
   End Sub
En faisant F5 dessus ça m'a bien inscrit la date d'aujourd'hui dans la cellule A1 et affiché le texte "18/06/2019" dans la TextBox.
Remarque: Date est aussi un type de donnée et non seulement une fonction sans argument renvoyant la date du jour.
Par exemple :
VB:
Private Sub UserForm_Initialize()
   Dim D As Date
   D = Date + 2
   TextBox1.Text = D
   End Sub
Affiche la date d'après-demain. Mais en déclarant D As Double au lieu de As Date ça affiche "43636"
 
Dernière édition:

egman

XLDnaute Occasionnel
Par exemple j'ai mis ça dans un nouvel UserForm1 que j'ai muni d'une TextBos1 dans un nouveau classeur :
VB:
Option Explicit
Private Sub UserForm_Initialize()
   ActiveSheet.Cells(1, 1).Value = Date
   TextBox1.Text = ActiveSheet.Cells(1, 1).Value
   End Sub
En faisant F5 dessus ça m'a bien inscrit la date d'aujourd'hui dans la cellule A1 et affiché le texte "18/06/2019" dans la TextBox.
Remarque: Date est aussi un type de donnée et non seulement une fonction sans argument renvoyant la date du jour.
Par exemple :
VB:
Private Sub UserForm_Initialize()
   Dim D As Date
   D = Date + 2
   TextBox1.Text = D
   End Sub
Affiche la date d'après-demain. Mais en déclarant D As Double au lieu de As Date ça affiche "43636"
OK je vais voir comment je peux faire pour que çà reste anonyme.
Je fais çà demain matin. Encore merci pour votre aide.
Bonne soirée
 

egman

XLDnaute Occasionnel
Par exemple j'ai mis ça dans un nouvel UserForm1 que j'ai muni d'une TextBos1 dans un nouveau classeur :
VB:
Option Explicit
Private Sub UserForm_Initialize()
   ActiveSheet.Cells(1, 1).Value = Date
   TextBox1.Text = ActiveSheet.Cells(1, 1).Value
   End Sub
En faisant F5 dessus ça m'a bien inscrit la date d'aujourd'hui dans la cellule A1 et affiché le texte "18/06/2019" dans la TextBox.
Remarque: Date est aussi un type de donnée et non seulement une fonction sans argument renvoyant la date du jour.
Par exemple :
VB:
Private Sub UserForm_Initialize()
   Dim D As Date
   D = Date + 2
   TextBox1.Text = D
   End Sub
Affiche la date d'après-demain. Mais en déclarant D As Double au lieu de As Date ça affiche "43636"
Effectivement cela fonctionne bien dans ce sens. (Userform => feuille), mais c'est valable que pour la date du jour.
Là où est le probleme c'est pour recuperer les valeurs déjà inscrites du tableau (feuille => userform) et si je veux mettre une autre date que celle d’aujourd’hui dans les textbox ?
 

Dranreb

XLDnaute Barbatruc
Ou est le problème ? Je mets bien la valeur de ma cellule A1 dans le premier exemple, non ?
Mettez une instruction avant un cas où ça ne va pas : MsgBox TypeName(LExpressionRangeReprésentantLaCelluleIncriminée.Value)
Si ça affiche autre chose que "Date" (comme "Double" par exemple) ça explique que ce n'est pas affiché comme une date.
Pour bien faire il faudrait trouver pourquoi c'est comme ça, et si ce nest pas possible de le réparer affectez TextBox1 = CDate(LExpressionRangeReprésentantLaCelluleIncriminée.Value)
 
Dernière édition:

egman

XLDnaute Occasionnel
Ou est le problème ? Je mets bien la valeur de ma cellule A1 dans le premier exemple, non ?
Mettez une instruction avant un cas où ça ne va par : MsgBox TypeName(LObjetRangeReprésentantLaCelluleIncriminée.Value)
Si ça affiche autre chose que "Date" (comme "Double" par exemple) ça explique que ce n'est pas affiché comme une date.
Pour Bien faire il faudrait trouver pourquoi c'est comme ça, et si ce nest pas possible affectez TextBox1=CDate(LObjetRangeReprésentantLaCelluleIncriminée.Value)
Ok mais si j'ai déjà une date de 2017 par exemple en A1 quand je la récupére dans le userform elle s'affiche sous forme de nombre et pas de date
Donc je cherche à définir que toutes les textbox du userform contenant les dates soient formatées pour afficher une date et non pas un nombre.:)
 

Dranreb

XLDnaute Barbatruc
Non, si ce nest pas affiché comme une date c'est que la cellule vaut autre chose qu'une date.
Mettez la MsgBox que je vous ai indiquée pour le vérifier.
CDate(LExpressionRangeReprésentantLaCelluleIncriminée.Value) est affiché comme une date mais vous pouvez préférer
Format(LExpressionRangeReprésentantLaCelluleIncriminée.Value, "dd/mm/yyyy")
 

egman

XLDnaute Occasionnel
Non, si ce nest pas affiché comme une date c'est que la cellule vaut autre chose qu'une date.
Mettez la MsgBox que je vous ai indiquée pour le vérifier.
Non la cellule A1 est bien au format date....(comme toutes les cellules qui contiennent des dates dans mon tableau)....(désolé je ne vois pas de MsgBox dans le bout de code)
 

Dranreb

XLDnaute Barbatruc
Le format d'affichage de la valeur de cellule on s'en fout. C'est le type de donné de sa valeur stockée qui est importante.
 

egman

XLDnaute Occasionnel
Le format d'affichage de la valeur de cellule on s'en fout. C'est le type de donné de sa valeur stockée qui est importante.
Désolé je pige pas....
Avez vous un bout de code pour recuperer une date quelconque en A1 qui s'affiche dans le userform ?
 

egman

XLDnaute Occasionnel
Pouvez vous m'expliquer ceci SVP ?
MsgBox TypeName(LExpressionRangeReprésentantLaCelluleIncriminée.Value)
 

Dranreb

XLDnaute Barbatruc
VB:
Dim ValCel
ValCel = ActiveSheet.[A1].Value
If VarType(ValCel) = vbDate Then
    TextBox1.Text = ValCel
Else
    MsgBox "La valeur de A1 est de type """ & TypeName(ValCel) & """ et non ""Date""."
    end If
LExpressionRangeReprésentantLaCelluleIncriminée: un truc du genre Workbooks(X).Worksheets(Y).Range(Z) et plein d'autres possibles. Mais n'ayant rien de concret à étudier je ne savais quoi mettre. ActiveSheet.[A1] est aussi une expression Range, représentant la cellule A1 de la feuille active.
 
Dernière édition:

Discussions similaires


Haut Bas