XL 2019 Le problème de la suppression des virgules lors de la modification des valeurs Listbox

Dadi147

XLDnaute Occasionnel
bonjour.......Ce code sert à modifier les valeurs sur le userform Le problème auquel nous sommes confrontés est lorsque nous saisissons un nombre qui inclut une virgule. Il est supprimé. Par exemple, si vous écrivez 23,56 2356 est entré Que puis-je faire pour que les valeurs soient acceptées sans changement
VB:
Private Sub B_valid_Click()
If Me.TextBox1.Text = "" And TextBox2.Text = "" And TextBox3.Text = "" Or TextBox4.Text = Empty Then
MsgBox "Sélectionnez les valeurs à modifier"
Exit Sub
Else
End If
  Enreg = Me.Enreg
  For c = 1 To NbCol
   If Not Range(NomTableau).Item(Enreg, c).HasFormula Then
     tmp = Me("textbox" & c)
     If IsNumeric(Replace(tmp, ".", ",")) And InStr(tmp, " ") = 0 Then
        tmp = Replace(tmp, ".", ",")
        Range(NomTableau).Item(Enreg, c) = CDbl(tmp)
     Else
         If IsDate(tmp) Then
           Range(NomTableau).Item(Enreg, c) = CDate(tmp)
         Else
           Range(NomTableau).Item(Enreg, c) = tmp
         End If
     End If
    Else
     Range(NomTableau).Item(Enreg - 1, c).Copy
     Range(NomTableau).Item(Enreg, c).PasteSpecial Paste:=xlPasteFormats
    End If
  Next c
  UserForm_Initialize
  raz
End Sub
 
C

Compte Supprimé 979

Guest
Bonjour le fil,

A part si vos paramètres Windows ont été changé par défaut à savoir la virgule pour la séparation décimale
Je ne vois pas comment c'est possible.

Il suffit d'appliquer un code basic, non 🤔

VB:
Private Sub B_valid_Click()
  ' Si numériquez 1.2 ou 1,2
  If IsNumeric(Me.TextBox1) Then
    With ActiveSheet
      ' Au cas ou, mais ne peut jamais arriver (normalement)
      .Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = CDbl(Replace(Me.TextBox1, ".", ","))
    End With
  End If
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  ' Saisie que de nombres et point ou virgule
  If InStr(1, "0123456789.,", Chr(KeyAscii)) = 0 Then KeyAscii = ""
  ' Modification du point en virgule
  If Chr(KeyAscii) = "." Then KeyAscii = Asc(",")
End Sub

A+
 

Pièces jointes

  • Dadi147_Exemple.xlsm
    17.8 KB · Affichages: 5
Dernière modification par un modérateur:

Discussions similaires

Statistiques des forums

Discussions
315 088
Messages
2 116 089
Membres
112 658
dernier inscrit
doro 76