Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
    42.3 KB · Affichages: 29
Solution
Penser en premier lieu au format du système windows


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.


cordialement
galougalou
 

fanch55

XLDnaute Barbatruc
Penser en premier lieu au format du système windows


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 .
 

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
 
Réactions: cp4

cp4

XLDnaute Barbatruc
@patricktoulon , bien vu œil de LYNX
 
Dernière édition:

laurent950

XLDnaute Barbatruc
Re,
Bonjour Patrick,
* Réponse = Replace avec Val / Cela tronque le résultat !
* la fonction Val avec Replace pour le remplacement du Point par la Virgule !
 
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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…