Format date et monetaire TextBox

Bonjour à tous,

Pouvez m’aider à solutionner le petit problème ci-dessous

J' ai deux TextBox dont je souhaiterais avoir un format monétaire pour l'une et un format date pour l'autre.

Ci dessous les lignes concernées.

Format monetaire:

"Me.PrixAchat = Range(nomtableau).Item(enreg, 5)"

"Range(nomtableau).Item(enreg, 5) = Me.PrixAchat"

Format date:

"Me.DateAchat = Range(nomtableau).Item(enreg, 6)"

"Range(nomtableau).Item(enreg, 21) = Me.DateAchat"

Merci pour votre aide

Bien cordialement

Bonjour,

Tu trouveras les formats disponibles sur le site de Microsoft ...

https://docs.microsoft.com/fr-fr/office/vba/language/concepts/getting-started/type-conversion-functi...

ric

Bonsoir ric,

merci pour ton retour c est très intéressant je ne connaissait toutes ces fonctions.

Toutes fois a quel endroit du code je dois mettre la fonction CDate et CCur?

Merci

Bonne soirée

Bonjour Sliver,

Sur la page Web du lien que je t'ai soumis ... descends plus bas dans la feuille ... à peu près à la moitié de la page ... il y a des exemples qui vont t'aider à comprendre ...

ric

Bonjour à tous,

Je pense qu'il y a une confusion, cette page concerne le typage des variables.
Pour fabriquer une chaine il faut utiliser la fonction Format()

a = Format(1234, "Currency")
ou
a = Format(44652, "#.00")

a = Format(44652, "dd/mm/yyyy")

eric

Bonjour a tous,

ric, eriic merci pour vos réponses.

eriic pour bien comprendre le = Format(1234, "Currency") je dois l'écrire après = Me.PrixAchat ou le remplacer par =Format(1234, "Currency)?

désolé pour mes questions de béotien en tout cas merci d'avoir pris le temps de répondre.

Bien cordialement

Bonjour le forum

Bonjour Sliver, Ric, eriiic

Un fichier test pour comprendre. Comme tu n'as pas joint de fichier, j'ai laissé le nom des contrôles initiaux.

8sliver.xlsm (22.97 Ko)

Bonjour,

je n'ai pas regardé le fichier d'ericcool02 qui doit être correct je suppose.
Pour répondre à ta question, c'est un exemple général que j'ai mis.
1234 est la valeur à mettre en forme, ta cellull en l'occurence : Range(nomtableau).Item(enreg, 5)
Le 2nd paramètre étant le format nombre ou date voulu.
eric

PS : et a est Me.PrixAchat ou...

Re le forum

Re le fil,

@eriiic : il est vrai qu'il est mieux de mettre et le fichier ET le code (pour ceux qui ont déjà eu des problèmes avec les fichiers foireux (j'en fait parti...)). De plus les personnes qui postent pensent que l'on va comprendre de suite leur souci et ne mettent pas de fichier alors ......

Le code :

Private Sub TextBox1_exit(ByVal Cancel As MSForms.ReturnBoolean)
   TextBox1 = Format(Val(Replace(Replace(TextBox1, ",", "."), Chr(160), "")), "# ##0.00 €")
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = 46 Then KeyAscii = 44
    If Not Chr(KeyAscii) Like "[0-9-,]" Then KeyAscii = 0
End Sub

Private Sub CommandButton1_Click()
          [A1] = CCur(TextBox1.Value)
           With Me.Controls("TextBox2")
            If .Value <> "" And IsDate(.Value) Then [A2] = CDate(.Value)
        End With
        Unload Me
End Sub

Bien à toi eriiic

Re,

ce n'est pas par peur, mais par fainéantise
Quand le code est court je préfère le mettre en clair. Ca permet aux lecteurs de voir tout de suite si c'est l'idée qu'ils avaient ou non, et de compléter ou critiquer au besoin.

J'ai l'impression que tu fais l'inverse de ce qui est demandé.
Moi j'ai compris qu'il voulait remplir un textbox depuis une valeur de cellule (?)

Au passage avec [A1] = CCur(TextBox1.Value) tu forces une double conversion inutile.
Les cellules contiennent uniquement des doubles, autant utiliser CDbl() directement
eric

Re le fil,

Tu as raison, (retraité fainéant (moi aussi , je ne vais pas au bout des lectures), j'ai lu le début de la demande concernant le format des TextBoxs....

Je prends bonne note de ton commentaire.

@+ Eric

Re le fil

Donc voici le contraire de ce que je proposais, à savoir l'importation des valeurs (date et monétaire) de cellules vers les TextBoxs :

Private Sub UserForm_Initialize()
Dim D As Date
 D = [A1]
TextBox1 = D

  TextBox2.Value = Format(Range("A2").Value, "0.00" & " €")
End Sub
10sliver2.xlsm (20.97 Ko)

Bonjour a tous,

Si j’ai bien compris vos divers réponses , j’ai apporter les modifications aux TextBox PrixAchat et DateAchat et ca a l’ai de fonctionner, n’étant pas un expert pouvez vous me donner votre avis sur ces modifications. Fichier en pièce jointe

J’aurais une autre question, comment faudrait-il que je m’y prenne pour faire un historique d’achat ?

Pouvez vous m’indiquer les éventuelles étapes de création.

Merci à Ericcool02, eriiic, ric

Bien a vous

16bdproduits.zip (21.02 Ko)

Bonjour,

regardé sommairement car je dois partir.

et ca a l’ai de fonctionner

ça a l'air mais pas la chanson.
tu ne dois pas mettre "2,00 €" dans une cellule, c'est une chaine et non un numérique.
Idem pour ta date qui a le goût et l'odeur d'une date mais qui n'en est pas une.
Tu le vois au fait qu'une chaine s'aligne à gauche et un vrai nombre (ou vraie date) à droite.

Dans vba tu dois travailler avec des variables de type Double, et c'est ces valeurs qu'il faut mettre dans le tableau, avec le format de cellule adéquat.
Tu ne dois formater en texte que pour les textbox car elle n'acceptent que du texte (d'où leur nom)
Pas le temps d'expliquer plus, sorry. Faire qq recherches sur google sur le typage des variables ou lire les cours VBA (menu en haut de ce site).
On sent une application à bien faire mais Il te manque des bases pour bien travailler
eric

Bonjour a tous,

Merci eric pour ces précieux conseils.

Bonne journée

Rechercher des sujets similaires à "format date monetaire textbox"