Microsoft 365 Decimale dans Userform

eric72

XLDnaute Accro
Bonjour à tous ,
J'ai un petit souci avec une formule qui fonctionne dur un userform et pas sur celui-ci "UsfProduit"
je ne comprends pas bien pourquoi, il y a un bug, voilà le code (code de Patrick Toulon qui m'a beaucoup aidé pour un autre fichier) :

'forcer les textbox en numerique seulement
Function KeyAsciiX(keyascii)
'TRANSFORMER LE POINT PAR UNE VIRGULE
If keyascii = 46 Then keyascii = 44
If InStr("1234567890,-", Chr(keyascii)) = 0 Then keyascii = 0
With ActiveControl
If InStr(.Value, ",") Then keyascii = 0
If Chr(keyascii) = "-" And .Value <> "" Then keyascii = 0
End With
End Function

Private Sub PrixAchatPlante_KeyPress(ByVal keyascii As MSForms.ReturnInteger): KeyAsciiX keyascii: End Sub

et le bug est sur:
If InStr(.Value, ",")

Merci d'avance pour l'explication pour laquelle ça ne fonctionne pas sur CE Userfrom
Eric
 
Solution
Bonsoir eric
le problème vient de ce que ActiveControl ne représente Rien !
j'ai donc modifié pour passer en argument le Control concerné ;
VB:
'forcer  les textbox en numerique seulement
Function KeyAsciiX(ByRef Ctrl As Object, keyascii)'Ici'
'TRANSFORMER LE POINT PAR UNE VIRGULE
With Ctrl 'Ici'
    If keyascii = 46 Or keyascii = 44 Then keyascii = IIf(InStr(.Value, ",") > 0 Or Len(.Value) = 0, 0, 44)
    If InStr(1, "0123456789,", Chr(keyascii)) = 0 Then keyascii = 0
  End With
End Function
'ci dessous'
Private Sub PrixAchatPlante_KeyPress(ByVal keyascii As MSForms.ReturnInteger): KeyAsciiX PrixAchatPlante, keyascii: End Sub
à voir donc
jean marie

eric72

XLDnaute Accro
Bonjour Patrick,
En effet j'ai juste copié la formule pour mon autre Userform et je ne comprenais pas pourquoi cela ne fonctionnait pas et je ne voulais pas t'embêter de nouveau.
Je n'avais pas compris la subtilité des Frame.
Je progresse pas à pas, d'ailleurs je suis entrain de refaire tout mon code avec la méthode "Patrick Toulon"
Merci et bonne journée
Eric
 

patricktoulon

XLDnaute Barbatruc
Bonjour Eric
y a pas de mal
et oui avec les frames ,listbox combobox ,multipage il faut faire attention car ce sont des windows a part entière (comme les userforms elle ont un handle) et donc sont les parent direct du control et plus le userform
du fait que se sont des fenêtres elle ont aussi la propriété activecontrol comme le userform

ça fait partie des joyeuseté de la hérarchie des pointeur en mémoire mais là on entre dans un language un peu compliqué
en tout cas quand tu développe un interface (userform) pense toujours a la pile hiérarchique
 

eric72

XLDnaute Accro
en fait c'est sur des textbox mais elles ne sont pas forcément toutes remplies à chaque fois, malgré cela j'aimerais que le calcul se fasse quand même sur les textbox renseignées, donc j'ai adapté ce code mais ça ne va pas.
Ou est la boulette?
Merci
 

Pièces jointes

  • Gestion Fiche Produit test.xlsm
    204 KB · Affichages: 0

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 343
Membres
111 107
dernier inscrit
cdel