Je souhaiterias créer un objet d'une classe en indiquant le nom de cette
classe en paramètre de façon à pourvoir choisir dynamiquement l'objet qui va
être créé, et réutiliser le code.
Est-ce possible ?
Et si oui, comment.....
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Kawaman
Tu peux regarder du coté de assembly.CreateInstance
Pierre a écrit :
Bonjour,
Je souhaiterias créer un objet d'une classe en indiquant le nom de cette classe en paramètre de façon à pourvoir choisir dynamiquement l'objet qui va être créé, et réutiliser le code. Est-ce possible ? Et si oui, comment.....
set myobj = new("classedynamique") ???
Merci.
Cordialement.
Pierre.
Tu peux regarder du coté de assembly.CreateInstance
Pierre a écrit :
Bonjour,
Je souhaiterias créer un objet d'une classe en indiquant le nom de cette
classe en paramètre de façon à pourvoir choisir dynamiquement l'objet qui va
être créé, et réutiliser le code.
Est-ce possible ?
Et si oui, comment.....
Tu peux regarder du coté de assembly.CreateInstance
Pierre a écrit :
Bonjour,
Je souhaiterias créer un objet d'une classe en indiquant le nom de cette classe en paramètre de façon à pourvoir choisir dynamiquement l'objet qui va être créé, et réutiliser le code. Est-ce possible ? Et si oui, comment.....
set myobj = new("classedynamique") ???
Merci.
Cordialement.
Pierre.
Kawaman
Ooops pardon, je croyais que c'etait sur le groupe .net. En VB pur je sais pas. Désolé de cette confusion.
Kawaman a écrit :
Tu peux regarder du coté de assembly.CreateInstance
Pierre a écrit :
Bonjour,
Je souhaiterias créer un objet d'une classe en indiquant le nom de cette classe en paramètre de façon à pourvoir choisir dynamiquement l'objet qui va être créé, et réutiliser le code. Est-ce possible ? Et si oui, comment.....
set myobj = new("classedynamique") ???
Merci.
Cordialement.
Pierre.
Ooops pardon, je croyais que c'etait sur le groupe .net.
En VB pur je sais pas. Désolé de cette confusion.
Kawaman a écrit :
Tu peux regarder du coté de assembly.CreateInstance
Pierre a écrit :
Bonjour,
Je souhaiterias créer un objet d'une classe en indiquant le nom de
cette classe en paramètre de façon à pourvoir choisir dynamiquement
l'objet qui va être créé, et réutiliser le code.
Est-ce possible ?
Et si oui, comment.....
Ooops pardon, je croyais que c'etait sur le groupe .net. En VB pur je sais pas. Désolé de cette confusion.
Kawaman a écrit :
Tu peux regarder du coté de assembly.CreateInstance
Pierre a écrit :
Bonjour,
Je souhaiterias créer un objet d'une classe en indiquant le nom de cette classe en paramètre de façon à pourvoir choisir dynamiquement l'objet qui va être créé, et réutiliser le code. Est-ce possible ? Et si oui, comment.....
set myobj = new("classedynamique") ???
Merci.
Cordialement.
Pierre.
Jacques93
Bonjour Pierre, Pierre a écrit :
Bonjour,
Je souhaiterias créer un objet d'une classe en indiquant le nom de cette classe en paramètre de façon à pourvoir choisir dynamiquement l'objet qui va être créé, et réutiliser le code. Est-ce possible ? Et si oui, comment.....
set myobj = new("classedynamique") ???
Pas sur d'avoir bien compris, mais avec CreateObject, par exemple :
Dim Obj1 As Object, Obj2 As Object
Private Sub Command1_Click() Set Obj1 = CreateObj("Excel.Application") Obj1.Visible = True Set Obj2 = CreateObj("Word.Application") Obj2.Visible = True End Sub
Private Function CreateObj(ClassName As String) As Object Set CreateObj = CreateObject(ClassName) End Function
-- Cordialement,
Jacques.
Bonjour Pierre,
Pierre a écrit :
Bonjour,
Je souhaiterias créer un objet d'une classe en indiquant le nom de cette
classe en paramètre de façon à pourvoir choisir dynamiquement l'objet qui va
être créé, et réutiliser le code.
Est-ce possible ?
Et si oui, comment.....
set myobj = new("classedynamique") ???
Pas sur d'avoir bien compris, mais avec CreateObject, par exemple :
Dim Obj1 As Object, Obj2 As Object
Private Sub Command1_Click()
Set Obj1 = CreateObj("Excel.Application")
Obj1.Visible = True
Set Obj2 = CreateObj("Word.Application")
Obj2.Visible = True
End Sub
Private Function CreateObj(ClassName As String) As Object
Set CreateObj = CreateObject(ClassName)
End Function
Je souhaiterias créer un objet d'une classe en indiquant le nom de cette classe en paramètre de façon à pourvoir choisir dynamiquement l'objet qui va être créé, et réutiliser le code. Est-ce possible ? Et si oui, comment.....
set myobj = new("classedynamique") ???
Pas sur d'avoir bien compris, mais avec CreateObject, par exemple :
Dim Obj1 As Object, Obj2 As Object
Private Sub Command1_Click() Set Obj1 = CreateObj("Excel.Application") Obj1.Visible = True Set Obj2 = CreateObj("Word.Application") Obj2.Visible = True End Sub
Private Function CreateObj(ClassName As String) As Object Set CreateObj = CreateObject(ClassName) End Function
-- Cordialement,
Jacques.
Pierre
Bonjour,
En fait, mon premier message manque de précisions :
- le contexte est celui d'une application access - les objets à instancier sont en fait des form - et je souhaite créer des instances de ces forms, donc passer par les classes, sans connaître le nom de la classe avant l'exécution.
Le createobject ne marche pas, car dans ce cas les objets doivent être déclarés dans la base de registre, ce qui, pour des forms access, n'est pas le cas...
L'objectif est donc de créer une instance d'un form dont la classe est attribuée dynamiquement.
Pour créer une instance d'objet, on utilise New, et cette instruction nécessite l'identifiant de la classe.
D'où le problème...
Et je ne suis pas sûr que cela soit gérable en vba.
J'ai essayé un eval("set myobj = New Form_" & form_name) ça ne passe pas non plus
Dernière idée : faire un select et codé en dur tous les news myclass... mais c'est pas très bô
Merci d'avance de vos suggestions.
Pierre.
"Jacques93" a écrit dans le message de news:
Bonjour Pierre, Pierre a écrit :
Bonjour,
Je souhaiterias créer un objet d'une classe en indiquant le nom de cette classe en paramètre de façon à pourvoir choisir dynamiquement l'objet qui va être créé, et réutiliser le code. Est-ce possible ? Et si oui, comment.....
set myobj = new("classedynamique") ???
Pas sur d'avoir bien compris, mais avec CreateObject, par exemple :
Dim Obj1 As Object, Obj2 As Object
Private Sub Command1_Click() Set Obj1 = CreateObj("Excel.Application") Obj1.Visible = True Set Obj2 = CreateObj("Word.Application") Obj2.Visible = True End Sub
Private Function CreateObj(ClassName As String) As Object Set CreateObj = CreateObject(ClassName) End Function
-- Cordialement,
Jacques.
Bonjour,
En fait, mon premier message manque de précisions :
- le contexte est celui d'une application access
- les objets à instancier sont en fait des form
- et je souhaite créer des instances de ces forms, donc passer par les
classes, sans connaître le nom de la classe avant l'exécution.
Le createobject ne marche pas, car dans ce cas les objets doivent être
déclarés dans la base de registre, ce qui, pour des forms access, n'est pas
le cas...
L'objectif est donc de créer une instance d'un form dont la classe est
attribuée dynamiquement.
Pour créer une instance d'objet, on utilise New, et cette instruction
nécessite l'identifiant de la classe.
D'où le problème...
Et je ne suis pas sûr que cela soit gérable en vba.
J'ai essayé un
eval("set myobj = New Form_" & form_name)
ça ne passe pas non plus
Dernière idée : faire un select et codé en dur tous les news myclass... mais
c'est pas très bô
Merci d'avance de vos suggestions.
Pierre.
"Jacques93" <jacques@NoSpam> a écrit dans le message de news:
OlHFdad8FHA.3388@TK2MSFTNGP11.phx.gbl...
Bonjour Pierre,
Pierre a écrit :
Bonjour,
Je souhaiterias créer un objet d'une classe en indiquant le nom de cette
classe en paramètre de façon à pourvoir choisir dynamiquement l'objet qui
va être créé, et réutiliser le code.
Est-ce possible ?
Et si oui, comment.....
set myobj = new("classedynamique") ???
Pas sur d'avoir bien compris, mais avec CreateObject, par exemple :
Dim Obj1 As Object, Obj2 As Object
Private Sub Command1_Click()
Set Obj1 = CreateObj("Excel.Application")
Obj1.Visible = True
Set Obj2 = CreateObj("Word.Application")
Obj2.Visible = True
End Sub
Private Function CreateObj(ClassName As String) As Object
Set CreateObj = CreateObject(ClassName)
End Function
En fait, mon premier message manque de précisions :
- le contexte est celui d'une application access - les objets à instancier sont en fait des form - et je souhaite créer des instances de ces forms, donc passer par les classes, sans connaître le nom de la classe avant l'exécution.
Le createobject ne marche pas, car dans ce cas les objets doivent être déclarés dans la base de registre, ce qui, pour des forms access, n'est pas le cas...
L'objectif est donc de créer une instance d'un form dont la classe est attribuée dynamiquement.
Pour créer une instance d'objet, on utilise New, et cette instruction nécessite l'identifiant de la classe.
D'où le problème...
Et je ne suis pas sûr que cela soit gérable en vba.
J'ai essayé un eval("set myobj = New Form_" & form_name) ça ne passe pas non plus
Dernière idée : faire un select et codé en dur tous les news myclass... mais c'est pas très bô
Merci d'avance de vos suggestions.
Pierre.
"Jacques93" a écrit dans le message de news:
Bonjour Pierre, Pierre a écrit :
Bonjour,
Je souhaiterias créer un objet d'une classe en indiquant le nom de cette classe en paramètre de façon à pourvoir choisir dynamiquement l'objet qui va être créé, et réutiliser le code. Est-ce possible ? Et si oui, comment.....
set myobj = new("classedynamique") ???
Pas sur d'avoir bien compris, mais avec CreateObject, par exemple :
Dim Obj1 As Object, Obj2 As Object
Private Sub Command1_Click() Set Obj1 = CreateObj("Excel.Application") Obj1.Visible = True Set Obj2 = CreateObj("Word.Application") Obj2.Visible = True End Sub
Private Function CreateObj(ClassName As String) As Object Set CreateObj = CreateObject(ClassName) End Function
-- Cordialement,
Jacques.
Jacques93
Bonjour Pierre, Pierre a écrit :
Bonjour,
En fait, mon premier message manque de précisions :
- le contexte est celui d'une application access - les objets à instancier sont en fait des form - et je souhaite créer des instances de ces forms, donc passer par les classes, sans connaître le nom de la classe avant l'exécution.
Le createobject ne marche pas, car dans ce cas les objets doivent être déclarés dans la base de registre, ce qui, pour des forms access, n'est pas le cas...
L'objectif est donc de créer une instance d'un form dont la classe est attribuée dynamiquement.
Pour créer une instance d'objet, on utilise New, et cette instruction nécessite l'identifiant de la classe.
D'où le problème...
Et je ne suis pas sûr que cela soit gérable en vba.
J'ai essayé un eval("set myobj = New Form_" & form_name) ça ne passe pas non plus
Dernière idée : faire un select et codé en dur tous les news myclass... mais c'est pas très bô
N'ayant pas mis le nez dans Access depuis longtemps, peut être :
Private Sub Commande1_Click() Dim obj As Form
Set obj = OpenForm("Formulaire2") MsgBox obj.Name End Sub
Private Function OpenForm(fName As String) As Form Dim f As Form
Application.DoCmd.OpenForm fName For Each f In Forms If f.Name = fName Then Set OpenForm = f Exit Function End If Next f End Function
-- Cordialement,
Jacques.
Bonjour Pierre,
Pierre a écrit :
Bonjour,
En fait, mon premier message manque de précisions :
- le contexte est celui d'une application access
- les objets à instancier sont en fait des form
- et je souhaite créer des instances de ces forms, donc passer par les
classes, sans connaître le nom de la classe avant l'exécution.
Le createobject ne marche pas, car dans ce cas les objets doivent être
déclarés dans la base de registre, ce qui, pour des forms access, n'est pas
le cas...
L'objectif est donc de créer une instance d'un form dont la classe est
attribuée dynamiquement.
Pour créer une instance d'objet, on utilise New, et cette instruction
nécessite l'identifiant de la classe.
D'où le problème...
Et je ne suis pas sûr que cela soit gérable en vba.
J'ai essayé un
eval("set myobj = New Form_" & form_name)
ça ne passe pas non plus
Dernière idée : faire un select et codé en dur tous les news myclass... mais
c'est pas très bô
N'ayant pas mis le nez dans Access depuis longtemps, peut être :
Private Sub Commande1_Click()
Dim obj As Form
Set obj = OpenForm("Formulaire2")
MsgBox obj.Name
End Sub
Private Function OpenForm(fName As String) As Form
Dim f As Form
Application.DoCmd.OpenForm fName
For Each f In Forms
If f.Name = fName Then
Set OpenForm = f
Exit Function
End If
Next f
End Function
En fait, mon premier message manque de précisions :
- le contexte est celui d'une application access - les objets à instancier sont en fait des form - et je souhaite créer des instances de ces forms, donc passer par les classes, sans connaître le nom de la classe avant l'exécution.
Le createobject ne marche pas, car dans ce cas les objets doivent être déclarés dans la base de registre, ce qui, pour des forms access, n'est pas le cas...
L'objectif est donc de créer une instance d'un form dont la classe est attribuée dynamiquement.
Pour créer une instance d'objet, on utilise New, et cette instruction nécessite l'identifiant de la classe.
D'où le problème...
Et je ne suis pas sûr que cela soit gérable en vba.
J'ai essayé un eval("set myobj = New Form_" & form_name) ça ne passe pas non plus
Dernière idée : faire un select et codé en dur tous les news myclass... mais c'est pas très bô
N'ayant pas mis le nez dans Access depuis longtemps, peut être :
Private Sub Commande1_Click() Dim obj As Form
Set obj = OpenForm("Formulaire2") MsgBox obj.Name End Sub
Private Function OpenForm(fName As String) As Form Dim f As Form
Application.DoCmd.OpenForm fName For Each f In Forms If f.Name = fName Then Set OpenForm = f Exit Function End If Next f End Function