Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Récupérer un nom de formulaire dans une fonction

18 réponses
Avatar
jerome
Bonjour j'essaie de récupérer un texte dans une fonction et de faire en
sorte que me soit retourné le nom du formulaire correspondant

du style

private sub formulaire(myForm as integer) as Form
... chercher monTexte correspondant à monNumero
end sub

et de récupérer cette valeur en tant que formulaire pour pouvoir ensuite
l'utiliser comme tel.

Mais je n'y arrive pas.

Merci

10 réponses

1 2
Avatar
X
Option Explicit
Dim letexte As String
Public laform As Byte
'
' Par exp, en déclarant une variable public en en mettant dedans
' le n° de la forme, on sait à quelle form on se trouve.
'
Sub Form_Load() ' form2 pour exemple
Form1.laforme = 2
End Sub

Sub Form_Unload(Cancel As Integer) ' ferme la form2 pour exemple
'si retour form1 :
Form1.laforme = 1
End Sub
'
' Là, tu n'utilises pas une fonction mais une procédure, donc:
'
Sub appel_text_formulaire_x() ' affiche le texte et la forme
Call formulaire
MsgBox letexte & vbLf & Form1.laforme
End Sub
'
Sub formulaire()
letexte = "texte de x"
End Sub


--
Site ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site LOGICIELS
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"jerome" a écrit dans le message de news:
OhbiQc%
Bonjour j'essaie de récupérer un texte dans une fonction et de faire en
sorte que me soit retourné le nom du formulaire correspondant

du style

private sub formulaire(myForm as integer) as Form
... chercher monTexte correspondant à monNumero
end sub

et de récupérer cette valeur en tant que formulaire pour pouvoir ensuite
l'utiliser comme tel.

Mais je n'y arrive pas.

Merci




Avatar
Fred
Dans : news:OhbiQc%
jerome écrit :
Bonjour j'essaie de récupérer un texte dans une fonction et de faire
en sorte que me soit retourné le nom du formulaire correspondant

du style

private sub formulaire(myForm as integer) as Form
... chercher monTexte correspondant à monNumero
end sub

et de récupérer cette valeur en tant que formulaire pour pouvoir
ensuite l'utiliser comme tel.



Bonjour,

Les forms que tu souhaites indexer sont-elles chargées ?
Si oui, Application.Forms est la collection de ces forms.
Sans fonction, tu peux donc récupérer un objet de type Form en écrivant
: Application.Forms(index)

Sinon, je ne vois pas, pour l'instant, d'autre façon de faire que la
suivante :

Function Formulaire(index) As Form
Select Case index
Case 1 : Set Formulaire = New FormNumero1
Case 2 : Set Formulaire = New FormNumero2
...
End Select
End Function


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

Non en fait je récupère dans une base de données dans un curseur un champ
qui est le nom d'un formulaire. ("Form1" par exemple)
Et je voudrrais faire un Form1.show

C'est possible ça ?
Merci


"Fred" wrote in message
news:e40xN1%
Dans : news:OhbiQc%
jerome écrit :
> Bonjour j'essaie de récupérer un texte dans une fonction et de faire
> en sorte que me soit retourné le nom du formulaire correspondant
>
> du style
>
> private sub formulaire(myForm as integer) as Form
> ... chercher monTexte correspondant à monNumero
> end sub
>
> et de récupérer cette valeur en tant que formulaire pour pouvoir
> ensuite l'utiliser comme tel.

Bonjour,

Les forms que tu souhaites indexer sont-elles chargées ?
Si oui, Application.Forms est la collection de ces forms.
Sans fonction, tu peux donc récupérer un objet de type Form en écrivant
: Application.Forms(index)

Sinon, je ne vois pas, pour l'instant, d'autre façon de faire que la
suivante :

Function Formulaire(index) As Form
Select Case index
Case 1 : Set Formulaire = New FormNumero1
Case 2 : Set Formulaire = New FormNumero2
...
End Select
End Function


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



Avatar
Guy DETIENNE
Pour info, Application n'existe pas en VB contrairement au VBA Excel,
Word...

Il faut directement utiliser la collection Forms.

Guy

"Fred" a écrit dans le message de news:
e40xN1%
Dans : news:OhbiQc%
jerome écrit :
Bonjour j'essaie de récupérer un texte dans une fonction et de faire
en sorte que me soit retourné le nom du formulaire correspondant

du style

private sub formulaire(myForm as integer) as Form
... chercher monTexte correspondant à monNumero
end sub

et de récupérer cette valeur en tant que formulaire pour pouvoir
ensuite l'utiliser comme tel.



Bonjour,

Les forms que tu souhaites indexer sont-elles chargées ?
Si oui, Application.Forms est la collection de ces forms.
Sans fonction, tu peux donc récupérer un objet de type Form en écrivant :
Application.Forms(index)

Sinon, je ne vois pas, pour l'instant, d'autre façon de faire que la
suivante :

Function Formulaire(index) As Form
Select Case index
Case 1 : Set Formulaire = New FormNumero1
Case 2 : Set Formulaire = New FormNumero2
...
End Select
End Function


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


Avatar
Guy DETIENNE
Salut ;O)

Oui c'est possible !

Pour l'exemple, on créera 2 forms : Form1 et Form2

Form2 reste vide
Sur Form1 : un bouton Command1
On colle ceci dans le code du formulaire:

Private Sub Command1_Click()

Dim MyVariable as String

MyVariable = "Form2"
Call LoadFormByName(MyVariable)

End Sub

Et une petite procédure bien sympa à placer aussi dans Form1 ou dans un
module

Public Sub LoadFormByName(ByVal strFormName As String)

