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

  • Initiateur de la discussion Initiateur de la discussion mateous33
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 .
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
 
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
 
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
 
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
 
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

Dernière édition:
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
 
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
 
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:
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
653
Réponses
11
Affichages
1 K
Retour