Bonsoir à tous,

Afin de m'éviter de fastidieuses recopies de code, et surtout afin d'éviter un éventuel oubli, je souhaite lancer une procédure au chargement de chaque formulaire.
Celle-ci a pour objectif de créer la procédure "OnKeyPress" de chacun de mes zones de textes numériques (sans source liée) afin d'y limiter la saisie.
Voici les codes utilisés :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Private Sub Form_Load()
 
testnumerique (Me.Name)
 
End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Public Sub testnumerique(FrmName As String)
Dim ctl As Control
 
For Each ctl In Forms(FrmName).Controls
    If Left(ctl.Name, 3) = "nxn" Then
        'variante 1 : ctl.OnKeyPress = ctl.Name & "_KeyPress(KeyAscii As Integer)" & Chr(10) & "KeyAscii=verifnumerique(KeyAscii)" & Chr(10) & "End Sub"
        'variante 2 : ctl.OnKeyPress = "KeyAscii=verifnumerique(KeyAscii)"
        'variante 3 : verifnumerique(KeyAscii)
    End If
Next ctl
End Sub
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
Public Function verifnumerique(i As Integer) As Integer
 
If InStr("0123456789,.", Chr(i)) > 0 Or i = 8 Then
    verifnumerique = i
    Exit Function
Else
    'a revoir, ne renvoit pas la virgule malgré tests msgbox
    If i = 46 Then
        verifnumerique = 44
        Exit Function
    Else
        verifnumerique = 0
    End If
End If
 
End Function

La source du problème est la procédure "testnumerique" ; En essayant d'écrire dans la textbox, j'obtiens l'un des message suivant :
Variante 1 :Access ne peut pas trouver l'objet
Variante 2 : Idem ! (sans surprise...)
Variante 3 : L'objet ne contient pas d'objet automation "KeyAscii"

Je me demandais donc s'il était possible "d'écrire" le code au chargement du formulaire, plutôt que d'affecter une valeur à l'événement ?
Est-il possible de récupérer le KeyAscii d'une autre manière afin de ne pas y faire référence, ce qu'Access ne semble pas supporter, bien que son utilisation ai lieu juste après un KeyPress...

En vous remerciant d'avance,

Wulfram