Sur site, avec un portable sur une caisse ou sur le coin d'une machine, ou même parterre, il n'est pas toujours évidant de jouer des doigts sur le clavier, tout en tenant le multimètre ou le tourne visse.

Je n'ai pas trouvé dans la FAQ ou dans les contributions, la solution à ce besoin (ou je mis serai mal pris ! ).

Comment forcer les entrées dans un TextBox (qui ne doit contenir que du numérique), pour que les touches numériques accessibles avec l’appui de Maj maintenu ou verrouillage du Maj (cas d’un PC portable qui n’a que très rarement un pavé numérique), soient assurément du numérique.

Voilà un petit bout de code qui me rend la vie plus facile.
Sur un Form, 1 TextBox
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If Text1.BackColor = &HC0E0FF Then Text1.BackColor = &HFFFFFF
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
 'transformation du code ascii des touches au dessus de la ligne AZERTY......
 'pour ne pas avoir à verrouiller ou maintenir l'appuis de Maj
 Case 38: KeyAscii = 49 ' de & en 1
 Case 233: KeyAscii = 50 'de é en 2
 Case 34: KeyAscii = 51 ' de " en 3
 Case 39: KeyAscii = 52 ' de ' en 4
 Case 40: KeyAscii = 53 ' de ( en 5
 Case 45: KeyAscii = 54 ' de - en 6 (ici probleme si besoin d'un nombre en négatif)
 Case 232: KeyAscii = 55 'de è en 7
 Case 95: KeyAscii = 56 ' de _ en 8
 Case 231: KeyAscii = 57 'de ç en 9
 Case 224: KeyAscii = 48 'de à en 0
 
 Case 46: KeyAscii = 44 ' de . en ,
 Case 44 'autorise la ,
 
 'ou inversement si le separateur decimal et le .
 'Case 44: KeyAscii = 46 ' de , en .
 'Case 46 'autorise le .
 
 Case 8 'autorisation de <--- suppr
 '(la touche Suppr, <- et -> n'est pas detecté comme KeyAscii)
 Case 48 To 57 'autorisation de toutes les touches numeriques (0 à 9)
 'sinon annule la derniere touche
 Case Else: KeyAscii = 0 ': Beep
End Select
End Sub
Private Sub Text1_LostFocus()
If Not IsNumeric(Text1) Then
 'cas de plus d'un separateur decimale ou ......
 Text1.BackColor = &HC0E0FF
 MsgBox "Entrée non valide", vbInformation
 Text1.SetFocus
End If
End Sub