Magic_Doctor
XLDnaute Barbatruc
Bonsoir,
Je rentre un chiffre, quel qu'il soit, dans un TextBox situé sur la feuille.
Une fois la valeur validée par la touche clavier "Enter", je veux que ce chiffre ait pour suffixe "%" (il s'agit, en effet, de pourcentages).
Par ex : 12,75 --> 12,75%
J'y suis parvenu ainsi :
1/ Dans le module de feuille :
2/ La fonction :
Ça marche bien, mais ne pourrait-on pas faire plus simple ?
Je rentre un chiffre, quel qu'il soit, dans un TextBox situé sur la feuille.
Une fois la valeur validée par la touche clavier "Enter", je veux que ce chiffre ait pour suffixe "%" (il s'agit, en effet, de pourcentages).
Par ex : 12,75 --> 12,75%
J'y suis parvenu ainsi :
1/ Dans le module de feuille :
VB:
Private Sub TextBoxPP1_Change()
If TextBoxPP1 = vbNullString Then Exit Sub
TextBoxPP1.Text = Replace(TextBoxPP1.Text, ".", ",") 'pour remplacer le "." par une "," quand on rentre un nombre décimal
End Sub
Private Sub TextBoxPP1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then 'touche clavier "Enter"
If IsNumeric(TextBoxPP1) Then
TextBoxPP1.Value = Format(TextBoxPP1.Value / 100, "##,##0.00%") 'obligé de diviser par 100...
Else
TextBoxPP1.Value = vbNullString
End If
[f2] = ExtractNumber(TextBoxPP1.Value)
[A1].Select
End If
End Sub
VB:
Function ExtractNumber(Txt As String, Optional n As Byte = 1)
'*************************************************************
'Renvoie un nombre contenu dans une chaîne
'job75
'*************************************************************
'- txt : une chaîne contenant un ou plusieurs nombres
'- n : numéro d'ordre du nombre recherché. Si omis, le 1er
'Ex : Combo208 -33,15 romina4 | n = 1 --> 208
' n = 2 --> -33,15
' n = 3 --> 4
Dim i%, T As String, u As String, s
Txt = Replace(Txt, ",", ".")
For i = 1 To Len(Txt)
T = Mid(Txt, i, 1): u = Mid(Txt, i, 2)
If T <> "." And Not (T Like "#" Or u Like "-#") Then Txt = Application.Replace(Txt, i, 1, " ")
Next
s = Split(Application.Trim(Txt))
If n - 1 > UBound(s) Then ExtractNumber = "" Else ExtractNumber = Val(s(n - 1))
End Function