Utilisation incorrect du mot clef new [Résolu]

Messages postés
404
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
- - Dernière réponse : cs_mathmax
Messages postés
404
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/
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29
3
Merci
parce qu'en VB6 et VBA c'est Set a = Nothing

Dire « Merci » 3

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

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

Commenter la réponse de PCPT
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
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...."
Commenter la réponse de jmfmarques
Messages postés
404
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
0
Merci
Comment faire une classe en vba ?

Mathmax

****************************************http://www.postsharp.org/
Commenter la réponse de cs_mathmax
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29
0
Merci
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  
Commenter la réponse de PCPT
Messages postés
404
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
0
Merci
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/
Commenter la réponse de cs_mathmax
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29
0
Merci
où as-tu lu a = New Classe1 ?????
Commenter la réponse de PCPT
Messages postés
404
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
0
Merci
http://www.cpearson.com/excel/Classes.aspx

Mathmax

****************************************http://www.postsharp.org/
Commenter la réponse de cs_mathmax
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29
0
Merci
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  
Commenter la réponse de PCPT
Messages postés
404
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
0
Merci
D'accord. Et pourquoi on ne peut pas faire
set a = null

Mathmax

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

Merci beaucoup.
Mathmax

****************************************http://www.postsharp.org/
Commenter la réponse de cs_mathmax