Changer code clavier ou langue dans Userform

madfox48 - 14 déc. 2012 à 14:39
 madfox48 - 16 déc. 2012 à 19:10
Bonjour,

Voilà mon problème (j'ai beau retourner la question dans tous les sens, je n'y arrive pas).
J'utilise un spreadsheet dans un userform. lorsque l'utilisateur introduit des données numériques et qu'il tape sur le point du clavien numérique, le spreadsheet ne convertit pas le point en virgule comme dans Excel.
je pensais récuperer les informations régionales de l'utilisateur pour adapter le spreadsheet mais je n'y comprend rien.
soit récupérer les touches tapées par l'utilisateur et convertir le "." en ",". je ne trouve aucune solution.

Au secours..... si quelqu'un pouvait m'aider, ce serait super sympa......

Madfox48

3 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
14 déc. 2012 à 19:13
Je ne sais pas pourquoi ni comment tu utilises ce contrôle...
Mais tu pourrais essayer ceci

Private Sub Spreadsheet1_KeyPress(ByVal KeyAscii As Long)
    If KeyAscii 46 Then KeyAscii 44
    Me.Spreadsheet1.ActiveCell = Me.Spreadsheet1.ActiveCell & Chr(KeyAscii)
End Sub


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Salut MPi²,

Merci pour ta proposition mais j'ai des problèmes avec ta solution.
J'ai utilisé un spreadsheet pour que l'utilisateur puisse encoder des montants en face des dépenses qui lui sont proposées. donc il n'est pas obligé de compléter toutes les lignes.
avec ta solution les montants convertis sont toujours considérés comme du texte et non comme des nombres. je pense que je devrais faire un casting sur ceux-ci mais je ne vois pas bien comment.
de plus, j'ai une zone texte qui affiche le total des montants encodés mais j'utilise pour ça une fonction spreadsheet_change. ça fonctionne bien tant que l'utilisateur encode des valeurs avec des virgules et non des points.
serait-il possible de recupérer les paramètres utilisateur du windows pour les déclarer dans le spreadsheet?

merci d'avance pour tes réponses...

Madfox48
0
Salut Mpi²,

Merci pour ton aide.
j ai finalement trouvé la soluce. la voici :
frais_spreadsheet.Range("D" + CStr(i)).Value = Replace(CStr(frais_spreadsheet.Range("D" + CStr(i)).Value), ",", ".")

J ai encore une question : comment désactiver les messages d'avertissements d'un activeX et celui de l'ouvertured'un fichier excel déjà utiliser sur par un autre utilisateur?

Merci de tes réponses.

Madfox48
0
Rejoignez-nous