OVH Cloud OVH Cloud

Set Objet=toto

9 réponses
Avatar
mbfac
Bonsoir
Sur un formulaire j'ai 25 objets textBox Nommés Champ1, Champ2...
Voila je sais plus si on peut faire un truc du genre

For i = 1 to 25
Set MonObjet = "Champ" & trim(i)
MonObjet .text= str(i)
MonObjet = nothing
Next

Mais...ça marche pas il doit manquer qq chose

Je sais on peut passer par un groupe d'objet mais en fait ils s'appellent
SaisieNom, SaisiePrenom... comme les champs de ma base de données...
Et comme je suis un peu faineant j'ai pas envie de taper 25 fois
SaisieNom.text = MonDATA.recordset.fields("Nom")
Je me disais aussi que ça serai peut etre plus joli comme ça (à moins que ce
soit au detriment des performances de l'appli)
Peut on déclarer un objet avec pour nom : le contenu d'une variable ?

Merci

Michel

9 réponses

Avatar
Clive Lumb
mbfac wrote:
Bonsoir
Sur un formulaire j'ai 25 objets textBox Nommés Champ1, Champ2...
Voila je sais plus si on peut faire un truc du genre

For i = 1 to 25
Set MonObjet = "Champ" & trim(i)
MonObjet .text= str(i)
MonObjet = nothing
Next

Mais...ça marche pas il doit manquer qq chose

Je sais on peut passer par un groupe d'objet mais en fait ils
s'appellent SaisieNom, SaisiePrenom... comme les champs de ma base de
données...
Et comme je suis un peu faineant j'ai pas envie de taper 25 fois
SaisieNom.text = MonDATA.recordset.fields("Nom")
Je me disais aussi que ça serai peut etre plus joli comme ça (à moins
que ce soit au detriment des performances de l'appli)
Peut on déclarer un objet avec pour nom : le contenu d'une variable ?

Merci

Michel



Devant le même problème j'ai utilisé la méthode suivant.
Récuperer les noms des champs de bdd dans un tableau
Parcourir ce tableau nom par nom et chercher ce nom dans
Form.controls(index).name
Avatar
X
Bonsoir,

Pourquoi ne pas indicier les textBox(index), ça serait plus pratique,
non ???

--------------

"mbfac" a écrit dans le message de news:
droak5$par$
Bonsoir
Sur un formulaire j'ai 25 objets textBox Nommés Champ1, Champ2...
Voila je sais plus si on peut faire un truc du genre

For i = 1 to 25
Set MonObjet = "Champ" & trim(i)
MonObjet .text= str(i)
MonObjet = nothing
Next

Mais...ça marche pas il doit manquer qq chose

Je sais on peut passer par un groupe d'objet mais en fait ils s'appellent
SaisieNom, SaisiePrenom... comme les champs de ma base de données...
Et comme je suis un peu faineant j'ai pas envie de taper 25 fois
SaisieNom.text = MonDATA.recordset.fields("Nom")
Je me disais aussi que ça serai peut etre plus joli comme ça (à moins que
ce soit au detriment des performances de l'appli)
Peut on déclarer un objet avec pour nom : le contenu d'une variable ?

Merci

Michel






Avatar
Fred
Dans : news:droak5$par$,
mbfac disait :
Bonsoir
Sur un formulaire j'ai 25 objets textBox Nommés Champ1, Champ2...
Voila je sais plus si on peut faire un truc du genre

For i = 1 to 25
Set MonObjet = "Champ" & trim(i)
MonObjet .text= str(i)
MonObjet = nothing
Next

Mais...ça marche pas il doit manquer qq chose



Bonsoir,

Teste ces deux petits bouts de code et vois ce que tu peux en faire
(seul prérequis : un textbox nommé Text1 sur la feuille)

'Enumérer les noms de tous les contrôles de la feuille
Dim c As Control
For Each c In Form1.Controls
MsgBox c.Name
Next

'Récupérer un contrôle par son nom
'On peut aussi déclarer t comme Control
Dim t As TextBox
Set t = Form1.Controls("Text1")
t.Text = "Ça marche"


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
mbfac
Bonsoir,


Bonsoir,

Pourquoi ne pas indicier les textBox(index), ça serait plus pratique,
non ???



Certes.. mais aprés quand tu reprends l'appli derriere, t'es super content
d'avoir SaisieNom.text que text(23).text dans le code, meme si t'as passé
trois plombes à le taper
Je sais c'est du long terme et c'est pas la mode :-(


Cordialement

Michel BERTRAND
Avatar
mbfac
Bonsoir

Merci ! l'idée est bonne ,mais si je dois faire une boucle sur tout les
controles verifier qu'il commence bien par Saisie
ça va nuire aux performances comme on dit...
Et comme la propriété name est en lecture seule, ça va pas le faire.

Merci quand meme
je vais faire des copier/coller :-(

Bonne Nuit

Michel
Avatar
mbfac
Re-Bonsoir

D'idées en idées...DEBUG.PRINT !

Private Sub Command5_Click()
For i = 0 To DataClient.Recordset.Fields.Count - 1
Debug.Print "Saisie" & Trim(DataClient.Recordset.Fields(i).Name) & ".Text =
DataClient.Recordset.Fields(""" & DataClient.Recordset.Fields(i).Name &
""")"
Next
End Sub

un Grand copier/coller ;-)))

Re Bonne Nuit
Avatar
X
Bonsoir,

Ah non, avant je mettais des noms, puis j'ai arrêté car en fait, noms ou
pas, trois ans plus tard tu ne sais plus tellement ce que ça veut dire...
En plus les exemples sont en quasi totalité donnés avec les noms de base
(bouton = command) par exemple, alors ce n'est pas si mal que tout le monde
appel son bouton pareil, bien que, en la matière c'est un choix personnel,
et certains donnent des noms...
On retrouve pas plus difficilement sans donner de nom, au contraire, quand
tu appelles un objet "truc", nul ne sait ce que c'est comme objet, alors que
command1, tout le monde le sait!
On utilise (ce que je fais), un petit commentaire pour indiquer ce que
l'objet fait, mais je crois qu'on retrouve plus vite la fonction lato sensu
d'un objet command1 que d'un objet "truc", à toi de voir...
In fine, tu parles de long terme, et de base de données, euphémisme, les
moteurs s'ils ne sont pas mis à jour régulièrement plante assez souvent,
pour du long terme les fichier à la main c'est mieux.
Bref, j'aurais utilisé une boucle... c'est toi qui vois :o)

-----------------

"mbfac" a écrit dans le message de news:
droos7$b9u$


Bonsoir,


Bonsoir,

Pourquoi ne pas indicier les textBox(index), ça serait plus pratique,
non ???



Certes.. mais aprés quand tu reprends l'appli derriere, t'es super content
d'avoir SaisieNom.text que text(23).text dans le code, meme si t'as passé
trois plombes à le taper
Je sais c'est du long terme et c'est pas la mode :-(


Cordialement

Michel BERTRAND




Avatar
Fred
Dans : news:drop51$bk8$,
mbfac disait :
Bonsoir



Bonjour,

Merci ! l'idée est bonne ,mais si je dois faire une boucle sur tout
les controles verifier qu'il commence bien par Saisie



Pourquoi ? Et le deuxième exemple ?

Form1.Controls("Saisie" & partieVariable) te donne directement le
contrôle.
Avec «partieVariable» récupérée d'après les en-têtes de colonnes du
recordset.
Ou alors je n'ai pas bien saisi ce que tu veux.

ça va nuire aux performances comme on dit...



Mouais. C'est de l'interface ! À moins de tomber sur un qui clique plus
vite que son ombre :-)
De plus, tu ne sais pas trop comment vb6 gère tout cela sans te le dire
;-)

Enfin, je vois sur ton autre post que ton problème était plutôt d'écrire
rapidement un code que de le rendre générique.
Pas mal l'astuce du Debug.Print !

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
mbfac
Bonjour

Form1.Controls("Saisie" & partieVariable) te donne directement le
contrôle.



Mais oui ! que je suis bete !
Il était tard ...

Merci ça peut quand meme servir :-)

Cordialement

Michel BERTRAND