Script moins long [Résolu]

Signaler
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
-
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
-
Bonjour à tous.

Je voudrais alléger se script:

TextBox1 = vbNullString
TextBox2 = vbNullString
TextBox3 = vbNullString
TextBox4 = vbNullString
TextBox5 = vbNullString
TextBox6 = vbNullString
TextBox7 = vbNullString
TextBox8 = vbNullString
TextBox9 = vbNullString
TextBox10 = vbNullString
TextBox11 = vbNullString
TextBox12 = vbNullString
TextBox13 = vbNullString
TextBox14 = vbNullString
TextBox15 = vbNullString
TextBox16 = vbNullString
TextBox17 = vbNullString
TextBox18 = vbNullString
TextBox19 = vbNullString
TextBox20 = vbNullString
TextBox21 = vbNullString
TextBox22 = vbNullString
TextBox23 = vbNullString
TextBox24 = vbNullString
TextBox25 = vbNullString
TextBox26 = vbNullString
TextBox27 = vbNullString
TextBox28 = vbNullString
TextBox29 = vbNullString
TextBox30 = vbNullString

Y'a t-il un moyen de faire la même chose mais avec moins de script?

Merci 
A voir également:

19 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
salut,

dim i as long

for i = 1 to 30
   Me.Controls("TextBox" & i).Text = vbNullString
next i

voilà, pas compliqué

@++

<hr width="100%" size="2" />( Nouveau forum : Exclusivement Office & VBA/STRONG>
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
111
Il me semble pas que VBA gère les collections.

Mais tu peux faire :

Dim controle As Control
For each controle In me.Controls
    if (InStr(1, controle.name, "TextBox") > 0) Then
       control.Text = vbNullString
    end if
next controle
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
Merci [auteurdetail.aspx?ID=13557 DARKSIDIOUS]

Mais il ne veux pas le prendre. Il me donne une erreur sur :
control.Text = vbNullString
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
111
oui forcément faute de frappe :

controle.Text

Quoique je suis pas sûr que ca passe mieux : controle étant de type Contrôle, je pense que VBA va te faire un beau petit type incompatible...

A ce moment là :
Dim controle As Control
Dim texte As TextBox
For each controle In me.Controls
    if (InStr(1, controle.name, "TextBox") > 0) Then
       texte = controle
       texte.Text = vbNullString
    end if
next controle
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
quelle erreur ?

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
Re,

Il me fais toujours une erreur:  texte = controle
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
pas de réponse ?

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
53
Salut,
je ne sais pas si cela peu répondre au problème mais il y a ce snippet présent sur Coddyx

'Dans un Module

Public Sub EffaceTextBox(ByRef UForm As UserForm)
    Dim Ctrl As Control
    'Boucle pour tout les contrôle de UForm
    For Each Ctrl In UForm.Controls
       If TypeOf Ctrl Is MSForms.TextBox Then Ctrl.Value = VbNullString
    Next
    Set Ctrl = Nothing
End Sub
<hr style="width: 100%; height: 2px;" />
'N'importe ou dans un USerForm
Call EffaceTextBox(Me)

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
50
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
31 août 2007

Salut,
Je suis débutant mais ce code me parait cohérent ;-)

Public Sub deltxtbox
Dim i as integer
i = 1
    For i = 1 to 30
    TextBox(i) = vbNullString
    i = i + 1
    Next
End Sub

A+
/!/makakdef/!/
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
oui, avec un groupe de controles, c'est tout a fait possible

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
53
Re,
Sauf qu'en VBA il n'y a pas de groupe de controle. :)

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
50
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
31 août 2007

Mon code est-il bien, mauvais, utile, inutile? ><
C'est mon premier code xD
Je pense pas que ce soit si simple, sinon quelqu'un d'autre l'aurait posté avant moi mais bon...

Dis moi quand meme s'il fonctionne ou pas stp!

merci, A+
/!/makakdef/!/
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
53
Ton code fonctionne très bien en VB6 mais pas en VBA puisqu'en VBA il n'est pas possible de faire facielement des groupe de controle comme en VB6?

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
50
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
31 août 2007

D'accord à partir de quoi peut on dire que c'est un groupe de controle?
Car j'ai juste utilisé un For... :-D

/!/makakdef/!/
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
les controles sont indexés (tableau)

TextBox1( i ).Text = VbNullString

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
111
Tu n'as pas du comprendre la boucle for :

Public Sub deltxtbox
Dim i as integer
i = 1
    For i = 1 to 30
    TextBox(i) = vbNullString
    i = i + 1 'PAS LA PEINE : la boucle for fait l'incrémentation automatiquement !
    Next
End Sub
Messages postés
50
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
31 août 2007

Ah que je suis nul des fois xD
merci les gens! enfait je savais qu'il n'y avait pas besoin du i=i+1, mais je l'ai mis...

Allez a+
/!/makakdef/!/

Software is like sex, it's better when it's free
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Et je confirme, PAS de groupe de contrôle en VBA, faut faire une classe (voir une de mes sources)

@++

<hr width="100%" size="2" />( Nouveau forum : Exclusivement Office & VBA/STRONG>
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
ah bien oui, ça fonctionne. Merci