Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Utilisation Keypress

  • Initiateur de la discussion stt
  • Date de début
S

stt

Guest
Bonjour,

Ayant un userform contenant 8 textbox, comment peut-on éviter de repeter 8 fois le code suivant :

Private Sub prixtole_keypress(ByVal KeyASCII As MSForms.ReturnInteger)
If KeyASCII = 46 Then
KeyASCII = 44
End If
End Sub

alors que seulement le nom "prixtole" change .

Merci par avance
 
@

@+Thierry

Guest
Bonjour Stt

Voici une réponse en directe du Grand Chef à Trois Plumes (Laurent Longre)

Tu peux généraliser ça pour tous les TextBox présents sur ton
UserForm, avec une seule procédure TextBox_KeyPress commune:

1) Dans un module de classe ("Class1") :

Public WithEvents TB As MSForms.TextBox

Private Sub TB_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 46 Then KeyAscii = 44
End Sub

2) Dans le module du UserForm :

Dim C As Collection

Private Sub UserForm_Initialize()
Dim Ctrl As Control
Set C = New Collection
For Each Ctrl In Controls
If TypeOf Ctrl Is MSForms.TextBox Then
C.Add New Class1
Set C(C.Count).TB = Ctrl
End If
Next Ctrl
End Sub


Je n'ai pas testé mais je fais totale comfiance à Laurent.

Bonne Journée
@+Thierry
 
T

Ti

Guest
En ce qui me concerne j'utilise cette simple fonction qui remplace la virgule par un point au moment du controle de validité de la saisie. Ca présente l'avantage de la simplicité et ça évite l'écriture d'un module de classe


Function RemplaceVirgule(Valeur)
RemplaceVirgule = Replace(Valeur, ",", ".")
End Function
 
@

@Christophe@

Guest
Bonjour les grand chefs


Ben je vois que vous êtes a deux la sur ce problème, j'en connais un STT qui va être gatée, lol

Beaucoup de boulot Thierry surement, parce que tu n'es plus trop souvent sur le forum, mais content de t'entendre tous de même.

Bonne journée a vous tous, et pour ceux qui bosse, bon boulot

@Christophe@
 
@

@+Thierry

Guest
Bonjour Ti et @Xtof@ et le Forum,

Oui très débordé en ce moment, et pas d'ordi pendant mes temps libres, ce qui explique ma présence sporadique depuis les problèmes du Forum. Mais je suis toujours "alive" et je pense à vous tous et toutes.

Bonne Fin de Journée et Bon Week End à tous
@+Thierry
 
S

stt

Guest
Merci pour les infos, @+Thierry et Ti.

J'ai gardé la solution de Ti qui est très simple à mettre en oeuvre.
Par contre je garde l'autre solution au chaud, elle pourra me servir pour d'autres application
 
@

@+Thierry

Guest
Re Bonsoir,

Heuh juste comme çà pour ma gouverne, (moi j'ai toujours eu du mal avec les Functions), je ne vois pas comment mettre en oeuvre cette function en saisie sur plusieurs TextBox... Quelque chose m'échappe dans la syntax et surtout pour trouver l'évènement commun qui appliquerait cette fonction à toutes les TextBox pendant la saisie ? (ou alors je n'ai rien compris à ce fil !! lol mais c'est vrai que je n'ai pas eu trop de temps pour tester aussi !)

Par avance merci et bon week end
@+Thierry
 
S

stt

Guest
En fait, l'opération de conversion se fait par la suite, lors de la récupération des données.
Voilà la syntaxe que j'avais avant :
prixmatiere = (LongueurTole / 1000) * (LargeurTole / 1000) * DensiteTole * EpTole * PrixTole * MargeTole

Maintenant elle devient :
prixmatiere = (RV(LongueurTole) / 1000) * (RV(LargeurTole) / 1000) * RV(DensiteTole) * RV(EpTole) * RV(PrixTole) * RV(MargeTole)
où RV est la function et les autres données sont des Textbox

Ce n'est pas une conversion générale des textbox.

A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…