TextBox activeX en format monétaire

daniel1949

XLDnaute Occasionnel
Bonjour le forum,
Je n'arrive pas à inscrire des chiffres en format € dans un textBox de formulaire.
J'ai essayé :

TextBox2 = VBA.Format(TextBox2.Value, " 0.00 €")

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox2.Value = Format(Replace(TextBox2.Value, ".", ","), "#0.00 €")
End Sub

Private Sub TextBox2_Change()
TextBox2.Value = Replace(TextBox2.Value, ".", ",")
TextBox2.Value = Format(TextBox2.Value, "0#.00 €")
End Sub

Private Sub TextBox2_Change()
On Error Resume Next
TextBox2 = Replace(TextBox2, ".", ",")
If Not IsNumeric(TextBox2) Then
TextBox2.Text = Left(TextBox2, Len(TextBox2) - 1)
End If
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With Me.TextBox2
If IsNumeric(.Text) Then
TextBox2.Text = Format(TextBox2.Text, "# ###.00 €")
End If
End With
End Sub

----------------------------------------------------------------------------------------
Private Function FormatEuro(ByVal Txt As String) As String
Txt = Replace(Replace(Replace(Txt, ".", ","), " €", ""), " ", "")
FormatEuro = Format(CDbl(Txt), "### ### ##0.00 €")
End Function

Private Sub TextBox2_AfterUpdate()
TextBox2.Text = FormatEuro(TextBox2.Text)
TextBox2.SelStart = Len(TextBox2.Value) – 1
End Sub
----------------------------------------------------------------------------------------
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox2, KeyAscii)
End Sub
----------------------------------------------------------------------------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As Integer)
Dim SepDec As String
SepDec = Application.International(xlDecimalSeparator)
If Char = 44 Or Char = 46 Then
If InStr(1, Textbox, SepDec, vbTextCompare) > 0 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Asc(SepDec)
End If
Else
If Char < 48 Or Char > 58 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Char
End If
End If
End Function
--------------------------------------------------------------------------------
Et bien d'autres encore sans résultat.

Merci de bien vouloir vous pencher sur mon problème.
Bonne journée.
Daniel


NB : Je suis sous Vista. Il s'agit d'un TextBox de formulaire et non USF.
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : TextBox activeX en format monétaire

Bonjour,

NB : Je suis sous Vista. Il s'agit d'un TextBox de formulaire et non USF.
vu les codes que tu nous montrent et les événements liés à ces contôles("TextBox2_Exit"), il semble bien que ce sont des "textbox" de la boîte à outils contrôles et ce posés sur un USF...

bonne journée
@+
 

daniel1949

XLDnaute Occasionnel
Re : TextBox activeX en format monétaire

Bonjour Pierrot,
vu les codes que tu nous montrent et les événements liés à ces contôles("TextBox2_Exit"), il semble bien que ce sont des "textbox" de la boîte à outils contrôles et ce posés sur un USF...
Effectivement, mais ce n'est pas le cas... J'ai recopié "bêtement" une liste que j'avais faites sur un bloc-notes.
Je confirme PAS d'USF.
Bonne journée.
Daniel
 

Pierrot93

XLDnaute Barbatruc
Re : TextBox activeX en format monétaire

Re,

le mieux est d'utiliser des contrôoles de la boite à outils contrôles.... plus facile à gérer par vba.... ceux de la barre d'outils formulaire, ne sont présent que pour assurer une compatibilité avec les versions antérieures.... enfin, c'est juste mon avis....
 

Dranreb

XLDnaute Barbatruc
Re : TextBox activeX en format monétaire

Bonjour Pierrot
Curieux. Pourtant extrait de l'aide intitulée "Formats numériques définis par l'utilisateur (fonction Format)":
- + $ ( ) Affichage d'un caractère littéral. Pour afficher un caractère différent de ceux répertoriés, faites-le précéder d'une barre oblique inverse (\) ou placez-le entre guillemets doubles (" ").
(\) Affichage du caractère suivant de la chaîne de mise en forme. Pour afficher un caractère doté d'une signification spéciale sous la forme de caractère littéral, faites-le précéder d'une barre oblique inverse (\). La barre oblique inverse n'est pas affichée. Son utilisation revient à placer entre guillemets doubles le caractère suivant. Pour afficher une barre oblique inverse, utilisez deux barres obliques inverses (\\).
À+
 

PMO2

XLDnaute Accro
Re : TextBox activeX en format monétaire

Bonjour,

Essayez la démarche suivante

1) copiez le code suivant dans un module standard

Code:
Sub ExcelTextBoxFormat(Optional dummy As Byte)
Dim TB As Excel.TextBox
Dim S As Worksheet
Dim i&
Set S = ActiveSheet
For i& = 1 To S.TextBoxes.Count
  Set TB = S.TextBoxes(i&)
  '--- Pour identifier sur quelle(s) TextBox(es) appliquer le format
  '--- déflaguer les instruction suivantes ---
'  Debug.Print TB.Name
  If TB.Name = "Text Box 2" Then
    TB.Text = Format(TB.Text, "# ###.00 €")
'  End If
Next i&
End Sub

Si plusieurs TextBox sont présentes et que seules certaines sont concernées par le format monétaire il faudra identifier ces dernières.
Puis utiliser une intruction du type If TB.Name = "Text Box 2" OR TB.Name = "Text Box 1" Then

2) copiez le code suivant dans la fenêtre de code de la feuille contenant les TextBox

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call ExcelTextBoxFormat
End Sub


Cordialement.

PMO
Patrick Morange
 

Dranreb

XLDnaute Barbatruc
Re : TextBox activeX en format monétaire

Mais je m'aperçois qu'il à seulement dit qu'aucun de ses nombreux essais n'a donné le résultat qu'il souhaitait, sur lequel il ne nous a rien dit, ni en quoi les résultats obtenus en différaient.
La seule chose qui n'a pas été essayée c'est la modification après coup à l'aide de Replace du résultat de Format. Ce n'est peut être pas du tout le € qui ne sort pas mais un "." au lieu d'une "," ou l'inverse !!!
 

daniel1949

XLDnaute Occasionnel
Re : TextBox activeX en format monétaire

Bonjour Dranreb,
Plus haut sur le fil... un essai des "," et "."
Txt = Replace(Replace(Replace(Txt, ".", ","), " €", ""), " ", "")
FormatEuro = Format(CDbl(Txt), "### ### ##0.00 €")
En ce qui concerne le "rien dire" : actuellement le numérique de la TextBox2 sort et va se ranger sans pb.
Mon souci est que je voudrais bien "voir" ces chiffres apparaissent en format monétaire dans ce TextBox.
C'est purement esthétique...
En ce qui concerne maintenant le code TextBox1 = Format(TextBox1, "0.00\ €")... Ca ne marche pas non plus !
Merci de vos réponses.
 

Discussions similaires

Réponses
6
Affichages
250

Statistiques des forums

Discussions
312 339
Messages
2 087 407
Membres
103 538
dernier inscrit
Mbolatiana Hyacinthe