Résolu 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 ???
 
Ce fil a été résolu! Aller à la solution…

Fichiers joints

laurent950

XLDnaute Accro
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
 

laurent950

XLDnaute Accro
Re,
Copier ici la partie du code que vous avez (Avant d'avoir placé se que je vous ai dit dans votre module)
cdt
 

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 Accro
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 Impliqué
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.
 

Fichiers joints

Dernière édition:

GALOUGALOU

XLDnaute Impliqué
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
 

fanch55

XLDnaute Impliqué
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 .
 
Ce message a été identifié comme étant une solution!

mateous33

XLDnaute Nouveau
super et merci a tous
cela fonctionne
j'ai appliqué ce que vous m'avez dis et cela fonctionne
prenez soin de vous ; a+
 

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
 
  • J'aime
Reactions: cp4

cp4

XLDnaute Impliqué
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:

laurent950

XLDnaute Accro
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:

fanch55

XLDnaute Impliqué
Je suis pommé ou des posts ont été supprimés .
On est parti sur des problèmes de délimiteur décimal si je ne m'abuse ? o_O
 

patricktoulon

XLDnaute Barbatruc
bonjour cp4
oui bon ben c'est pas les 500 posts a la limites qui sont problème

j'estime que quand on intervient pour un débutant on dois pas faire ce genre d'erreur dans le domaine du b a ba de vba ,c'est pas l'aider
quand ça va arriver va lui expliquer que son fichier de 5000 lignes qu'il a laborieusement rédigé est bon a foutre a la poubelle parce que les formules correspondent plus les données sont décalées etc....et qu'il n'a pas de sauvegarde :D :D :D

je me souviens il y a quelques années j’étais a la place d'un débutant et des erreurs comme celles ci m'ont bien fait C...!!!
 
  • J'adore
Reactions: cp4

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas