XL 2013 impossibilité de changer la virgule en point dans une userform

mateous33

XLDnaute Nouveau
bonjour
voila J'ai deux PC
un qui fonctionne sous excel 2013.
et l'autre sous excel 2016.
J'ai un fichier avec une macro et donc une userform.
Lorsque j'active la macro chez celui qui a excel 2013, toutes les valeurs sont par défaut avec une virgule (cf photo)
et quand j'active sur l'autre pc, toutes les valeurs sont par défauts avec un point. (cf photo)
J'ai coché pourtant "le point" dans les options excel (options avancées) pour les décimales.
mes deux pc sont en azerty.
COMMENT FAIRE POUR AVOIR UN POINT DANS MON USERFORM SUR LES DEUX PC ???
 

Pièces jointes

  • problème userform virgule.jpg
    problème userform virgule.jpg
    42.3 KB · Affichages: 29
Solution
Penser en premier lieu au format du système windows
1588596073716.png


Celui-ci a une très grosse influence sur Office, j'ai connu pas mal de déboires avec la virgule .
Surtout pour les recherches et comparaisons .

laurent950

XLDnaute Barbatruc
Bonjour,
Si Il s'agit d'un TextBox ?
Exemple : Val(Replace(Me.Controls("TextBox" & i), ",", "."))

Nota :
La fonction Val reconnaît uniquement le point ( . ) comme un séparateur décimal valide. Lorsque d’autres séparateurs décimaux sont utilisés, comme dans les applications internationales, faites plutôt appel à CDbl pour convertir une chaîne en nombre.

Cdt
 

mateous33

XLDnaute Nouveau
bonjour Laurent,
et merci de votre réponse.
cependant je suis novice dans cela et je ne comprends pas ce que vous m'avez écris.
Alors effectivement c'est un textbox.
j'ai placé Val(Replace(Me.Controls("TextBox" & i), ",", ".")) dans ma macro mais cela ne fonctionne pas.
j'ai placé Val(Replace(Me.Controls("TextBox" & i), ",", ".")) dans le textbox mais cela ne fonctionne pas non plus.
cordialement
 

mateous33

XLDnaute Nouveau
Private Sub CmdAnnuler_Click()

Unload Me

End Sub

Private Sub CmdValider_Click()



Range("B50000").End(xlUp).Offset(1, 0).Value = TextBox1
Range("C50000").End(xlUp).Offset(1, 0).Value = TextBox2.Value
Range("D50000").End(xlUp).Offset(1, 0).Value = TextBox3.Value
Range("E50000").End(xlUp).Offset(1, 0).Value = TextBox4.Value
Range("F50000").End(xlUp).Offset(1, 0).Value = TextBox5.Value
Range("G50000").End(xlUp).Offset(1, 0).Value = TextBox6.Value
Range("H50000").End(xlUp).Offset(1, 0).Value = TextBox7.Value
Range("I50000").End(xlUp).Offset(1, 0).Value = TextBox8.Value
Range("J50000").End(xlUp).Offset(1, 0).Value = TextBox10.Value
Range("K50000").End(xlUp).Offset(1, 0).Value = TextBox11.Value
Range("L50000").End(xlUp).Offset(1, 0).Value = TextBox12.Value
Range("M50000").End(xlUp).Offset(1, 0).Value = TextBox13.Value
Range("N50000").End(xlUp).Offset(1, 0).Value = TextBox14.Value
Range("O50000").End(xlUp).Offset(1, 0).Value = TextBox9.Value
Range("P50000").End(xlUp).Offset(1, 0).Value = TextBox15.Value
Range("Q50000").End(xlUp).Offset(1, 0).Value = ComboBox1
Range("R50000").End(xlUp).Offset(1, 0).Value = ComboBox2
Range("S50000").End(xlUp).Offset(1, 0).Value = TextBox16.Value


End Sub

Private Sub TextBox1_Change()

TextBox1.Value = Format(Now, "dd/mm/yyyy")

End Sub

Private Sub ComboBox1_Change()




If ComboBox1 = "Cornettos" Then

TextBox3.Value = TextBox2.Value * (45 / 100)
TextBox4.Value = TextBox2.Value * (22.7 / 100)
TextBox5.Value = TextBox2.Value * (11.3 / 100)
TextBox6.Value = TextBox2.Value * (3.24 / 100)
TextBox7.Value = TextBox2.Value * (10.5 / 100)
TextBox8.Value = TextBox2.Value * (1.46 / 100)
TextBox10.Value = TextBox2.Value * (0.42 / 100)
TextBox11.Value = TextBox2.Value * (0.39 / 100)
TextBox12.Value = TextBox2.Value * (0.26 / 100)
TextBox13.Value = TextBox2.Value * (2.6 / 100)
TextBox14.Value = TextBox2.Value * (2.6 / 100)
TextBox9.Value = TextBox2.Value * (0.6 / 100)
TextBox15.Value = TextBox2.Value * (0.2 / 100)


