Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

initialisation avec FOR de textboxs

D

dupiniec

Guest
bonjour

j'ai un code qui donne ca :

S1_T.Value = ""
S2_T.Value = ""
S3_T.Value = ""
S4_T.Value = ""
S5_T.Value = ""
...

ou les objets Si_T sont des textboxs (jen ai 53) et quatre autres type de testboxs (en 53 aussi)

est il possible de passer par une boucle for :

for i=1 to 53
"s" & i &"_T".value =""
next i

bon alors bien sur ce que je vient de marquer ne fonctionne pas, ni d'ailleurs :

s=""s" & i &"_T"
s.value=""


quelqu'un a t il une solution svp ?

par avance merci
 
M

Mytå

Guest
Salut dupiniec

A suivre mais regarde se bout de macro si cela pourrait t'aider

Option Explicit
Sub lire_et_vider()
Dim Nbre_page As Byte
Dim i As Byte
Dim Nbre_shape As Byte
Dim j As Byte
Nbre_page = Worksheets.Count
For i = 1 To Nbre_page
Nbre_shape = Sheets(i).Shapes.Count
For j = 1 To Nbre_shape
If Right(Sheets(i).Shapes(j).Name, 2) = "_T" Then
Sheets(i).OLEObjects(Sheets(i).Shapes(j).Name).Object.Value = ""
End If
Next j
Next i
End Sub

Sinon un fichier Zipper avec tes boutons nous aiderait plus

Mytå
 
D

dupiniec

Guest
pour le code je ne suis pas trop sur, ou il faudrait que je vide la totalité des données (confidentielles) qui sont dedant.

par contre merci pour la réponse il faut que je la tente ce matin.

A mon avis c'est juste un exemple mais pourquoi utilises tu les feuilles et des shapes, car les textboxs sont dans une userform

mais bon j'essaye de passer le code direcetement peut etre (et meme surement) que j'ai du mal m'expliquer


mais encore une fois merci
 
D

dupiniec

Guest
en fait ce qui serait trop top serait de pouvoir ecrire ca autrement :

S1_T.value

en :

textbox("S1_T").value

ce qui me permettrait de faire varier le nom de la textbox par l'intermédiare d'une variablede type string.

mais comme ca, brut de décoffrage, ca ne marche pas bien sur !!!!
 
M

Mytå

Guest
Re Dupiniec

Ok regarde alors du cote des controls de ton Userform

La macro donnerait ceci :

Sub Vider_Textbox_Userform()
Dim Nbre As Byte
Dim i As Byte
Dim j As Byte
Nbre = UserForm1.Controls.Count
For i = 0 To Nbre - 1
For j = 1 To Nbre
If UserForm1.Controls(i).Name = "S" & j & "_T" Then
UserForm1.Controls(i) = ""
GoTo saut
End If
Next j
saut:
Next i
End Sub

Mytå
 
S

sylsyl

Guest
Salut,

voici un petit truc qui pourrait t'aider.

Il faut que toutes tes textboxs aient le meme nom, par exemple "Text1"

Tu peux le faire simplememt en faisant des copier/coller de la premiere Textbox dans ton UserForm.
Click "oui" au message de confirmation.

puis
For i=0 to 52
if Text1(i)="" then
....
end if
next i

i est l'index de la textbox dans la propriete de celle-ci (de 0 a 52 pour 53 Textboxs).

J'ai deja fait ca pour des Checkbox avec VB6, il n'y a pas de raison pour que ca ne marche avec des Textboxs avec VBA.

J'espere avoir repondu a ton souhait
 
D

dupiniec

Guest
merci a tous pour les reponses.

en fait j'ai trouvé un truc qui marche du feu de dieu c'est le Controls :


Controls("Texbox1").value=""
du coup Textbox1 peut etre obtenu avec la concatenation de textbox et i

et ca marche trop top

Merci a tous
 
@

@+Thierry

Guest
Bonjour ce Fil,

Pas mal ton truc de Controls("Texbox1"), Dupiniec.

Sinon il existe aussi d'autres méthodes dont voici une démo complète que j'ai faite pour ce Forum, il y a quelques temps :

Lien supprimé (26k)


Et si un jour vous aviez la même chose à faire pour de ActiveX sur Feuilles voici encore une autre démo :

Lien supprimé (25k)


Bonne Journée
@+Thierry
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…