Passage d'un TextBox via une variable

Salut,

J'éprouve des difficultées avec mon document. J'ai fabriqué un formulaire qui contient 20 à 30 case TextBox que l'utilisateur devrai remplir. Je veux donc appeler une fonction semblable a celle-ci a chaque fois que chacun des TexBox est modifié.

Je veux donner le TextBox en question, la valeur min et max et la valeur que contient le TextBox en question. Toute fois mon preblème est que il ne reconnait pas "TextBo" comment étant le TextBox en question. Donc il ne veux pas enlever le dernier caractèere de la ligne si le dernier tappé sort de la marde déterminé par min et max et n'est pas une valeur numérique.

Voici la fonction en question

Function validation_nb(min, max, valeur, TextBo)

'Valide que la saisie est bien un nombre valide
'Regarde si la saisie est autre qu'un nombre, si oui, elle efface la case
If Not IsNumeric(TextBo.Value) Or TextBo < min Or TextBo > max Then
    If valeur <> "" Then
    TextBo = Left(TextBo.Value, Len(TextBo.Value) - 1)
    End If
End If
End Function

Merci d'avance!!

Bonsoir,

Explique-toi mieux, et mets un fichier modèle qui permette de voir et de répondre plus concrètement. Il y a lieu de penser que ce que tu fais n'est pas adapté à ce que tu veux faire, mais pour te dire en quoi il faut bien comprendre ce que tu veux...

Tu peux intervenir sur la saisie dans des TextBox principalement à travers deux évènements Change qui se décleche à chaque caractère saisi, Exit qui intervient lorsqu'on le quitte. Si tu as un grand nombre de TextBox, que tu dois contrôler de la même façon, il est opportun de renvoyer à une autre procédure l'évaluation à faire en lui envoyant la valeur du TextBox et un moyen de l'identifier.

Une fonction destinée à renvoyer un résultat n'est pas la procédure adaptée pour ce faire.

D'autre part tester dans une même instruction si une valeur est ou non numérique et dans quel intervalle numérique elle se situe, te génèrera des erreurs soit d'incompatibilité de type, soit si la comparaison se fait le risque qu'elle soit fausse.

[Pour illustrer, tape dans une cellule la formule : ="a">1000, tu obtiendras comme résultat VRAI (parce que tout texte, y compris la valeur "" est apprécié comme supérieur à tout nombre dans une comparaison utilisant > ou <)]

Cordialement.

Bonjour,

Il m'est possible de copier le même code que j'ai mis pour le TextBox1 pour toute mes autres textbox sauf que je ne trouvais pas ca logique de copier le tout 20-30 fois juste afin de valider s'il s'agit bien de chiffre dans chacune des cases. De plus il y a aussi la date dont il faut je valide le format avant d'enregistrer le tout dans un tableau sur une autre feuille. Je ne sais pas quel serait le moyen plus adapté afin de valider les données saisie par l'utilisateur.

Merci d'avance

Samuel

Bonjour,

J'ai jeté un oeil... On peut effectivement la vérification sur une procédure unique, dès lors que la valeur du TextBox est <>"" (ce me semble préférable et économise des appels inutiles), donc pour chaque TextBox :

If TextBoxn.Value <> "" Then validation_nb n

n étant le numéro d'ordre du TextBox et permet à la procédure de validation de réagir, effacer la saisie et remettre le focus sur le TxtBox concerné.

Pour la vérification proprement dite, pas de problème pour vérifier que la valeur est numérique (mais est-ce systématique pour tous ?). Par contre, pour les limitations de valeurs, il semble que cela varie, il faut donc savoir quelles sont ces limitations selon les TextBox...

On aurait quelque chose comme :

With Controls("TextBox" & n)

If IsNumeric(.Value) Then

===ici vérif des valeurs===

Else

.Value = ""

.SetFocus

End If

Cordialement.

Un gros merci ça ma débogué!!

J'y vais encore avec une appelle de fonction

'Fonction qui valide si la saisi est bien un chiffre entre 0 et le maximum passé par référence. Elle envoit aussi
'le numéro de la TextBox afin que chacune d'elle puisse y avoir accès. Merci cassage de tête!!!!(vive les forum pour vba)
Function validation_nb(n As Integer, ca As Integer)
    With Controls("TextBox" & n)
        If (Not IsNumeric(.Value) And (.Value) <> "") Then
        .Value = Left(.Value, Len(.Value) - 1)
        End If
        If (.Value) > ca And (.Value) <> "" Then
        .Value = Left(.Value, Len(.Value) - 1)
        End If
    End With
End Function

n etant le numero du textBox et ca etant le chiffre maximal que l'on peut écrire. Je sais que j'aurais pu condenser en un seul if mais je ne l'ai pas fais. j'avais au dessus de 30 appelle a cette fonction donc j'étais content que tout ce code ne se retrouve pas a chacun de mes TextBox!!

Un gros merci!

Samuel

Rechercher des sujets similaires à "passage textbox via variable"