OVH Cloud OVH Cloud

"Convertir" une string en objet

5 réponses
Avatar
ginkyo
Bonjour,

Je cherche depuis quelques temps à remplir
"définir" une string en tant que objet.

Vous avez une idée svp ?
merci d'avance

J'explique un peu plus

-Au lieu d'écrire (exemple faux) :
(objet.show)

Load frmTP_01
frmTP_01.Show
Load frmTP_02
frmTP_02.Show
[..]
Load frmTP_9
frmTP_9.Show

-Ecrire plutôt (completement faux):
For i = 1 to 9
Load frmTP_0 & i
frmTP_0 & i.Show
Next

-Ou un peux mieux (mais tjs faux) :
Dim TPo as object
'Dim TPo as from

for i = 1 to 9
TP = "frmTP_0" & i
Set Tpo = form
'TPo = TP <== impossible
'Set TP = Tpo <== marche pas

Load TP
Tp.Show
Next




Merci d'avance
ginkyo



Monprog (faux avec mes tests) :

Dim TPo As Form
Dim TP As String

Private Sub lblTP_Click(index As Integer)
TP = QuelTP(index)
'MsgBox (TP)

Set Tp = TPo
'Set TPo = Forms(index)
'TP = TP
'TPo = ""
'TPo.Text = TP
' MsgBox (TPs)
' Load frmTP_01
' frmTP_01.ShofrmTP_02w
Load TPo
TPo.Show
End Sub

Function QuelTP(index As Integer)
For i = 1 To 9
If index = i Then
TP = "frmTP_O" & i
End If
Next
QuelTP = TP
End Function


NB:
Je m'excuse d'avance pour mon postage croisé sur microsoft.public.fr.vb
& fr.comp.lang.basic mais c'est pour n'en délaisser aucun. si j'ai bien
comprisle prob, c'est fr.comp.lang.basic qui regroupe _tous_ les basic
ainsi que celui de ms alors que microsoft.public.fr.vb devrait
regrouper que celui de msvb. Pour la diversité et l'ouverture je vote
pour fr.comp.lang.basic :)

5 réponses

Avatar
Christophe QUEVAL
Bonjour,

Le problème, c'est que la collection Forms n'est remplie que à la suite d'un
Load Form. Pour l'exploiter, cela implique de charger d'abord les feuilles.
Voici un exemple de code :

Dim i As Integer
Dim Feuille As Form

Load Form1
Load Form2
Load Form3

For i = 1 To 3
For Each Feuille In Forms
If Feuille.Name = "Form" & i Then
Feuille.Show
Exit For
End If
Next
Next

Unload Form1
Unload Form2
Unload Form3

Christophe

"ginkyo" a écrit dans le message de
news:3f448b14$0$233$
Bonjour,

Je cherche depuis quelques temps à remplir
"définir" une string en tant que objet.

Vous avez une idée svp ?
merci d'avance

J'explique un peu plus

-Au lieu d'écrire (exemple faux) :
(objet.show)

Load frmTP_01
frmTP_01.Show
Load frmTP_02
frmTP_02.Show
[..]
Load frmTP_9
frmTP_9.Show

-Ecrire plutôt (completement faux):
For i = 1 to 9
Load frmTP_0 & i
frmTP_0 & i.Show
Next

-Ou un peux mieux (mais tjs faux) :
Dim TPo as object
'Dim TPo as from

for i = 1 to 9
TP = "frmTP_0" & i
Set Tpo = form
'TPo = TP <== impossible
'Set TP = Tpo <== marche pas

Load TP
Tp.Show
Next




Merci d'avance
ginkyo



Monprog (faux avec mes tests) :

Dim TPo As Form
Dim TP As String

Private Sub lblTP_Click(index As Integer)
TP = QuelTP(index)
'MsgBox (TP)

