transformation d'une valeur d'un TextBox en Euros
#1
Régulier XLPages

Inscription: 08/12/2008

Messages: 55

Système d'exploitation:
PC
Version Excel utilisée:
2003
Posté le : 17-10-2009 10h48
Bonjours a Tous

Mon probleme est le suivant:
Dans un UserForm j'ai des TextBox dans lequel j'entre des valeur supposon 22
j'ai réussi a transformer cette valeur dans la feuille Excel en 22,00€ par l'instruction CCUR
je désirais la transformer également de la même maniére dans le TextBox
J'ai constater que la valeur reste toujours a 22 même en recopiant la valeur sur la feuille.

Esque l'un d'entre vous aurez une solution , surtout que par la suite toute ses valeur je vais devoir les additionner , soustraire?

Bien cordialement , a tous
Hors Ligne
Rapport   Haut 

Re: transformation d'une valeur d'un TextBox en Euros
#2
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 17-10-2009 13h45
Bonjour Beatbles, le Forum,

Un petit exemple de ce que tu veux voir et de quelle façon tu souhaites réutiliser les valeurs pour calcul ensuite, serait le bienvenu.

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: transformation d'une valeur d'un TextBox en Euros
#3
Régulier XLPages

Inscription: 08/12/2008

Messages: 55

Système d'exploitation:
PC
Version Excel utilisée:
2003
Posté le : 18-10-2009 10h22
Bonjour a tous

Voila je joint un bout de programme en espérant avoir été assez explicite.

Bien cordialement
Pièce jointe:
xls Classeur1.xls   [ Taille: 26.00 Ko - Téléchargements: 1283 ]
Hors Ligne
Rapport   Haut 

Re: transformation d'une valeur d'un TextBox en Euros
#4
Accro XLPages

Inscription: 09/01/2008
De Montréal, Québec

Messages: 463

Système d'exploitation:
PC
Version Excel utilisée:
97 à 2016
Posté le : 18-10-2009 11h55
Bonjour Beatbles,

Explicite oui, indiqué ça se discute.

Tout d’abord distinguons la chose et sa représentation.

Lorsqu’on écrit 22,50 il s’agit d’un nombre, ce nombre peut représenter des Euros, des kilomètres à l’heure, des kilopascals, des mètres ou des années lumière. Peu importe. 22,50 est un nombre, point.

Qu’une cellule dans le classeur puisse porter en plus du nombre 22,50 un symbole monétaire n’indique nullement que ce symbole est partie intégrante de ce nombre; ce n’est qu’une représentation.

Excel, côté classeur, s’arrange avec le symbole monétaire lors des opérations élémentaires (+, -, /, *) ; il en va tout autrement côté code «22,50€» + «22,50€» = Erreur de type !

Le fait d’indiquer dans le code une instruction : vAleur = CCur(TextBox1) n’implique absolument pas que la représentation du nombre portera le symbole monétaire seulement que ce nombre sera représenté en mémoire sur 64 bits comme suit :

«Les variables de type Currency sont stockées sous la forme de nombres de 64 bits (8 octets) au format entier, avec un décalage de 10 000 afin d'obtenir un nombre à virgule fixe comprenant 15 chiffres à gauche du séparateur décimal et 4 chiffres à droite. Cette représentation offre une plage comprise entre -922 337 203 685 477,5808 et 922 337 203 685 477,5807.»

De plus l’instruction vAleur = CCur(TextBox1) entrainera une erreur d’incompatibilité de type (13) si d’aventure l’usager a saisi autre chose qu’un nombre dans la zone de texte (TextBox). Donc il faudrait restreindre aux seuls caractères numériques ainsi qu’au séparateur décimal indiqué en plus des signes + ou – devant le nombre la saisie dans la zone de texte. Ne pas oublier qu’une cellule du classeur et une zone de texte sont des objets forts différents. Tant dans zone de texte que dans TextBox il y a Texte.

