Microsoft 365 Decimale dans Userform

  • Initiateur de la discussion Initiateur de la discussion eric72
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
362
Retour