Excell Textbox

Résolu/Fermé
anocheda Messages postés 54 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 17 novembre 2008 - 22 juil. 2008 à 16:39
 anocheda - 12 août 2008 à 14:44
Bonjour,

J'ai crée plusieurs text boxs sous excell et je cherche avec une macro a modifier le texte de toutes avec un For i=...

en gros j'ai:
texbox1, textbox2...textbox52
et j ecris dans ma macro :

For i = 1 to 52
textbox i = ....
Next i

forcement ca marche pas, il reconnait pas textboxe i et je sais pas trop quoi faire (tout ecrire a la main est faisable mais y a pleins de conditions et ca va prendre trop de temps )

J'ai vu qu on pouvait faire ca avec un "Frame" mais je sais pas ce que c'est...est ce que quelqu'un peut m'aider

Merci

Antoine
A voir également:

18 réponses

antic80 Messages postés 4751 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 159
22 juil. 2008 à 17:31
salut

au lieu de mettre textbox i , essaye avec textbox & i
0
anocheda Messages postés 54 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 17 novembre 2008 3
22 juil. 2008 à 18:00
Bonjour,

J'y ai cru ca aurait été parfait mais ca marche pas....

j'ai le code suivant

For i = 1 To 9

Me.Joueur&i.Value = Me.TextBox&i.Value

Next i

je veux que la valeur de Joueur1 soit egale a TextBox1
...Joueur9=Textbox9

il me met membre de méthode ou de donnée introuvable...

merci si tu as une autre idée
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
22 juil. 2008 à 19:08
Bonjour,
Tu peu essayer en créyant une collection..
VBA et les collections
A+
0
anocheda Messages postés 54 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 17 novembre 2008 3
22 juil. 2008 à 19:24
Salut,