Dim MyForm As Form

Set MyForm = Forms.Add(strFormName)
MyForm.Show

End Sub

J'espère que cela répond à ton attente.

Guy


"jerome" a écrit dans le message de news:
OhbiQc%
Bonjour j'essaie de récupérer un texte dans une fonction et de faire en
sorte que me soit retourné le nom du formulaire correspondant

du style

private sub formulaire(myForm as integer) as Form
... chercher monTexte correspondant à monNumero
end sub

et de récupérer cette valeur en tant que formulaire pour pouvoir ensuite
l'utiliser comme tel.

Mais je n'y arrive pas.

Merci




Avatar
Fred
dans : news:ets%,
Guy DETIENNE écrivait :

Pour info, Application n'existe pas en VB contrairement au VBA Excel,
Word...

Il faut directement utiliser la collection Forms.



Merci Guy,
Je me mélange les pinceaux !


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Fred
dans : news:%,
Pierre écrivait :

Bonjour,

Non en fait je récupère dans une base de données dans un curseur un
champ qui est le nom d'un formulaire. ("Form1" par exemple)
Et je voudrrais faire un Form1.show

C'est possible ça ?



Alors là tu me poses une colle.
Je dirais non en vb6 mais je ne connais pas tout !

Peut-être un contournement possible via des ActiveX qu'on pourrait
instancier avec un CreateObject mais je ne peux tester cela avant un
moment pour te donner une méthode détaillée.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Fred
dans : news:,
Guy DETIENNE écrivait :

Salut ;O)



Hello,

Oui c'est possible !



Désolé, je n'avais pas vu ton post avant de répondre le contraire !

Public Sub LoadFormByName(ByVal strFormName As String)

Dim MyForm As Form

Set MyForm = Forms.Add(strFormName)
MyForm.Show

End Sub



Je ne sais pas si c'est ce que Pierre voulait dire.
Dans ce cas tu crées une instance de Form vide (ou toujours d'une même
classe de Form).
J'avais plutôt compris qu'il souhaitait instancier une form parmi un
ensemble de forms bien définies, avec contrôles et code (?)
Si ce nombre et ces types de Forms sont bien connus on peut utiliser la
méthode que j'avais indiqué avec le Select Case (en remplaçant le test
sur un index entier par un test sur une chaîne de caractères). Sinon,
c'est de la réflexion (au sens dotnet) et je ne sais pas faire en vb6,
autrement qu'en reproduisant ce qu'on peut faire avec le CreateObject et
les ActiveX.
Problème intéressant, mais qui mérite plus de précisions dans son exposé
:-)

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Guy DETIENNE
Salut ;O)
Tu dis
"Dans ce cas tu crées une instance de Form vide "
Pas du tout, j'instancie bien un Form existant. Place des objets sur ta
form que tu appelleras via son nom et tu verras.
Fais le test !





Guy

"Fred" a écrit dans le message de news:
%
dans : news:,
Guy DETIENNE écrivait :

Salut ;O)



Hello,

Oui c'est possible !



Désolé, je n'avais pas vu ton post avant de répondre le contraire !

Public Sub LoadFormByName(ByVal strFormName As String)

Dim MyForm As Form

Set MyForm = Forms.Add(strFormName)
MyForm.Show

End Sub



Je ne sais pas si c'est ce que Pierre voulait dire.
Dans ce cas tu crées une instance de Form vide (ou toujours d'une même
classe de Form).
J'avais plutôt compris qu'il souhaitait instancier une form parmi un
ensemble de forms bien définies, avec contrôles et code (?)
Si ce nombre et ces types de Forms sont bien connus on peut utiliser la
méthode que j'avais indiqué avec le Select Case (en remplaçant le test sur
un index entier par un test sur une chaîne de caractères). Sinon, c'est de
la réflexion (au sens dotnet) et je ne sais pas faire en vb6, autrement
qu'en reproduisant ce qu'on peut faire avec le CreateObject et les
ActiveX.
Problème intéressant, mais qui mérite plus de précisions dans son exposé
:-)

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


Avatar
Guy DETIENNE
Re ;O)

Et pour info, lorsque tu fais un "Load Form1", tu ne fais qu'instancier une
classe de ta Form.
Tu es sensé pouvoir en instancier autant que tu le veux.

Faire Load Form1 ou

Dim MyForm As Form
Set MyForm = Form1
MyForm.Show

Cela est identique, sauf que tu ne manipuleras pas ton objet via Form1 mais
MyForm.

Guy


"Fred" a écrit dans le message de news:
%
dans : news:,
Guy DETIENNE écrivait :

Salut ;O)



Hello,

Oui c'est possible !



Désolé, je n'avais pas vu ton post avant de répondre le contraire !

Public Sub LoadFormByName(ByVal strFormName As String)

Dim MyForm As Form

Set MyForm = Forms.Add(strFormName)
MyForm.Show

End Sub



Je ne sais pas si c'est ce que Pierre voulait dire.
Dans ce cas tu crées une instance de Form vide (ou toujours d'une même
classe de Form).
J'avais plutôt compris qu'il souhaitait instancier une form parmi un
ensemble de forms bien définies, avec contrôles et code (?)
Si ce nombre et ces types de Forms sont bien connus on peut utiliser la
méthode que j'avais indiqué avec le Select Case (en remplaçant le test sur
un index entier par un test sur une chaîne de caractères). Sinon, c'est de
la réflexion (au sens dotnet) et je ne sais pas faire en vb6, autrement
qu'en reproduisant ce qu'on peut faire avec le CreateObject et les
ActiveX.
Problème intéressant, mais qui mérite plus de précisions dans son exposé
:-)

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


1 2