Set Tp = TPo
'Set TPo = Forms(index)
'TP = TP
'TPo = ""
'TPo.Text = TP
' MsgBox (TPs)
' Load frmTP_01
' frmTP_01.ShofrmTP_02w
Load TPo
TPo.Show
End Sub

Function QuelTP(index As Integer)
For i = 1 To 9
If index = i Then
TP = "frmTP_O" & i
End If
Next
QuelTP = TP
End Function


NB:
Je m'excuse d'avance pour mon postage croisé sur microsoft.public.fr.vb
& fr.comp.lang.basic mais c'est pour n'en délaisser aucun. si j'ai bien
comprisle prob, c'est fr.comp.lang.basic qui regroupe _tous_ les basic
ainsi que celui de ms alors que microsoft.public.fr.vb devrait
regrouper que celui de msvb. Pour la diversité et l'ouverture je vote
pour fr.comp.lang.basic :)



Avatar
kingyeti
J'ai eu a peu pres le meme pbr dans power point
Une adresse http://www.mvps.org/skp/ppt00042.htm#1
Tu as plusieurs pistes
t'as la proprites commands ou controls je sais p
lus
strname= "TextBox" & i
commands(strname).text= "voila"

Ou sinon autre chose mais avec power point, tu cherches
dans quelle classe sont rassembles tes form(peut etre
dans VBAproject, VBcomponents, VBE), une fois que tu as le
nom tu peut mettre ton objet dans formexemple que tu
aurais declarer prealablement comme une form.
Dans mon exemple je sais que je peux retrouver le nom de
mon tabstrip par les shapes, une fois que j'ai le nom je
met mon objet dans un tabstrip prealablement appele t


Dim t As TabStrip

For I = 1 To ActivePresentation.Slides.Count
For Each s In ActivePresentation.Slides(I).Shapes
If Left(s.Name, 8) = "TabStrip" Then
Set t = s.OLEFormat.Object
Exit For
End If
Next
Voila bon courage
-----Message d'origine-----
Bonjour,

Je cherche depuis quelques temps à remplir
"définir" une string en tant que objet.

Vous avez une idée svp ?
merci d'avance

J'explique un peu plus

-Au lieu d'écrire (exemple faux) :
(objet.show)

Load frmTP_01
frmTP_01.Show
Load frmTP_02
frmTP_02.Show
[..]
Load frmTP_9
frmTP_9.Show

-Ecrire plutôt (completement faux):
For i = 1 to 9
Load frmTP_0 & i
frmTP_0 & i.Show
Next

-Ou un peux mieux (mais tjs faux) :
Dim TPo as object
'Dim TPo as from

for i = 1 to 9
TP = "frmTP_0" & i
Set Tpo = form
'TPo = TP <== impossible
'Set TP = Tpo <== marche pas

Load TP
Tp.Show
Next




Merci d'avance
ginkyo



Monprog (faux avec mes tests) :

Dim TPo As Form
Dim TP As String

Private Sub lblTP_Click(index As Integer)
TP = QuelTP(index)
'MsgBox (TP)

Set Tp = TPo
'Set TPo = Forms(index)
'TP = TP
'TPo = ""
'TPo.Text = TP
' MsgBox (TPs)
' Load frmTP_01
' frmTP_01.ShofrmTP_02w
Load TPo
TPo.Show
End Sub

Function QuelTP(index As Integer)
For i = 1 To 9
If index = i Then
TP = "frmTP_O" & i
End If
Next
QuelTP = TP
End Function


NB:
Je m'excuse d'avance pour mon postage croisé sur


microsoft.public.fr.vb
& fr.comp.lang.basic mais c'est pour n'en délaisser


aucun. si j'ai bien
comprisle prob, c'est fr.comp.lang.basic qui regroupe


_tous_ les basic
ainsi que celui de ms alors que microsoft.public.fr.vb


devrait
regrouper que celui de msvb. Pour la diversité et


l'ouverture je vote
pour fr.comp.lang.basic :)

.



