virgule ou point clavier numérique

Le
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
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
le_troll
Le #14650981
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" 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




Antoun
Le #14650971
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.
pierfrene
Le #14650881
> 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.
Antoine Dinimant
Le #14735001
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.
>
>
pierfrene
Le #14734931
Merci sa fonctionne très bien.

"Antoine Dinimant" 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 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.
>
>




Publicité
Poster une réponse
Anonyme