Ainsi, si une cellule porte un affichage tel que 22,50$ et qu’une autre cellule porte 22,50€, Excel pourra sans peine additionner ces valeurs et donner le résultat 45,00. Ce qui est faux, 22 dollars cinquante plus 22 euros cinquante ne donne pas 45 quoi-que-ce-soit.

Avant de modifier le code du formulaire présenté je t'invite à formuler ta question en tenant compte des remarques précédentes.

Cordialement,

Guy




Hors Ligne
Rapport   Haut 

Re: transformation d'une valeur d'un TextBox en Euros
#5
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 18-10-2009 12h26
Bonjour Beatbles,

Tu trouveras en pièce jointe peut-être une façon de faire qui te conviendra...

Le module de code du Userform ressemble à ça :
Option Explicit
'---------------------------------------------------------------------------
' Auteur    : Didier FOURGEOT (myDearFriend!)  -  www.mdf-xlpages.com
' Date      : 18/10/2009
'---------------------------------------------------------------------------
Private Sub TextBox1_Enter()
    TextBox1.Text = ValEuros(TextBox1.Text)
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    KeyAscii = AutoriseCaract(KeyAscii)
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    TextBox1.Text = ValEuros(TextBox1.Text, True)
End Sub

Private Sub TextBox2_Enter()
    TextBox2.Text = ValEuros(TextBox2.Text)
End Sub

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    KeyAscii = AutoriseCaract(KeyAscii)
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim V As Currency
     TextBox2.Text = ValEuros(TextBox2.Text, True)
     'Calcul en TextBox3
     V = ValEuros(TextBox1.Text) + ValEuros(TextBox2.Text)
     TextBox3.Text = ValEuros(V, True)
     'Report sur la feuille
     Range("A1") = ValEuros(TextBox1.Text)
     Range("B1") = ValEuros(TextBox2.Text)
     Range("C1") = Range("A1") + Range("B1")
End Sub

Private Function ValEuros(ByVal T As String, Optional E As Boolean) As Variant
    If E Then
        ValEuros = Format(CCur("0" & Trim(T)), "0.00 ?")
    Else
        ValEuros = CCur("0" & Trim(Replace(T, "?", "")))
        If ValEuros = 0 Then ValEuros = ""
    End If
End Function

Private Function AutoriseCaract(ByVal C As Integer) As Integer
    Select Case C
    Case 46         'le point en virgule
        AutoriseCaract = 44
    Case 44, 48 To 57  'les chiffres et la virgule
        AutoriseCaract = C
    End Select
End Function

Private Sub CommandButton1_Click()
    Unload Me
End Sub

Cordialement,

EDITION:
Bonjour Guy
Arf, je n'avais pas vu ton intervention... On est tout à fait d'accord sur le fond cela dit.


Pièce jointe:
zip PourBeatbles.zip   [ Taille: 15.16 Ko - Téléchargements: 945 ]

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: transformation d'une valeur d'un TextBox en Euros
#6
Accro XLPages

Inscription: 09/01/2008
De Montréal, Québec

Messages: 463

Système d'exploitation:
PC
Version Excel utilisée:
97 à 2016
Posté le : 18-10-2009 12h37
Bonjour Didier,

Le tout est de savoir si on «donne du poisson ou si on apprend à pêcher».

De plus il faudrait indiquer à Beatbles que les instructions du genre TextBox2.SetFocus sont inutiles si on a pris la peine de poser dans les propriétés des contrôles l'ordre de tabulation à la propriété TabIndex, aussi que la directive Option Explicit est impérative entre autres choses.

Cordialement,

Guy

Hors Ligne
Rapport   Haut 

Re: transformation d'une valeur d'un TextBox en Euros
#7
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 18-10-2009 13h09
Re Guy,

Heu... Tu vas m'enguirlander lol ?
Cela dit, je suis tout à fait d'accord avec toi et tu as bien raison de faire cette remarque ici, d'autant que c'est en droite ligne avec ce que j'aimerais voir sur le présent site.
Ben tiens, Beatbles, pour la peine , je t'invite à consulter cet article VBA et les variables pour t'aider à comprendre le B-A BA sur ce point et faire connaissance avec l'utilité d'"Option Explicit" notamment.

