Textbox en format currency

Bonjour à tous voilà je me trouve avec un problème qui est le suivant j'ai une textbox qui reçois une valeur numérique qui est convertie dans mon userform en format currency , mais dés que je change le valeur à l'intérieure de ma texbox la valeur ne se met plus en format currency;

Pour faire simple la valeur que je reçois est par exemple 2,00 euros et dés que je tape 36 par exemple elle ne se met pas en format 36,00 euros. Ma question est comment faire pour que mes valeurs reste en format euro?

Merci

Bonjour,

Les TextBox comme le nom l'indique contiennent du texte. Quel que soit le format de nombre souhaité vous devez toujours en convertir le contenu au format souhaité avec CCur, CLng, CDate, CInt...

Selon vos indications CCur pourrait convenir : A vérifier...

Range("A1")= CCur(TextBox1)

A+

Merci pour ton message mais j'ai deja essayé je voudrais que lorsque je me trouve dans mon userform et que je tape une valeur dans ma textbox celle_ci se convertisse automatiquement en format currency du genre je tape 36 directement dans ma textbox et celle-ci mette automatiquement 36,00 euro ou le signe

Bonjour

Peut-être cela ?

Private Sub TextBox1_AfterUpdate()
    TextBox1.Value = Format(Text1.Value, "# ##0.00 €")
End Sub

A tester

Merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii Patty5046

Je n'avais pas pensé au before update t'es génial

bonne soirée

Bonsoir Walker ....Johnny ???

Tu y vas fort en compliment...

Mais si cela te convient, je suis contente pour toi

Bonne soirée à toi

ça me va et ok la prochaine fois je te dirais merci simplement

Attention ! L'affichage dans le TextBox au FormatCurrency ne change rien le TextBox contient toujours du texte:

Si tu le transfères tel quel dans le tableur il faut quand même passer par CCur pour avoir un affichage conforme ou que tes cellules soient préformatées en Currency.

Sinon tu peux avoir un affichage erratique avec au mieux un nombre non formaté, au pire un nombre passé comme du texte avec le petit triangle vert d'erreur...

A+

Bonsoir

Bien sûr, il faut que la cellule où il entre la valeur de son textbox soit en format monétaire, € et 2 décimales après la virgule accessoirement

Bye

Reçu Patty5046 et bonne soirée

Bonjour,

Nouveaux sur le forum, je me permet de réactiver cette conversation car elle semble répondre a ma problématique, mais je ne parviens pas a la mettre en oeuvre.

Voici mon soucis, j'ai un tableau de bords de suivi de mon CA que j'incrémente via un formulaire avec une texte box pour enregistrer le montant de la commande du client.

Sauf que voila, quand la macro du formulaire renvoi les données, fatalement la texte box montant (txtMontant) renvoi une donnée texte... normale de fait!

Le problème est que la donnée du tableau doit être retraitée, après, pour d'autre tableau, sauf que, en l’état, je suis obligé, systématiquement, de reprendre "a la mains", les données du tableau pour les reconvertir en monétaire... ce qui perds de son intérêt!

Que dois je faire? Je précise que je ne suis pas du tout expérimenté en VBA

pouvez vous m'aider?

D'avance merci.

Pablo

Bonjour

Vois cela

TextBox1.Value = Format(TextBox1.Value, "# ##0.00 €")

Bon week-end

Bonjour Merci pour votre réponse,

Malheureusement, je pense que je ne dois pas comprendre la procédure pour bien faire appliquer cette consigne.

Je m'explique, j'arrive a l'enregistrer (heureusement) mais rien de ce passe, dans les cellule de destination, les valeurs sont toujours incrémentées sous forme de texte et non en monétaire...

Je ne comprend pas bien pourquoi...

Bonjour

Il faut aussi que dans la cellule où tu envoies tes données monétaires tu mettes le format monétaire avec 2 chiffres après la virgule

Plus le temps, je pars en week-end...

A+

