Gestion de l'erreur avec textbox

Le
Arnaud LECLEMENT
Bonsoir
J'ai sur un userform 30 textbox
textbox1 à textbox30
je souhaite que l'utilisateur saisissent dans l'ordre les textbox, mais pas
tous forcément
En fait, s'il doit saisir dans 3 textbox, il faut que ce soit textbox1,
textbox2, textbox3 et non le 2 le 4
dans l'ordre en fait !
Je vous remercie.
Arnaud
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
Daniel
Le #3182461
Bonsoir.
En cachant les textboxes ?
Cordialement.
Daniel
"Arnaud LECLEMENT" de news: %
Bonsoir
J'ai sur un userform 30 textbox
textbox1 à textbox30
je souhaite que l'utilisateur saisissent dans l'ordre les textbox, mais
pas tous forcément
En fait, s'il doit saisir dans 3 textbox, il faut que ce soit textbox1,
textbox2, textbox3 et non le 2 le 4 ...
dans l'ordre en fait !
Je vous remercie.
Arnaud



Arnaud LECLEMENT
Le #3182401
Bonsoir Daniel
Comment verrais-tu la chose ?
Merci

"Daniel" %
Bonsoir.
En cachant les textboxes ?
Cordialement.
Daniel
"Arnaud LECLEMENT" message de news: %
Bonsoir
J'ai sur un userform 30 textbox
textbox1 à textbox30
je souhaite que l'utilisateur saisissent dans l'ordre les textbox, mais
pas tous forcément
En fait, s'il doit saisir dans 3 textbox, il faut que ce soit textbox1,
textbox2, textbox3 et non le 2 le 4 ...
dans l'ordre en fait !
Je vous remercie.
Arnaud







Daniel
Le #3182321
Ca dépend de ton appli; mais en laissant seul visible le premier textbox,
puis, après saisie, le second etc.
Daniel
"Arnaud LECLEMENT" de news:

Bonsoir Daniel
Comment verrais-tu la chose ?
Merci

"Daniel" %
Bonsoir.
En cachant les textboxes ?
Cordialement.
Daniel
"Arnaud LECLEMENT" message de news: %
Bonsoir
J'ai sur un userform 30 textbox
textbox1 à textbox30
je souhaite que l'utilisateur saisissent dans l'ordre les textbox, mais
pas tous forcément
En fait, s'il doit saisir dans 3 textbox, il faut que ce soit textbox1,
textbox2, textbox3 et non le 2 le 4 ...
dans l'ordre en fait !
Je vous remercie.
Arnaud











Arnaud LECLEMENT
Le #2928551
Ok !
Merci beaucoup
Arnaud


"Daniel"
Ca dépend de ton appli; mais en laissant seul visible le premier textbox,
puis, après saisie, le second etc.
Daniel
"Arnaud LECLEMENT" message de news:

Bonsoir Daniel
Comment verrais-tu la chose ?
Merci

"Daniel" %
Bonsoir.
En cachant les textboxes ?
Cordialement.
Daniel
"Arnaud LECLEMENT" message de news: %
Bonsoir
J'ai sur un userform 30 textbox
textbox1 à textbox30
je souhaite que l'utilisateur saisissent dans l'ordre les textbox, mais
pas tous forcément
En fait, s'il doit saisir dans 3 textbox, il faut que ce soit textbox1,
textbox2, textbox3 et non le 2 le 4 ...
dans l'ordre en fait !
Je vous remercie.
Arnaud















anonymousA
Le #2928541
En supposant que tu n'as bien que 30 textboxes sur ton UF,

Faire un module de classe nommé Class1 dans lequel tu écris

Public WithEvents txt As MSForms.TextBox

Private Sub txt_Change()

If IsNumeric(Right(txt.Name, 2)) Then

Select Case Right(txt.Name, 2)

Case 10 To 27

For I = 1 To Right(txt.Name, 2) - 1

UserForm1.Controls("Textbox" & I).Visible = False

Next

For I = Right(txt.Name, 2) + 3 To 30

UserForm1.Controls("Textbox" & I).Visible = False

Next

Case 28

For I = 1 To Right(txt.Name, 2)

UserForm1.Controls("Textbox" & I).Visible = False

Next

End Select

Else

Select Case Right(txt.Name, 1)

Case 1

For I = Right(txt.Name, 1) + 3 To 30

UserForm1.Controls("Textbox" & I).Visible = False

Next

Case 2 To 9

For I = 1 To Right(txt.Name, 1) - 1

UserForm1.Controls("Textbox" & I).Visible = False

Next

For I = Right(txt.Name, 1) + 3 To 30

UserForm1.Controls("Textbox" & I).Visible = False

Next

End Select

End If

End Sub

Dans ton userform, tu écris

Dim txtarr(1 To 30) As New Classe1

Private Sub UserForm_Initialize()

For I = 1 To 30
Set txtarr(I).txt = Me.Controls("TextBox" & I)
Next

End Sub

Ce faisant, tous les textbox auront le même comportement vis-à-vis de
l'evenement Change et feront ce que tu demandes.
Il te faudra gérer le fait que l'utilisateur puisse s'être trompé de
textbox et puisse revenir en arrière.


A+

Bonsoir Daniel
Comment verrais-tu la chose ?
Merci

"Daniel" %

Bonsoir.
En cachant les textboxes ?
Cordialement.
Daniel
"Arnaud LECLEMENT" message de news: %

Bonsoir
J'ai sur un userform 30 textbox
textbox1 à textbox30
je souhaite que l'utilisateur saisissent dans l'ordre les textbox, mais
pas tous forcément
En fait, s'il doit saisir dans 3 textbox, il faut que ce soit textbox1,
textbox2, textbox3 et non le 2 le 4 ...
dans l'ordre en fait !
Je vous remercie.
Arnaud