End If


If ComboBox1 = "Tuiles" Then

TextBox3.Value = TextBox2.Value * (45 / 100)
TextBox4.Value = TextBox2.Value * (22.7 / 100)
TextBox5.Value = TextBox2.Value * (11.3 / 100)
TextBox6.Value = TextBox2.Value * (3.24 / 100)
TextBox7.Value = TextBox2.Value * (10.5 / 100)
TextBox8.Value = TextBox2.Value * (1.46 / 100)
TextBox10.Value = TextBox2.Value * (0.42 / 100)
TextBox11.Value = TextBox2.Value * (0.39 / 100)
TextBox12.Value = TextBox2.Value * (0.26 / 100)
TextBox13.Value = TextBox2.Value * (2.6 / 100)
TextBox14.Value = TextBox2.Value * (2.6 / 100)
TextBox9.Value = TextBox2.Value * (0.6 / 100)
TextBox15.Value = TextBox2.Value * (0.2 / 100)

End If


If ComboBox1 = "Frites" Then

TextBox3.Value = TextBox2.Value * (50 / 100)
TextBox4.Value = TextBox2.Value * (20 / 100)
TextBox5.Value = TextBox2.Value * (10 / 100)
TextBox6.Value = TextBox2.Value * (3 / 100)
TextBox7.Value = TextBox2.Value * (10 / 100)
TextBox8.Value = TextBox2.Value * (1.5 / 100)
TextBox10.Value = TextBox2.Value * (0.5 / 100)
TextBox11.Value = TextBox2.Value * (0.5 / 100)
TextBox12.Value = TextBox2.Value * (0.3 / 100)
TextBox13.Value = TextBox2.Value * (2.5 / 100)
TextBox14.Value = TextBox2.Value * (2.5 / 100)
TextBox9.Value = TextBox2.Value * (0.5 / 100)
TextBox15.Value = TextBox2.Value * (0.2 / 100)

End If




End Sub
 

laurent950

XLDnaute Barbatruc
Re,
VB:
Private Sub CmdAnnuler_Click()
    Unload Me
End Sub

Private Sub CmdValider_Click()
    Range("B50000").End(xlUp).Offset(1, 0).Value = TextBox1.value
    Range("C50000").End(xlUp).Offset(1, 0).Value = TextBox2.Value
    Range("D50000").End(xlUp).Offset(1, 0).Value = TextBox3.Value
    Range("E50000").End(xlUp).Offset(1, 0).Value = TextBox4.Value
    Range("F50000").End(xlUp).Offset(1, 0).Value = TextBox5.Value
    Range("G50000").End(xlUp).Offset(1, 0).Value = TextBox6.Value
    Range("H50000").End(xlUp).Offset(1, 0).Value = TextBox7.Value
    Range("I50000").End(xlUp).Offset(1, 0).Value = TextBox8.Value
    Range("J50000").End(xlUp).Offset(1, 0).Value = TextBox10.Value
    Range("K50000").End(xlUp).Offset(1, 0).Value = TextBox11.Value
    Range("L50000").End(xlUp).Offset(1, 0).Value = TextBox12.Value
    Range("M50000").End(xlUp).Offset(1, 0).Value = TextBox13.Value
    Range("N50000").End(xlUp).Offset(1, 0).Value = TextBox14.Value
    Range("O50000").End(xlUp).Offset(1, 0).Value = TextBox9.Value
    Range("P50000").End(xlUp).Offset(1, 0).Value = TextBox15.Value
    Range("S50000").End(xlUp).Offset(1, 0).Value = TextBox16.Value
    Range("Q50000").End(xlUp).Offset(1, 0).Value = ComboBox1.Value
    Range("R50000").End(xlUp).Offset(1, 0).Value = ComboBox2.Value
' Fonction
    RemplacePointParVirgule
End Sub

Private Sub TextBox1_Change()
    TextBox1.Value = Format(Now, "dd/mm/yyyy")
' Fonction
    'Ps = C'est une date pas besoin a voir !
        RemplacePointParVirgule
End Sub

