Utilisation incorrect du mot clef new

Résolu
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008 - 31 août 2008 à 16:23
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008 - 31 août 2008 à 23:31
Bonjour,

J'ai un problème dans access pour l'instantiation d'un type personnalisé.

J'ai écrit :
Public Type MyType
    AA As String
End Type

Puis au clique d'un bouton, j'invoque le code suivant :

    Dim a As MyType
    a = New MyType

J'obtiens l'erreur suivante :
utilisation incorrect du mot clef new. Pourquoi ?

Je peux par contre écrire
    Dim a As MyType

    a.AA = "jdvklfd"

il semble donc qu'il ne soit pas possible d'instantier un type personnalisé. Ou alors il faut lui définir un constructeur ? Quelle serait la syntaxe ?

Mathmax

****************************************http://www.postsharp.org/

10 réponses

PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
31 août 2008 à 20:52
parce qu'en VB6 et VBA c'est Set a = Nothing
3
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
31 août 2008 à 16:55
Bonjour

MyType est ici une structure.

Dim a as MyType confère à a la structure définie pour MyType
a n'a pas à faire l'objet d'une "instanciation" autre, par "a = New...."
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
31 août 2008 à 17:43
Comment faire une classe en vba ?

Mathmax

****************************************http://www.postsharp.org/
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
31 août 2008 à 17:59
salut,

pour ton exemple tu n'as pas besoin de classe

mais sinon, tu ajoutes une classe à ton projet, nommée MyType
elle contiendra juste :
Public AA As String

et là alors tu pourras l'initialiser par :
    Dim a As New MyType
    a.AA = "jdvklfd"

PS : attention au thème, VBA n'est pas VB6, voir "VB6\langages dérivés\VBA"
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
31 août 2008 à 18:07
Merci mais ça ne marche pas.

J'ai insérer un module de classe. Ca m' a créer une classe Classe1. Mais quand j'execute ça plante sur

a = New Classe1

le message est "Variable objet ou variable bloc With non définie". Une idée du problème ?

Pardon pour le thème.
Mathmax

****************************************http://www.postsharp.org/
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
31 août 2008 à 18:20
où as-tu lu a = New Classe1 ?????
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
31 août 2008 à 18:57
http://www.cpearson.com/excel/Classes.aspx

Mathmax

****************************************http://www.postsharp.org/
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
31 août 2008 à 19:11
effectivement si après tu lis mal ^^     sans méchanceté

"Dim C As Class1

Set C = New Class1"

donc comme j'ai inqué :
    Dim a As New MyType
    a.AA = "jdvklfd"

et si vraiment tu ne veux pas mettre NEW de suite, alors :
    Dim a As <strike>New</strike> MyType
    Set a = New MyType
    a.AA = "jdvklfd"

ce qui te fait une ligne de plus pour rien...
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
31 août 2008 à 20:41
D'accord. Et pourquoi on ne peut pas faire
set a = null

Mathmax

****************************************http://www.postsharp.org/
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
31 août 2008 à 23:31
Désolé, je viens de c#... j'ai un peu du mal.

Merci beaucoup.
Mathmax

****************************************http://www.postsharp.org/
0