Avatar
kingyeti
J'ai eu a peu pres le meme pbr dans power point
Une adresse http://www.mvps.org/skp/ppt00042.htm#1
Tu as plusieurs pistes
t'as la proprites commands ou controls je sais p
lus
strname= "TextBox" & i
commands(strname).text= "voila"

Ou sinon autre chose mais avec power point, tu cherches
dans quelle classe sont rassembles tes form(peut etre
dans VBAproject, VBcomponents, VBE), une fois que tu as le
nom tu peut mettre ton objet dans formexemple que tu
aurais declarer prealablement comme une form.
Dans mon exemple je sais que je peux retrouver le nom de
mon tabstrip par les shapes, une fois que j'ai le nom je
met mon objet dans un tabstrip prealablement appele t


Dim t As TabStrip

For I = 1 To ActivePresentation.Slides.Count
For Each s In ActivePresentation.Slides(I).Shapes
If Left(s.Name, 8) = "TabStrip" Then
Set t = s.OLEFormat.Object
Exit For
End If
Next
Voila bon courage
-----Message d'origine-----
Bonjour,

Je cherche depuis quelques temps à remplir
"définir" une string en tant que objet.

Vous avez une idée svp ?
merci d'avance

J'explique un peu plus

-Au lieu d'écrire (exemple faux) :
(objet.show)

Load frmTP_01
frmTP_01.Show
Load frmTP_02
frmTP_02.Show
[..]
Load frmTP_9
frmTP_9.Show

-Ecrire plutôt (completement faux):
For i = 1 to 9
Load frmTP_0 & i
frmTP_0 & i.Show
Next

-Ou un peux mieux (mais tjs faux) :
Dim TPo as object
'Dim TPo as from

for i = 1 to 9
TP = "frmTP_0" & i
Set Tpo = form
'TPo = TP <== impossible
'Set TP = Tpo <== marche pas

Load TP
Tp.Show
Next




Merci d'avance
ginkyo



Monprog (faux avec mes tests) :

Dim TPo As Form
Dim TP As String

Private Sub lblTP_Click(index As Integer)
TP = QuelTP(index)
'MsgBox (TP)

Set Tp = TPo
'Set TPo = Forms(index)
'TP = TP
'TPo = ""
'TPo.Text = TP
' MsgBox (TPs)
' Load frmTP_01
' frmTP_01.ShofrmTP_02w
Load TPo
TPo.Show
End Sub

Function QuelTP(index As Integer)
For i = 1 To 9
If index = i Then
TP = "frmTP_O" & i
End If
Next
QuelTP = TP
End Function


NB:
Je m'excuse d'avance pour mon postage croisé sur


microsoft.public.fr.vb
& fr.comp.lang.basic mais c'est pour n'en délaisser


aucun. si j'ai bien
comprisle prob, c'est fr.comp.lang.basic qui regroupe


_tous_ les basic
ainsi que celui de ms alors que microsoft.public.fr.vb


devrait
regrouper que celui de msvb. Pour la diversité et


l'ouverture je vote
pour fr.comp.lang.basic :)

.



Avatar
ginkyo
Christophe QUEVAL a écrit :


Le problème, c'est que la collection Forms n'est remplie que à la suite d'un
Load Form. Pour l'exploiter, cela implique de charger d'abord les feuilles.


Ben ça c'est déjà important, merci !

Voici un exemple de code :

Dim i As Integer
Dim Feuille As Form

Load Form1
Load Form2
Load Form3




Mais ici, il n'est vraiment pas possible de faire une boucle for
du type ?? :

Dim chaine as string
for i =1 to 3
chaine = "form" & i
'ET ENSUITE
'convertir chaine en objet form,
' ou bien mettre la valeur string à un
' objet quelconque de type form ?
' DU TYPE
Set chaine = Feuille ' faux
Load Feuille
next

