Format date en VBA pour TextBox ou cellules

Bonjour à toutes et tous

j'ai tenté plusieurs exemples, si je ne passe pas par le format de cellules,ça ne marche pas de même que dans une TextBox

je vous poste mon fichier avec des exemples la date vient d'un DtPickers

Merci de votre aide

Amicalement

Pierrot

Bonsoir, 78chris

il y a de quoi trouver son bonheur sur ce fil,

Merci beaucoup et bonne soirée

Amicalement

Pierrot

Bonjour,

si je ne passe pas par le format de cellules,ça ne marche pas de même que dans une TextBox

C'est bien normal !

Quand tu saisis une date dans une cellule, tu tapes un littéral date qui, s'il correspond à un format de date par défaut (paramètres régionaux de Windows) sera reconnu comme date par Excel, qui lui appliquera d'une part un format de cellule date d'office et le stockera sous forme numérique (numéro de série correspondant à la date).

Si le format souhaité déroge aux formats de date par défaut, il se modifie dans le format de cellule : la valeur est une valeur de type date et elle peut s'afficher selon le format choisi !

Si la donnée saisie n'a pas été reconnue comme date, ce sera une valeur de type texte, et dans ce cas tu pourras faire toutes modifications de formats, ce sera inopérant.

Dans une TextBox, le problème est différent, le contenu est toujours du texte, jamais une valeur de type Date, la conversion de ce texte en Date se fait à la sortie de la TextBox... A l'entrée, on utilise le plus souvent Format pour assurer une mise en forme de la date, la fonction Format renvoie exclusivement du texte...

Ton DTPicker renvoie une valeur de type Date, que tu affectes à la cellule active. Il te suffit donc de mettre simultanément la cellule au format désiré et celui-ci sera appliqué immédiatement...

Cordialement.

Bonjour, MFerrand

Un tout grand merci pour tes explications

si j'ai bien compris, c'est dans le code de la TextBox en validant, par exemple, que je dois donner le format de la cellule qui recevra la date :

Private Sub CMB1_Click()
  ActiveCell.Range("A1") = DTPicker2.Value
  DTPicker2.CustomFormat = "ddd-dd-mmm-yy"
  UserForm1.Hide
End Sub

Variante : jjj-jj-mmm-aa

les deux ne marche que si on attribue le format date a la cellule.

c'est ce que je vais faire

Bonne journée et encore merci

Amicalement

Pierrot

Bonjour,

Ainsi :

Private Sub CMB1_Click()
  ActiveCell = DTPicker2.Value
  ActiveCell.NumberFormat = "ddd-dd-mmm-yy"
  UserForm1.Hide
End Sub

Cordialement.

bonjour

le mieux ses de mettre une TextBox que tu cache

Private Sub UserForm_Initialize()
TextBox1.Visible = False
   TextBox1.Value = DateValue(Now)
   Me.DTPicker2 = DateValue(Now)
   DTPicker2.CustomFormat = " ddd-dd-mmm-yy"
End Sub

Private Sub DTPicker2_Change()
   TextBox1.Value = DTPicker2.Value
End Sub

Private Sub CMB1_Click()
  ActiveCell.Range("A1") = CDate(TextBox1.Value)
  ActiveCell.Range("A1").NumberFormat = "[$-F800]dddd, mmmm dd, yyyy"
Unload Me
End Sub

A+

Maurice

Pour Maurice,

vendredi 4 août 2017 : Ce qu'il affiche

ven 4 août 17 : ce que je souhaite

je joins mon petit fichier

A+ Pierrot

bonjour

peux être comme ça

ActiveCell.Range("A1").NumberFormat = "ddd d mmmm yy"

A+

Maurice

C'est parfait Maurice,j'avais essayé cette formule mais sans supprimer, l es [$-F800]devant le format

avec la solution de Fernand, me voila ferré pour démarrer la saison

un tout grand merci à vous deux ,sans oublier 78chris pour ses conseils

bonne soirée à vous tous

amitiés

Pierrot

bonjour

voila une astuce pour le DTPicker

A+

Maurice

Bonjour,

Je me permets d'appeler votre attention sur le fait que : ActiveCell ou ActiveCell.Range("A1") désignent strictement la même cellule !

On peut aussi bien écrire : ActiveCell.Range("A1").Cells(1, 1).Offset(0, 0), ce sera encore la même ! Mais quand ActiveCell suffit, le chemin paraît tortueux...

Cordialement.

Bonjour, archer, MFerrand, bidochon34800 (Tu sors de la 7ème Cie ? ) avec un surnom pareil

Un grand merci à tous pour vos réponses respectives

Bon dimanche

Amitiés

Pierrot

Rechercher des sujets similaires à "format date vba textbox"