Private Sub ComboBox1_Change()
    If ComboBox1 = "Cornettos" Then
        TextBox3.Value = TextBox2.Value * (45 / 100)
        TextBox4.Value = TextBox2.Value * (22.7 / 100)
        TextBox5.Value = TextBox2.Value * (11.3 / 100)
        TextBox6.Value = TextBox2.Value * (3.24 / 100)
        TextBox7.Value = TextBox2.Value * (10.5 / 100)
        TextBox8.Value = TextBox2.Value * (1.46 / 100)
        TextBox10.Value = TextBox2.Value * (0.42 / 100)
        TextBox11.Value = TextBox2.Value * (0.39 / 100)
        TextBox12.Value = TextBox2.Value * (0.26 / 100)
        TextBox13.Value = TextBox2.Value * (2.6 / 100)
        TextBox14.Value = TextBox2.Value * (2.6 / 100)
        TextBox9.Value = TextBox2.Value * (0.6 / 100)
        TextBox15.Value = TextBox2.Value * (0.2 / 100)
    End If
    If ComboBox1 = "Tuiles" Then
        TextBox3.Value = TextBox2.Value * (45 / 100)
        TextBox4.Value = TextBox2.Value * (22.7 / 100)
        TextBox5.Value = TextBox2.Value * (11.3 / 100)
        TextBox6.Value = TextBox2.Value * (3.24 / 100)
        TextBox7.Value = TextBox2.Value * (10.5 / 100)
        TextBox8.Value = TextBox2.Value * (1.46 / 100)
        TextBox10.Value = TextBox2.Value * (0.42 / 100)
        TextBox11.Value = TextBox2.Value * (0.39 / 100)
        TextBox12.Value = TextBox2.Value * (0.26 / 100)
        TextBox13.Value = TextBox2.Value * (2.6 / 100)
        TextBox14.Value = TextBox2.Value * (2.6 / 100)
        TextBox9.Value = TextBox2.Value * (0.6 / 100)
        TextBox15.Value = TextBox2.Value * (0.2 / 100)
    End If
    If ComboBox1 = "Frites" Then
        TextBox3.Value = TextBox2.Value * (50 / 100)
        TextBox4.Value = TextBox2.Value * (20 / 100)
        TextBox5.Value = TextBox2.Value * (10 / 100)
        TextBox6.Value = TextBox2.Value * (3 / 100)
        TextBox7.Value = TextBox2.Value * (10 / 100)
        TextBox8.Value = TextBox2.Value * (1.5 / 100)
        TextBox10.Value = TextBox2.Value * (0.5 / 100)
        TextBox11.Value = TextBox2.Value * (0.5 / 100)
        TextBox12.Value = TextBox2.Value * (0.3 / 100)
        TextBox13.Value = TextBox2.Value * (2.5 / 100)
        TextBox14.Value = TextBox2.Value * (2.5 / 100)
        TextBox9.Value = TextBox2.Value * (0.5 / 100)
        TextBox15.Value = TextBox2.Value * (0.2 / 100)
' Fonction
    RemplacePointParVirgule
End If
End Sub
sub RemplacePointParVirgule()
Dim cCont As Control
    For Each cCont In Me.Controls
        If TypeName(cCont) = "TextBox" Then
            ' Val(Replace(Me.Controls("TextBox" & i), ",", "."))
            Val(Replace(cCont.Value, ",", "."))
        end if
    Next cCont
End Sub

Cdt
 

cp4

XLDnaute Barbatruc
Bonjour mateous33:), Laurent950;),

un essai, rajoute ce code dans ton formulaire (à adapter le cas échéant à la textbox maitresse).
VB:
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'KeyAscii = 44 ----> virgule (,) et KeyAscii = 46 ----> point (.)
    If KeyAscii = 46 Then KeyAscii = 44
End Sub
sans fichier, en voici un vite fait à tester.
Prenez soin de vous.

edit: vérifie le séparateur de décimal, sur les 2 versions d'excel dans option.
 

Pièces jointes

  • Classeur1.xlsm
    23.3 KB · Affichages: 2
Dernière édition:

GALOUGALOU

XLDnaute Accro
bonjour matéous 33 bonjour le fil bonjour le forum

vous dites que la virgule est fonctionnelle sur un ordi et pas sur un autre. excel étant différent il semble évident que le traitement par excel est en cause.

ma réflexion m’emmène sur une autre piste
en fonction de la région le séparateur décimale est soit un point, soit une virgule.
ma question.
l'ordinateur avec excel 2016 est il bien déclaré sur la bonne région.

separateur décimale.JPG

cordialement
galougalou
 

patricktoulon