En fait,
Cette question se pose pour l'objet form, mais j'aurais le même soucis
pour un autre objet. L'objet form ici est bien nécessaire, mais je suis
sûr que en vb, j'aurais encore besoin de ce type de manip pour alléger
mon code, en construisant mes listes d'objets (
ex: - (completement faux):
For i = 1 to 9
Load frmTP_0 & i
frmTP_0 & i.Show
Next
)


Merci d'avance
For i = 1 To 3
For Each Feuille In Forms
If Feuille.Name = "Form" & i Then
Feuille.Show
Exit For
End If
Next
Next

Unload Form1
Unload Form2
Unload Form3

Christophe


Avatar
ng
Salut,

t'as la proprites commands ou controls je sais p


il s'agit de Controls()

Mais comme son nom l'indique, ca ne marche que pour les controles...

La seul solution est l'emploi de la collection Forms() (ms qui peut poser
problème)

Nicolas.

"kingyeti" a écrit dans le message de news:
03c101c367cf$4ea8c380$
J'ai eu a peu pres le meme pbr dans power point
Une adresse http://www.mvps.org/skp/ppt00042.htm#1
Tu as plusieurs pistes
t'as la proprites commands ou controls je sais p
lus
strname= "TextBox" & i
commands(strname).text= "voila"

Ou sinon autre chose mais avec power point, tu cherches
dans quelle classe sont rassembles tes form(peut etre
dans VBAproject, VBcomponents, VBE), une fois que tu as le
nom tu peut mettre ton objet dans formexemple que tu
aurais declarer prealablement comme une form.
Dans mon exemple je sais que je peux retrouver le nom de
mon tabstrip par les shapes, une fois que j'ai le nom je
met mon objet dans un tabstrip prealablement appele t


Dim t As TabStrip

For I = 1 To ActivePresentation.Slides.Count
For Each s In ActivePresentation.Slides(I).Shapes
If Left(s.Name, 8) = "TabStrip" Then
Set t = s.OLEFormat.Object
Exit For
End If
Next
Voila bon courage
-----Message d'origine-----
Bonjour,

Je cherche depuis quelques temps à remplir
"définir" une string en tant que objet.

Vous avez une idée svp ?
merci d'avance

J'explique un peu plus

-Au lieu d'écrire (exemple faux) :
(objet.show)

Load frmTP_01
frmTP_01.Show
Load frmTP_02
frmTP_02.Show
[..]
Load frmTP_9
frmTP_9.Show

-Ecrire plutôt (completement faux):
For i = 1 to 9
Load frmTP_0 & i
frmTP_0 & i.Show
Next

-Ou un peux mieux (mais tjs faux) :
Dim TPo as object
'Dim TPo as from

for i = 1 to 9
TP = "frmTP_0" & i
Set Tpo = form
'TPo = TP <== impossible
'Set TP = Tpo <== marche pas

Load TP
Tp.Show
Next




Merci d'avance
ginkyo



Monprog (faux avec mes tests) :

Dim TPo As Form
Dim TP As String

Private Sub lblTP_Click(index As Integer)
TP = QuelTP(index)
'MsgBox (TP)

Set Tp = TPo
'Set TPo = Forms(index)
'TP = TP
'TPo = ""
'TPo.Text = TP
' MsgBox (TPs)
' Load frmTP_01
' frmTP_01.ShofrmTP_02w
Load TPo
TPo.Show
End Sub

Function QuelTP(index As Integer)
For i = 1 To 9
If index = i Then
TP = "frmTP_O" & i
End If
Next
QuelTP = TP
End Function


NB:
Je m'excuse d'avance pour mon postage croisé sur


microsoft.public.fr.vb
& fr.comp.lang.basic mais c'est pour n'en délaisser


aucun. si j'ai bien
comprisle prob, c'est fr.comp.lang.basic qui regroupe


_tous_ les basic
ainsi que celui de ms alors que microsoft.public.fr.vb


devrait
regrouper que celui de msvb. Pour la diversité et


l'ouverture je vote
pour fr.comp.lang.basic :)

.