OVH Cloud OVH Cloud

virgule ou point clavier numérique

5 réponses
Avatar
pierfrene
Salut a vous

Mon Système d'exploitation est en français quand j'utilise mon
clavier numérique dans VB6 (dans une application que j'ai écrie) il me donne
un point au lieu de la virgule.
et j'ai l'erreur : Erreur d'exécution "13: Type incompatible

quand mon application se trouve sur un système Anglais et que j'utilise la
clavier
numérique je mais le point sans problème aucune erreur.

Il y t'il une solution pour régler ce problème.

Merci a l'avance

5 réponses

Avatar
le_troll
Bonjour,
Faut voir ce que tu rentres dans le code "." ou ",", normalement il marche
en anglais "."...
Sinon, voir aussi ton OS, est-il paramétré pour la Gaule ?
--
------------------------------------------
Merci, @+, bye, Joe

------------------------------------------
Avec une hache, celui qui tient le manche a toujours raison !

"pierfrene" <moldry@(supprimerceci)hotmail.com> a écrit dans le message de
news:
Salut a vous

Mon Système d'exploitation est en français quand j'utilise mon
clavier numérique dans VB6 (dans une application que j'ai écrie) il me


donne
un point au lieu de la virgule.
et j'ai l'erreur : Erreur d'exécution "13: Type incompatible

quand mon application se trouve sur un système Anglais et que j'utilise la
clavier
numérique je mais le point sans problème aucune erreur.

Il y t'il une solution pour régler ce problème.

Merci a l'avance




Avatar
Antoun
pierfrene a écrit:
Salut a vous

Mon Système d'exploitation est en français quand j'utilise mon
clavier numérique dans VB6 (dans une application que j'ai écrie) il me donne
un point au lieu de la virgule.



tu remarqueras que c'est un comportement tout ce qu'il y a de + normal !
ton pavé numérique comporte bien une touche . et non une touche virgule.

Seul Excel est suffisamment malin et substitue une , au .
La solution est de faire comme lui !

(...)
Il y t'il une solution pour régler ce problème.



Ton code doit commencer par récupérer le séparateur décimal de l'OS. Il
y a des API pour cela, mais le plus simple est de jouer avec CStr :

SepaDec = Mid(CStr(1 / 2), 2, 1)

Ensuite, si ton SepaDec n'est pas le point, tu utilises le KeyPress ou
le KeyDown des zones de saisies concernées pour faire la substitution.
Avatar
pierfrene
> Ton code doit commencer par récupérer le séparateur décimal de l'OS. Il
y a des API pour cela, mais le plus simple est de jouer avec CStr :

SepaDec = Mid(CStr(1 / 2), 2, 1)

Ensuite, si ton SepaDec n'est pas le point, tu utilises le KeyPress ou
le KeyDown des zones de saisies concernées pour faire la substitution.



Sa m'intéresse. j'aurais de besoin de plus explication, parce la je suis
perdue.
Avatar
Antoine Dinimant
Supposons que ton projet VB contienne une feuille nommée Feuille, et que
sur cette feuille il y ait une zone de saisie (TextBox) nommée Saisie.
Cette zone est destinée à recevoir un nombre, donc si tu es en OS
français, tout point qui y est tapé doit être transformé en virgule.

Tu commences par créer une variable SepaDec au niveau de ta Feuille ou,
mieux, d'un module séparé.

Public SepaDec As String

A l'ouverture de ton projet, par ex. sur le Form_Load de Feuille, tu
détermines ton séparateur décimal (on suppose qu'il ne changera pas
pendant l'exécution du projet).

Private Sub Form_Load()
SepaDec = Mid(CStr(1 / 2), 2, 1)
End Sub

Ensuite, tu vas dans l'événement KeyPress de ta zone de saisie, et tu y
mets le code suivant :

Private Sub Saisie_KeyPress(KeyAscii As Integer)
If SepaDec <> "." And KeyAscii = Asc(".") Then KeyAscii = Asc(SepaDec)
End Sub

Alternativement, si tu veux que tous les contrôles de ta feuille
réagissent comme cela, tu mets le If SepaDec <> "." And KeyAscii =
Asc(".") Then KeyAscii = Asc(SepaDec) dans le Form_KeyPress au lieu de
le mettre dans le Saisie_KeyPress, et tu mets la propriété KeyPreview de
ta feuille sur True (ce qui veut dire qu'elle intercepte les événements
du clavier avant de les re-transmettre à ses contrôles).

pierfrene a écrit:
>>Ton code doit commencer par récupérer le séparateur décimal de l'OS. Il
>>y a des API pour cela, mais le plus simple est de jouer avec CStr :
>>
>>SepaDec = Mid(CStr(1 / 2), 2, 1)
>>
>>Ensuite, si ton SepaDec n'est pas le point, tu utilises le KeyPress ou
>>le KeyDown des zones de saisies concernées pour faire la substitution.
>
>
> Sa m'intéresse. j'aurais de besoin de plus explication, parce la je suis
> perdue.
>
>
Avatar
pierfrene
Merci sa fonctionne très bien.

"Antoine Dinimant" a écrit dans le message de
news:
Supposons que ton projet VB contienne une feuille nommée Feuille, et que
sur cette feuille il y ait une zone de saisie (TextBox) nommée Saisie.
Cette zone est destinée à recevoir un nombre, donc si tu es en OS
français, tout point qui y est tapé doit être transformé en virgule.

Tu commences par créer une variable SepaDec au niveau de ta Feuille ou,
mieux, d'un module séparé.

Public SepaDec As String

A l'ouverture de ton projet, par ex. sur le Form_Load de Feuille, tu
détermines ton séparateur décimal (on suppose qu'il ne changera pas
pendant l'exécution du projet).

Private Sub Form_Load()
SepaDec = Mid(CStr(1 / 2), 2, 1)
End Sub

Ensuite, tu vas dans l'événement KeyPress de ta zone de saisie, et tu y
mets le code suivant :

Private Sub Saisie_KeyPress(KeyAscii As Integer)
If SepaDec <> "." And KeyAscii = Asc(".") Then KeyAscii = Asc(SepaDec)
End Sub

Alternativement, si tu veux que tous les contrôles de ta feuille
réagissent comme cela, tu mets le If SepaDec <> "." And KeyAscii > Asc(".") Then KeyAscii = Asc(SepaDec) dans le Form_KeyPress au lieu de
le mettre dans le Saisie_KeyPress, et tu mets la propriété KeyPreview de
ta feuille sur True (ce qui veut dire qu'elle intercepte les événements
du clavier avant de les re-transmettre à ses contrôles).

pierfrene a écrit:
>>Ton code doit commencer par récupérer le séparateur décimal de l'OS. Il
>>y a des API pour cela, mais le plus simple est de jouer avec CStr :
>>
>>SepaDec = Mid(CStr(1 / 2), 2, 1)
>>
>>Ensuite, si ton SepaDec n'est pas le point, tu utilises le KeyPress ou
>>le KeyDown des zones de saisies concernées pour faire la substitution.
>
>
> Sa m'intéresse. j'aurais de besoin de plus explication, parce la je


suis
> perdue.
>
>