anonymousA
Le #2928521
erratum

Dim txtarr(1 To 30) As New Class1

A+

En supposant que tu n'as bien que 30 textboxes sur ton UF,

Faire un module de classe nommé Class1 dans lequel tu écris

Public WithEvents txt As MSForms.TextBox

Private Sub txt_Change()

If IsNumeric(Right(txt.Name, 2)) Then

Select Case Right(txt.Name, 2)

Case 10 To 27

For I = 1 To Right(txt.Name, 2) - 1

UserForm1.Controls("Textbox" & I).Visible = False

Next

For I = Right(txt.Name, 2) + 3 To 30

UserForm1.Controls("Textbox" & I).Visible = False

Next

Case 28

For I = 1 To Right(txt.Name, 2)

UserForm1.Controls("Textbox" & I).Visible = False

Next

End Select

Else

Select Case Right(txt.Name, 1)

Case 1

For I = Right(txt.Name, 1) + 3 To 30

UserForm1.Controls("Textbox" & I).Visible = False

Next

Case 2 To 9

For I = 1 To Right(txt.Name, 1) - 1

UserForm1.Controls("Textbox" & I).Visible = False

Next

For I = Right(txt.Name, 1) + 3 To 30

UserForm1.Controls("Textbox" & I).Visible = False

Next

End Select

End If

End Sub

Dans ton userform, tu écris

Dim txtarr(1 To 30) As New Classe1

Private Sub UserForm_Initialize()

For I = 1 To 30
Set txtarr(I).txt = Me.Controls("TextBox" & I)
Next

End Sub

Ce faisant, tous les textbox auront le même comportement vis-à-vis de
l'evenement Change et feront ce que tu demandes.
Il te faudra gérer le fait que l'utilisateur puisse s'être trompé de
textbox et puisse revenir en arrière.


A+


Bonsoir Daniel
Comment verrais-tu la chose ?
Merci

"Daniel" %

Bonsoir.
En cachant les textboxes ?
Cordialement.
Daniel
"Arnaud LECLEMENT" message de news: %

Bonsoir
J'ai sur un userform 30 textbox
textbox1 à textbox30
je souhaite que l'utilisateur saisissent dans l'ordre les textbox,
mais pas tous forcément
En fait, s'il doit saisir dans 3 textbox, il faut que ce soit
textbox1, textbox2, textbox3 et non le 2 le 4 ...
dans l'ordre en fait !
Je vous remercie.
Arnaud













anonymousA
Le #2928171
Décidément, ce soir, ca patine.

ON recommence tout

Dans un module standard , tu déclares
Public bused as boolean

Dans le module de classe nommé Classe1 tu écris

Public WithEvents txt As MSForms.TextBox

Private Sub txt_Change()

If bused = True Then Exit Sub

If IsNumeric(Right(txt.Name, 2)) Then

Select Case Right(txt.Name, 2)

Case 10 To 27

For I = 1 To Right(txt.Name, 2) - 1

UserForm1.Controls("Textbox" & I).Visible = False

Next

For I = Right(txt.Name, 2) + 3 To 30

UserForm1.Controls("Textbox" & I).Visible = False

Next

Case 28

For I = 1 To Right(txt.Name, 2)

UserForm1.Controls("Textbox" & I).Visible = False

Next

Case >28

For I = 1 27

UserForm1.Controls("Textbox" & I).Visible = False

Next

End Select




Else

Select Case Right(txt.Name, 1)

Case 1

For I = Right(txt.Name, 1) + 3 To 30

UserForm1.Controls("Textbox" & I).Visible = False

Next

Case 2 To 9

For I = 1 To Right(txt.Name, 1) - 1

UserForm1.Controls("Textbox" & I).Visible = False

Next

For I = Right(txt.Name, 1) + 3 To 30

UserForm1.Controls("Textbox" & I).Visible = False

Next

End Select

End If

bused = True

End Sub

Dans le module du Userform appelé ici userform1, tu écris
Au passage, il est utile d'avoir n commandbutton pour réafficher les
textboxes et remettre la variable publique bused à false

Dim txtarr(1 To 30) As New Classe1

Private Sub CommandButton1_Click()

For Each ctrl In Me.Controls
If TypeOf ctrl Is MSForms.TextBox Then
With ctrl
.Visible = True
.Text = ""
End With
End If
Next

bused = False

End Sub


Private Sub UserForm_Initialize()

For I = 1 To 30
Set txtarr(I).txt = Me.Controls("TextBox" & I)
Next

End Sub

Ce coup-ci, j'espère que c'est le bon.
Ce que font ces procs, c'est que quelque soit le textbox que tu choisis,
seuls les 2 textboxes suivants sont visibles sauf dans le cas où
l'utilisateur choisit un textbox de 29 à 30 auqel cas on laisse affiché
les textboxes 28 à 30.

A+

Ca dépend de ton appli; mais en laissant seul visible le premier textbox,
puis, après saisie, le second etc.
Daniel
"Arnaud LECLEMENT" de news:

Bonsoir Daniel
Comment verrais-tu la chose ?
Merci

"Daniel" %

Bonsoir.
En cachant les textboxes ?
Cordialement.
Daniel
"Arnaud LECLEMENT" message de news: %

Bonsoir
J'ai sur un userform 30 textbox
textbox1 à textbox30
je souhaite que l'utilisateur saisissent dans l'ordre les textbox, mais
pas tous forcément
En fait, s'il doit saisir dans 3 textbox, il faut que ce soit textbox1,
textbox2, textbox3 et non le 2 le 4 ...
dans l'ordre en fait !
Je vous remercie.
Arnaud














Poster une réponse
Anonyme