[VBA] Utilisation d'un Type personnel dans un dictionary [Résolu]

- - Dernière réponse :  zapoudding - 20 févr. 2013 à 16:14
Bonjour,

Ci-dessous mon code, situé dans un même module.

Type contrainte
    id As String
    type As String
    correct() As String
    correctCommentaire As String
    avertissement() As String
    avertissementCommentaire As String
    erreur() As String
    erreurCommentaire As String
End Type

Sub chargeEnDictionnaireContraintes()
    Dim LineData As String
    Dim tempTabStr() As String
    Dim c As contrainte
    Dim contraintes
    Dim iFilenum
    
    Set contraintes = CreateObject("Scripting.Dictionary")
    
    Open "test.csv" For Input As #iFilenum
    
    
    Do Until EOF(iFilenum)
        Line Input #iFilenum, LineData
        tempTabStr = Split(LineData, "_")
        c = parseContrainte(tempTabStr(1))
        contraintes.Add tempTabStr(0), c
    Loop
    
    MsgBox contraintes("REQ1").id
    
    Close #iFilenum
End Sub


Quand je l’exécute, j'ai l'erreur suivante :



Ma question est donc est-ce possible d'utiliser un type personnel (créé par soi-même) dans un dictionnaire (dictionary) ?

Merci d'avance pour votre réponse.

Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
14325
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 décembre 2018
3
Merci
Bonjour,

Un type de type structure ne peut être utilisé que dans le projet où il est déclaré, le fait de vouloir envoyer en-dehors de ce projet (comme par exemple dans une Collection ou un élément COM/OLE (Dictionary par exemple) ) n'est pas possible.

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site

Dire « Merci » 3

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

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

Commenter la réponse de NHenry
Messages postés
14325
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 décembre 2018
3
Merci
Bonjour,

Pour déclarer une classe, il faut ajouter un nouveau module : Module de classe
Donc, non, contrairement à .NET, VBA ne permet de déclarer une classe (structure et méthodes) ailleurs que dans un module de classe portant le nom de la classe concernée.

Mon site

Dire « Merci » 3

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

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

Commenter la réponse de NHenry
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour,
éclaire ma lanterne :
- c'est quoi, parsecontrainte ?
- sous quoi développes-tu, exactement ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
0
Merci
Tout d'abord, merci pour vos réponses.

Bonjour,
éclaire ma lanterne :
- c'est quoi, parsecontrainte ?
- sous quoi développes-tu, exactement ?


- C'est une méthode qui parse une ligne et renvoie un objet de type contrainte (le type que j'ai mis au début de mon code).
- Je suis dans l'interface permettant de faire du VBA dans Word (J'y ai accès par l'onglet développeur de word puis Visual Basic)

Bonjour,

Un type de type structure ne peut être utilisé que dans le projet où il est déclaré, le fait de vouloir envoyer en-dehors de ce projet (comme par exemple dans une Collection ou un élément COM/OLE (Dictionary par exemple) ) n'est pas possible.


Il faut donc que je créé une classe et que j'instancie un objet ? Est-ce possible de faire ça dans un même module sur l'interface VBA proposée par Word ?

Merci d'avance.
Commenter la réponse de zapoudding
0
Merci
Re-bonjour,

Merci beaucoup de ta réponse. J'utilise à présent une classe qui reprend mon type et tout fonctionne à merveille.

Bonne fin de journée.
Commenter la réponse de zapoudding

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.