J'avou que je comprend pas tres bien ce que fait le truc
j suis un gros debutant en VBA (je m'y suis mi hier!!!) et je saias pas trop a quoi sert ce code...
voila si tu connais plus simple hesit pas

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
m@rina Messages postés 20202 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 11 mai 2024 11 279
22 juil. 2008 à 19:41
Bonjour,

Tout d'abord, où se trouve tes textbox ? Dans ta feuille ou dans une Userform ?

m@rina
0
anocheda Messages postés 54 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 17 novembre 2008 3
22 juil. 2008 à 19:43
Salut,

Bé je penses qu'elles sont dans la feuilles : j'ai utilisé diretcement la boite a outil controles...
je sais pas ce que c'est un UserForm
0
m@rina Messages postés 20202 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 11 mai 2024 11 279
22 juil. 2008 à 20:18
Re...

Voilà déjà ce qu'il fallait savoir ! Des contrôles dans une feuille ne se traitent pas de la même façon que des contrôles dans une Userform.
Mais comme dans ton exemple tu mets : "Me", je ne comprenais pas car Me fait référence au formulaire qui contient les contrôles...

Voilà le code que tu peux utiliser :

Sub zdt()
Dim zdt As OLEObject
For Each zdt In ActiveSheet.OLEObjects
If Left(zdt.Name, 7) = "TextBox" Then 'teste le nom des objets

'tu mets ici tes actions


End If
Next zdt

End Sub
0
anocheda Messages postés 54 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 17 novembre 2008 3
22 juil. 2008 à 20:35
Bonjour Marina,

Mon probleme c'est qu'il leur arrive pas tous la meme chose me TextBox, enfin presque :

ce que je veux c'est :

TextBox1 = Joueur1
TextBox2 = Joueur2
..
TextBoxN= JoueurN

et le nombre N est le nombre de Joueur ... donc en plus je peux pas faire un "For each "
c'est pourquoi je cherche a faire un For i = 1 a N puisque mon N change.... mais bno ca c'est pas tres grave pour l'instat..

j'aimerai donc juste changer le numero de ma textbox par un variable

En fai ce que je veux faire c'est un jeu de carte avec excell

le truc chiant a faire pour l'instant c'est d'associer mes cartes a des images...

c'est un peu comme le poker donc chaque joueur a 2 cartes
j'ai reussi a melamger mon jeu et faire la donne et mais joueur ont des cartes "ecrites" avec par exemple Aco pour l'As de coeur
ce que je veux c'est associer cette valeure a une image d'une carte.
J'ai reussi a le faire mais ca prend ultra de place

la premiere carte du joueur 1 s'appel Carte11 la deuxieme Carte12
la premiere carte du joueur 2 s'appel Carte21 la deuxieme Carte22
....
jusque nombre de joueur qui est inferieur a 9 ( au max o na Carte91 et Carte92)

ensuite j'ai toute mes image enregistée sous la forme Image1 a Image52 (mes cartes).
et j'ai une serie d'image qui representent un dos de carte appelées Carte11, Carte12...

pour chaque textboxe je fais:

If Carte11="Aco" then Carte11= Image1
If Carte11="Rco" then Carte11= Image2
...
52 fois !!!

ce qui me ferait 9*2*52 lignes et ca me donne pas envi

donc j'aimerai le faire une seul fois pour une carte " Carte(i,j) et faire varier i de 1 a 9 et j de 1 a 2

Voila,

J'ai tout balancé d'une traite mais c'est a peu pres ca

si tu as une idée merci

Antoine
0
m@rina Messages postés 20202 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 11 mai 2024 11 279
22 juil. 2008 à 23:33
Non, tu n'as pas besoin de ifor i to ...

Tu reprends ma macro et là où j'ai mis "tu mets tes actions", c'est là où tu renommes tes textbox, ce qui donne :

Sub zdt()
Dim zdt As OLEObject
Dim i As Integer
For Each zdt In ActiveSheet.OLEObjects
If Left(zdt.Name, 7) = "TextBox" Then 'teste le nom des objets

i = i + 1
zdt.Name = "joueur" & i


End If
Next zdt

End Sub
0
Salut Marina,

Ok j ai compri ca a l'air parfait mais il reconnait pas as Left... il me dit que ca existe pas
est ce que c'est bien ecrit?
merci
0
m@rina Messages postés 20202 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 11 mai 2024 11 279
24 juil. 2008 à 23:45
Bonsoir,

Non, il n'y a pas de faute.

La condition
If Left(zdt.Name, 7) = "TextBox"

permet de vérifier que les contrôles sont bien des textbox (et pas d'autres contrôles). Ca vérifie que les 7 premiers caractères gauches du nom sont bien les caractères TextBox. Il faut bien respecter les majuscules dans lettres de TextBox.

m@rina
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
25 juil. 2008 à 13:53
Bonjour tous,
Petite modification de la macro de marina,

Sub zdt() 
Dim zdt As OLEObject 
Dim i As Integer 
    For Each zdt In ActiveSheet.OLEObjects 
        If TypeOf zdt.Object Is MSForms.TextBox Then
            i = i + 1 
            zdt.TEXT = "joueur" & i 
        End If 
    Next zdt 
End Sub

Remarque: Il faut qu'il y ai toujours 52 joueurs puisque 52 textBox,
De plus, les Textbox ne serront pas toujours lu par ordre numérique, ce pourraît être 1 2 5 3 4 etc..
Si pas toujours 52 joueur, rectification macro par..
Sub zdt()
'Renommer les textBox 1 à 9 par TextBox01, TextBox02 etc..
'Connaître le nombre de joueurs à affichés
Dim NBjoueurs As Integer
Dim zdt As OLEObject
Dim i As Integer
NBjoueurs = 10 'Pour la démo.
    For Each zdt In ActiveSheet.OLEObjects
        If TypeOf zdt.Object Is MSForms.TextBox Then
            i = Val(Right(zdt, 2))
            If i <= NBjoueurs Then
                zdt.Text = "joueur " & i
            End If
        End If
    Next zdt
End Sub


A+
0
m@rina Messages postés 20202 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 11 mai 2024 11 279
25 juil. 2008 à 20:00
Bonjour,

Voui, sauf que la propriété Text ne peut pas être affectée à un objet OLE...
Mais, cela voudrait dire que je n'ai pas compris la question...Je pensais qu'il s'agissait simplement de modifier le nom des textboxes.

m@rina
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
26 juil. 2008 à 08:58
Voui, sauf que la propriété Text ne peut pas être affectée à un objet OLE...
Voui.. tu est sûre ?
A+
0
eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 7 216
31 juil. 2008 à 20:23
0
anocheda Messages postés 54 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 17 novembre 2008 3
6 août 2008 à 16:16
Bonjour,

Dsl Marina et Lermitte222 je faisais autre chose..

Les macros marchent tres bien pour changer le nom des textbox, mais c'Est pas vraiment ce que je voulais faire:
en fait je veux pouvoir les nommer de 1 a X pour pouvoir ensuite faire la meme action sur toute les textbox avec un boucle sur leur nom:

For i = 1 to 10
TextBox i .Value = "toto"
Next for

la macro permet de changer le nom mais pas de faire une action en fonction du nom...

Est ce qu'il est possible de faire une action pour toutes les textBox de ma feuille dont le left est Joueur, sans les nomer une par une?

Merc isi vous etes toujours la

Antoine
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
10 août 2008 à 09:59
Re,
Un peu tard mais je viens seulement de penser à une solution,
Tout les textbox avec la propriété LinkCell initialisée, par exemple TextBox1.linkCell > K1, TB2 > K2 etc..
Tu peu aussi cacher la colonne.
Tu peu ainsi mettre du texte dans les texbox en modifiant les valeurs des cellules, et si l'un ou l'autre des textbox sont changer manuellement tu peu récupérer en testant les cellules.
A+
0
excellent effectivement c pas idiot merci
0