Merci, malheureusement cela ne marche toujours pas...

Mais nous verrons ça lundi

bon week-end!

Bonjour

J'ai eu 2 minutes

Voici

Bonne continuation

Super merci de ton aide!

Par contre ça ne marche pas... de fait je comprend bien la théorie, la mise en pratique ne fonctionne pas!

Pour m'aider, je met une copie du fichier anonymisé, mais la structure est celle-ci...

Si des fois tu trouves la faille... (hormis moi même...)

Bon week-end.

Pablo

Bonjour le Fil,

... Si tu le transfères tel quel dans le tableur il faut quand même passer par CCur pour avoir un affichage conforme ou que tes cellules soient préformatées en Currency.

On peut mettre une cellule au format Monétaire mais, autant que je sache on ne peut la mettre pas au format Currency.

Dans une cellule la précision d'un nombre ne peut pas dépasser la précision d'un Double (15 chiffres significatifs)

Pour mémoire, l'intérêt de Currency par rapport à Double c'est de faire des calculs avec 19 chiffres significatifs (15 + 4), l'inconvénient c'est qu'il faut faire tous les calcul en VBA sans passer par les cellules sinon on perd l'avantage de ce format, il est alors préférable d'utiliser Double.

Finalement en VBA, Currency présente peu d'intérêt, lorsqu'on a besoin de précision avec d'un grand nombre de chiffres significatif, il vaut mieux utiliser un type Variant/Decimal ou le format Texte qui lui permet des calculs sur des très (très) grands nombres (mais c'est pas simple).

Bonjour PabloC, bonjour à tous

Dans ton formulaire FrmCommande,

remplace tout ton code par celui-ci et vois

Option Explicit

Private Sub btnAnnuler_Click() 'annule la saisie
    Unload Me
End Sub

Private Sub btnSuivant_Click()
    If txtMontant <> "" Then
         txtMontant.Value = Format(txtMontant.Value, "# ##0,00 €")
    End If
    If obtnCommande = True Then 'Saisie d'une commande
    Sheets("Suivi Commande").Activate
    Range("B3").Select
    Selection.End(xlDown).Select
    Selection.Offset(1, 0).Select
    ActiveCell = txtNumDoc
    ActiveCell.Offset(0, 1).Value = txtDate
    ActiveCell.Offset(0, 3).Value = cboClient
    ActiveCell.Offset(0, 4).Value = txtMontant.Value
    End If

    If obtnDevis = True Then 'Saisie d'un devis
    Sheets("Suivi Commande").Activate
    Range("H3").Select
    Selection.End(xlDown).Select
    Selection.Offset(1, 0).Select
    ActiveCell = txtNumDoc
    ActiveCell.Offset(0, 1).Value = txtDate
    ActiveCell.Offset(0, 3).Value = cboClient
    ActiveCell.Offset(0, 4).Value = txtMontant.Value
    End If   
End Sub

Private Sub obtnCommande_Click() 'mise en place du choix de commande OU devis
    If obtnCommande = True Then obtnDevis = False
    If obtnDevis = True Then obtnCommande = False
End Sub

Private Sub UserForm_Initialize() 'renseignement automatique de la date du jour dans la txtDate
    txtDate.Value = DateValue(Date)
    txtMontant.Value = Format(txtMontant.Value, "# ##0.00 €")
End Sub

Et surtout, dans la colonne F de ton suivi de commande, n'oublie pas de mettre ton format de cellule en monétaire à -1 234,10 €

Je n'ai pas regardé le reste

En fait j'ai supprimé l'événement keypress de ton textbox, mis cela

If txtMontant <> "" Then
    txtMontant.Value = Format(txtMontant.Value, "# ##0,00 €")
    End If

en début de ton évenement : btnSuivant_Click()

et charger ta cellule en précisant ton textbox montant avec .value

Bon courage

Super, effectivement ça marche! merci!!! merci beaucoup!

Pablo

Rechercher des sujets similaires à "textbox format currency"