Nom de form active en parametre [Résolu]

Messages postés
100
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
22 janvier 2010
- - Dernière réponse : cs_rocknroll2
Messages postés
100
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
22 janvier 2010
- 8 mai 2005 à 19:23
Bonjour à tous,

Dans une form j'ai:
NomFenetre = Me.Name
Je vais ensuite chercher une sub() en dehors de la fenètre active.
Dans cette sub, je voudrai faire:
NomFenetre.FrameRensSel.Visible = True
Mais VB, y veux pas !

J'ai tenté de mettre
Public NomFenetre As Object
Public NomFenetre As Form
Public NomFenetre As String
......

Rien de rien.....

Ou est l'erreur ou bien y a t'il une manip spéciale pour que NomFenetre soit bien considéré comme une "form"?

Bien sur, je pourrais mettre ma sub dans la fenètre active elle même pour résoudre le problème, mais j'ai potentiellement un 30ene de form qui sont sensées utiliser cette sub; alors si je pouvais éviter de la mettre dans chaque form....

Merci d'avance à tous

Rocknroll2

Ouais, je serais un Pro du VB6 et du PHP dans 10/15 ans
;)
Afficher la suite 

11 réponses

Meilleure réponse
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
31 mars 2015
17
3
Merci
Public Sub LireRensCatégories(NomFenetre As Form)
NomFenetre.FrameRensSel.Visible = True
End Sub

LireRensCatégories Me

Daniel

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
22
0
Merci
Bonjour,
Je ne comprend pas ce que tu veux faire ? Si tu veux qu"une procédure soit utilisables dans toutes tes Form, place là dans un Module et déclare là Public.

jpleroisse
Messages postés
100
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
22 janvier 2010
0
Merci
Merci pour ta réponse rapide jpleroisse

Le problème c'est que j'ai une erreur sur:
FrameRensSel.Visible = True
VB me dit: Un objet est requis.
Je voulais donc passer le nom de ma form en parametre de manière à lui indiquer que c'est FrameRensSel de la form ??? qui doit être visible en lui disant:
NomFenetre.FrameRensSel.Visible = True
Où NomFenetre serait le nom de ma form.

Si tu as une idée ou si qqu'un d'autre entrevoit qque chose pour m'aider....

A bientôt

Rocknroll2

Ouais, je serais un Pro du VB6 et du PHP dans 10/15 ans
;)
Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
22
0
Merci
Franchement, j'essaye de conprendre, si tu as ce message "un objet est requis", c'est que vb ne trouve pas de Frame nommée FrameRensSel sur ta Form, car si tu veus qu'un objet Frame apparaisse il faut après l'avoir placé, rendre sa propriété visible sur False.

en résumé, tu ne peux pas rendre un objet visible sur une Form, si celui-ci se trouve dans une autre.(si l'objet est dans Form1, il ne saurait-être visible dans Form2)
Sinon essaye de m'expliquer un peu mieux.

jpleroisse
Messages postés
100
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
22 janvier 2010
0
Merci
ok jpleroisse laisse moi qques minutes, je mets le code pour mieux expliquer.
A tout de suite.
Rocknroll2

Ouais, je serais un Pro du VB6 et du PHP dans 10/15 ans
;)
Messages postés
100
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
22 janvier 2010
0
Merci
jpleroisse rebonjour,

j'ai des form qui sur le "load", doivent aller voir des renseignements dans un fichier. Ce fichier est le même pour toutes les forms.
J'ai donc mis dans un module, une sub qui va lire les renseignements voulus.
Dans chaque Form j'ai mis:
NomFenetre = Me.Name
NomFenetre contient bien le nom de la fenètre active, pas de souci.
J'appelle ma sub avec l'instruction:
LireRensCategories
Dans cette sub (qui se trouve dans un module) j'ai vérifié par un toto = NomFenetre que NomFenetre était bien connu, pas de souci, NomFenetre contient bien le nom de ma form d'origine!
Si dans ma sub, dans le module, je mets:
NomFenetre.FrameRensSel.Visible = True (pour rendre visible un frame caché à l'origine dans la form), j'ai un message d'erreur: Objet requis.
Si par contre je mets "en dur":
Nom_de_la_form_réel.FrameRensSel.Visible = True
Là, ça marche......

Je pense donc que je ne déclare pas ma variable "NomFenetre " comme il faut!
J'ai essayé plusieurs solutions:
Public NomFenetre As Object
Public NomFenetre As Form
Public NomFenetre As String
.....
Mais toujours message d'erreur (pas toujours le même selon le AS !)

Si tu peux m'aider....
Code:
dans ma form active:
NomFenetre = Me.Name
LireRensCategories (ça c'est la sub)
dans mon module:
Sub LireRensCategories()
....
NomFenetre.FrameRensSel.Visible = True
.....
end sub

rocknroll2

Ouais, je serais un Pro du VB6 et du PHP dans 10/15 ans
;)
Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
22
0
Merci
J'ai essayer ton code, ça marche, mais j' ai dû supprimer NomFenetre = Me.Name, vb me donne un message d'erreur avec cette procédure,Donc j'ais mis sur la Form NomFenetre un Frame que j'ai appelé FrameRensSel et la propriété Visible sur False.

Dans le Module:
Public Sub LireRensCatégories()
NomFenetre.FrameRensSel.Visible = True
End Sub

Dans la Form NomFenetre:
Private Sub Form_Load()
Call LireRensCatégories
End Sub

jpleroisse
Messages postés
100
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
22 janvier 2010
0
Merci
Tu es exactement dans ma situation:
1 form avec un Frame caché dans 1 Form
appel de la sub (public)

Comment transmets tu NomFenetre à la sub ?
Il faut bien qu'avant, dans la Form, tu initialise une variable qui sera transmise dans LireRensCategories()

Ouais, je serais un Pro du VB6 et du PHP dans 10/15 ans
;)
Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
22
0
Merci
Non, je n'ai pas de variable, j'ai créé la procédure directement dans le module, de toute manière tu ne peux avoir qu'une seule Form qui ai le nom de NomFenetre.
En plaçant directement dans Form_Load
FrameRensSel.Visible = True, ce serait la même chose.

jpleroisse
Messages postés
100
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
22 janvier 2010
0
Merci
Pour l'instant, j'ai contourné le problème:
dans ma sub LireRensCatégories, je mets une variable (déclarée Public):
VarVisible = 1

et dans ma Form
Private Sub Form_Load()
Call LireRensCatégories

If VarVisible = 1 Then 'VarVisible vient de la sub LireRensCategories
FrameRensSel.Visible = True
VarVisible = 0 'pour réinitialiser à 0 !
End If

End Sub

La, ca marche nickel... mais bon, je préférerai savoir pourquoi ça ne marche pas en direct dans la sub !
Piste éventuelle....... Comme j'appelle la sub depuis le "Load" de la form d'origine, l'objet masqué FrameRensSel "n'existe" peut-être pas encore... d'où peut être le message d'erreur..???

Ouais, je serais un Pro du VB6 et du PHP dans 10/15 ans
;)
Messages postés
100
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
22 janvier 2010
0
Merci
Daniel......
Je suis à genoux en train de te remercier !

Encore merci d'aider les nuls comme moi !

Merci aussi à jpleroisse pour ses tentatives patientes d'aide.

rocknroll2

Ouais, je serais un Pro du VB6 et du PHP dans 10/15 ans
;)