Modification code - VBA

Bonjour le formum.

Je souhaiterai apporter une modification sur un code VBA.

Dans un UserForm, je saisis un certain nombre de données dans des textbox. J'ai bloqué la saisie de valeurs non numériques.

Cependant, je souhaiterai pouvoir saisir des valeurs avec virgules.

Dim OK As Boolean, TB As Variant, LR& 

OK = True 'initialise la valiable "OK"
For Each TB In Me.Controls
    If TB.Name <> "TextObservations" Then 
        If TypeOf TB Is MSForms.TextBox And Not IsNumeric(TB) Then
            OK = False 
            TB.Value = "" 
        End If
    End If
Next TB
If OK = False Then
    MsgBox "Merci de renseigner des valeurs numériques dans les champs vides !", vbCritical 
    Else
With Worksheets("XXXX")
        LR = .Cells(.Rows.Count, 3).End(xlUp).Row + 1
        .Cells(LR, 3) = Now
        .Cells(LR, 4) = XXX * 1
        .Cells(LR, 5) = XXX * 1
        ....
        ....

Ce code ouvre un msgbox lorsque qu'une valeur non numérique est saisie.

Je voudrais qu'il n'empêche pas la saisie de valeurs à virgules.

Merci par avance de toute pistes,

Cdlt,

Bonjur,

Fournir le fichier avec au moins une ligne de données et son UserForm SVP

Contraindre une saisie numérique :

Private Sub tb5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   Dim AllK$
   AllK = "[01234567989,]"
   If Not ChrW(KeyAscii) Like AllK Then KeyAscii = 0
End Sub

A+

Bonjour,

Voici le fichier :)

Pas besoin de tout ce code.

Avec celui-ci vous ne pouvez entrer que des données numériques et la virgule :

Private Sub TextJableMax01_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim AllK$
AllK = "[01234567989,]"
If Not ChrW(KeyAscii) Like AllK Then KeyAscii = 0
End Sub

Le code est à reproduire pour chaque TextBox mais il existe une formulation plus efficace avec les modules de classe... ou on peut traiter les TextBox collectivement (à condition de les nommer de manière appropriée...)

A+

Bonjour,

Merci de votre réponse.

Je pense néanmoins que j'ai besoin de tout ce code parce qu'il y a plusieurs conditions. Je dois exclure un textbox de condition de texte de saisie numérique et que l'on puisse saisir du texte dans cette textbox (textbox commentaire dans le fichier).

Est-ce qu'il n'y a pas un moyen sur la ligne

If TypeOf TB Is MSForms.TextBox And Not IsNumeric(TB) Then

lorsqu'on dit "Not IsNumeric(TB)" d'inclure le fait que l'on puisse saisir une virgule ?

EDIT : et je ne comprend pas quelque chose. Dans votre proposition, vous faites un Private Sub pour 1 textbox, mais mon code actuel se trouve dans Private Sub VALIDATION_Click() ... ?

En la matière il vaut mieux éviter d'avoir à réinventer la roue...

En pièce jointe une proposition avec votre fichier modifié sur la base des modules de classe.

1arthur-exl-vg.xlsm (48.72 Ko)

Attention : actuellement je ne gère que les TextBox numériques : je n'ai pas adapté les calculs de valeurs moyennes et je ne gère pas le TextBox commentaires qui est utilisable.

Il y a encore quelques perfectionnements à apporter (par exemple vérifier que l'utilisateur n'a pas tapé 2 virgules ou que les valeurs sont valides... Mais dans l'ensemble c'est comme cela qu'on fait...

Nota : Je ne répondrai que sur l'amélioration de mon code, pas à des questions concernant votre code ancien.

A+

Bonjour,

Je vous remercie de votre réponse.

Je n'essai pas de réinventer la roue du carrosse mais de gagner un peu de temps. Le fichier que je vous ai donné de comporte qu'un "module" d'userform, mais le vrai fichier en comporte une vingtaine.

Je vais essayer de voir ce que je peux faire avec votre code.

Je reviens vers vous si je rencontre des difficultés le concernant.

Cdlt,

Une version corrigée, épurée et complétée.

Mes codes sont en général d'inspiration normalisée modulaire et généralisable. Facilement adaptable.

Explication et adaptation sur demande (si vous ne modifiez pas sans cesse la structure de la BD)

A+

Rechercher des sujets similaires à "modification code vba"