[VBA Excel] Ré-init ts txtBox MultiPage en 1x [Fermé]

Signaler
-
phil_232
Messages postés
289
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
-
Bonjour,

Comment réinitialiser tous les TexBox d'une Page (d'une MultiPage) en une seule commande ?

J'ai créé une multi-page.
Dans une certaine page, j'ai beaucoup de zones que l'utilisateur doit encoder.
J'aimerais, lorsque l'utilisateur clique sur le bouton Annuler, que toutes les zones soient ré-initialisées.
Y a-t-il un moyen de le faire en une fois, j'ai pas trop envie de prendre zone par zone et faire TextBox=""

Merci de votre attention !!

4 réponses

Messages postés
289
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
31
Ai essayé de deux manières, mais ça ne fonctionne pas ....
Ai aussi essayé avec ctrls.Value="", ça ne marche pas non plus ...

Est-ce parce que mon FrmPlainte est un formulaire multi-pages ?

Private Sub CmdAnnul_Click()
Dim ctrls As Control
For Each ctrls In FrmPlainte.Controls
If Left$(ctrls.Name, 7) = "TextBox" Then
ctrls.Text = ""
End If
Next

'For Each Ctrls In Controls
' If TypeOf Ctrls Is TextBox Then
' Ctrls.Text = ""
' ElseIf TypeOf Ctrls Is ComboBox Then
' Ctrls.Clear
' End If
'Next

End Sub

J'ai bien regardé dans les différents messages qui parlent de ça.
Je ne comprends pas pq ça ne fonctionne pas chez moi ...
Si qqn peut m'éclairer ?
J'ai trouvé !

1°) En fait, j'ai un un miltipage et aussi des formulaires dans un formulaire.
Ce qui veut dire qu'il faut le faire au niveau du formulaire enfant et pas du formulaire parent comme je faisais (FrmPlainte).
Je n'avais pas su le déchiffrer dans les autres messages du forum, mais voilà, maintenant c'est bon

2°) De plus, avec TypeOf, ça ne fonctionne pas, mais bien avec left$.
Mais j'ai dû encore changer car les noms de mes TextBox sont du style BoxNomPlgt, BoxPrenomPlgt et mes comboBox du style CboVillePlgt, CboCodePostPlgt, ...

Donc, avec le code ci-dessous, ça marche !
For Each ctrls In FrmPlaignant.Controls
If Left$(ctrls.Name, 3) = "Box" Then
ctrls.Text = ""
ElseIf Left$(ctrls.Name, 3) = "Cbo" Then
ctrls.Text = ""
End If
Next
For Each ctrls In FrmContrevenant.Controls
If Left$(ctrls.Name, 3) = "Box" Then
ctrls.Text = ""
ElseIf Left$(ctrls.Name, 3) = "Cbo" Then
ctrls.Text = ""
End If
Next
For Each ctrls In FrmPlainte.Controls
If Left$(ctrls.Name, 3) = "Box" Then
ctrls.Text = ""
ElseIf Left$(ctrls.Name, 3) = "Cbo" Then
ctrls.Text = ""
ElseIf Left$(ctrls.Name, 5) = "Check" Then
ctrls.Value = False
End If
Next

Ouf, voilà un problème résolu.
Merci pour les recherches !
Messages postés
289
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
31
si tu utilise les préfix standard de MS tu pourrais écrire

select case left(ctrls.Name, 3)
case "cbo", "txt" : ctrls:Text = ""
case "chk" : ctrls.Value = False
end select