XLDnaute Barbatruc
re
bonjour
Laurent
je vais soulever un lievre
d'apres toi que va t il se passer si la saisie précédente a une de ses colonnes vides
VB:
Private Sub CmdValider_Click()
    Range("B50000").End(xlUp).Offset(1, 0).Value = TextBox1.value
    Range("C50000").End(xlUp).Offset(1, 0).Value = TextBox2.Value
    Range("D50000").End(xlUp).Offset(1, 0).Value = TextBox3.Value
    Range("E50000").End(xlUp).Offset(1, 0).Value = TextBox4.Value
    Range("F50000").End(xlUp).Offset(1, 0).Value = TextBox5.Value
    Range("G50000").End(xlUp).Offset(1, 0).Value = TextBox6.Value
    Range("H50000").End(xlUp).Offset(1, 0).Value = TextBox7.Value
    Range("I50000").End(xlUp).Offset(1, 0).Value = TextBox8.Value
    Range("J50000").End(xlUp).Offset(1, 0).Value = TextBox10.Value
    Range("K50000").End(xlUp).Offset(1, 0).Value = TextBox11.Value
    Range("L50000").End(xlUp).Offset(1, 0).Value = TextBox12.Value
    Range("M50000").End(xlUp).Offset(1, 0).Value = TextBox13.Value
    Range("N50000").End(xlUp).Offset(1, 0).Value = TextBox14.Value
    Range("O50000").End(xlUp).Offset(1, 0).Value = TextBox9.Value
    Range("P50000").End(xlUp).Offset(1, 0).Value = TextBox15.Value
    Range("S50000").End(xlUp).Offset(1, 0).Value = TextBox16.Value
    Range("Q50000").End(xlUp).Offset(1, 0).Value = ComboBox1.Value
    Range("R50000").End(xlUp).Offset(1, 0).Value = ComboBox2.Value
' Fonction
    RemplacePointParVirgule
End Sub
A méditer
 

cp4

XLDnaute Barbatruc
re
bonjour
Laurent
je vais soulever un lievre
d'apres toi que va t il se passer si la saisie précédente a une de ses colonnes vides
VB:
Private Sub CmdValider_Click()
    Range("B50000").End(xlUp).Offset(1, 0).Value = TextBox1.value
    Range("C50000").End(xlUp).Offset(1, 0).Value = TextBox2.Value
    Range("D50000").End(xlUp).Offset(1, 0).Value = TextBox3.Value
    Range("E50000").End(xlUp).Offset(1, 0).Value = TextBox4.Value
    Range("F50000").End(xlUp).Offset(1, 0).Value = TextBox5.Value
    Range("G50000").End(xlUp).Offset(1, 0).Value = TextBox6.Value
    Range("H50000").End(xlUp).Offset(1, 0).Value = TextBox7.Value
    Range("I50000").End(xlUp).Offset(1, 0).Value = TextBox8.Value
    Range("J50000").End(xlUp).Offset(1, 0).Value = TextBox10.Value
    Range("K50000").End(xlUp).Offset(1, 0).Value = TextBox11.Value
    Range("L50000").End(xlUp).Offset(1, 0).Value = TextBox12.Value
    Range("M50000").End(xlUp).Offset(1, 0).Value = TextBox13.Value
    Range("N50000").End(xlUp).Offset(1, 0).Value = TextBox14.Value
    Range("O50000").End(xlUp).Offset(1, 0).Value = TextBox9.Value
    Range("P50000").End(xlUp).Offset(1, 0).Value = TextBox15.Value
    Range("S50000").End(xlUp).Offset(1, 0).Value = TextBox16.Value
    Range("Q50000").End(xlUp).Offset(1, 0).Value = ComboBox1.Value
    Range("R50000").End(xlUp).Offset(1, 0).Value = ComboBox2.Value
' Fonction
    RemplacePointParVirgule
End Sub
A méditer
@patricktoulon ;), bien vu œil de LYNX
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
je sais ca a du mal a rentrer faut faire un peu d'effort
dans le cadre d'une saisie dans un tableau
toujours toujours always,toujours,always,toujours déterminer AVANT la ligne de destination et celle ci doit etre commune
c'est le B A BA
dans une écriture débutant
VB:
Private Sub CmdValider_Click()
   ligne=Range("B50000").End(xlUp).Offset(1, 0)
   Range("B"& ligne) = TextBox1.value
Range("C"& ligne) = TextBox2.value
'etc...'

j'ajouterait toujours en mode débutant que travaillant dans userform et la possibilité que la feuille de destination ne soit pas celle active il serait de bonne augure de préciser le parent du range dans un bloc with par exemple

il y aurait encore a dire mais je terminerais en disant que les tableaux structuré n'existent pas pour rien
il est plus facile de faire un listrow.add et de taper cette ligne plutôt que de prendre le risque de taper une ligne déjà rempli car même la "B" n'est pas un gage de sécurité
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 096
Messages
2 116 174
Membres
112 677
dernier inscrit
Justine11