Et comme l'indique l'ami Guy, je t'invite aussi a regarder attentivement la façon dont j'ai réaffecté les TabIndex des controles du Userform pour outrepasser l'utilisation des SetFocus inutiles. Tu verras aussi que le TextBox3 voit sa propriété TabStop sur False car l'utilisateur n'a normalement pas besoin d'attérir sur ce controle pour saisie... Tu pourrais d'ailleurs remplacer avantageusement ce TextBox3 par un simple contrôle Label.

Bien cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: transformation d'une valeur d'un TextBox en Euros
#8
Accro XLPages

Inscription: 09/01/2008
De Montréal, Québec

Messages: 463

Système d'exploitation:
PC
Version Excel utilisée:
97 à 2016
Posté le : 18-10-2009 13h15
Mais non,

Je n'enguirlande personne.

Seulement je me permets lorsque je vois du code inutile ou mal bricolé d'indiquer une piste de réflexion.

Par exemple quelques images pour expliquer pourquoi les TextBoxTruc.SetFocus sont, le plus souvent, inutiles dans le code et la manière de s'affranchir de cette façon de faire.

Et un petit classeur avec une classe de contrainte numérique pour les zones de texte des formulaires (les textbox des userforms) abondamment commenté.


Cordialement,

Guy







Pièce jointe:
zip beatbles1.zip   [ Taille: 77.14 Ko - Téléchargements: 742 ]
xls beatbles_ClasseDeContrainteNumérique.xls   [ Taille: 46.50 Ko - Téléchargements: 911 ]
Edité par Guy le 18/10/2009 16:09:04

Hors Ligne
Rapport   Haut 

Re: transformation d'une valeur d'un TextBox en Euros
#9
Régulier XLPages

Inscription: 08/12/2008

Messages: 55

Système d'exploitation:
PC
Version Excel utilisée:
2003
Posté le : 19-10-2009 13h32
Bonjour a tous

Je remercie Didier et Guy de l'attention qu'il ont porter a mon probleme.

Je vais lire tout ce que vous avez mis a ma disposition a tête reposer, et préparer la réponse pour  chaque.

A bientot , bien cordialement a tous
Hors Ligne
Rapport   Haut 

Re: transformation d'une valeur d'un TextBox en Euros
#10
Régulier XLPages

Inscription: 08/12/2008

Messages: 55

Système d'exploitation:
PC
Version Excel utilisée:
2003
Posté le : 20-10-2009 10h58

Bonjour a tous
J'appricie les explication trés explicite de Guy au sujet de la différence des cellules et des TextBox , les valeur , les nombres. Il est vrai que je croyais a tord que je recopier l'intérieur de la cellule de la feuille. Je voie aussi que mon emploie de SetFocus n'est pas non plus correcte.
A mon niveau tous les conseils , explications son les bien venus, il faut bien débuter.

-Au sujet des boites de propriété des contrôles, exist il un tuto ou un livre qui répertorie l'utilisation de chaque "mot" ce qui n'aurais permis d'utiliser "Tabindex" comme vous me l'indiquer.

- Classe de contrainte trés bien , surtout avec les explications a chaque ligne, le probleme des modules de classe est que l'on trouve pas d'explication sur le moyen de les créer , peut être là aussi connaissez vous un livre ou tuto traitant du sujet.

Je suis trés satisfait du code de Didier , qui corresponde bien a ce que je désirer.

- L'article VBA et les variables est trés bien fait , je pense  en tirer de bonne choses.Surtout "Option Explicit", que je n'utiliser pas jusque maintenant.

- le code "ClasseDeContrainteNumérique" et trés bien aussi , je vais essayer de m'en servir aussi.

Je suis trés satisfait de vos réponses qui vont bien au dela de mes désirs, et surtout de vos réponse trés aimable .

Cordialement

Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes