IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Méthode non acceptée : ajout d'un objet dans une collection


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier Avatar de Nzs26
    Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 136
    Points : 76
    Points
    76
    Par défaut Méthode non acceptée : ajout d'un objet dans une collection
    Bonjour, j'ai un soucis lorsque j'exécute le code de mon application, je tente d'ajouter un objet à ma classe et j'obtient ce message d'erreur :

    "L'objet ne gère pas cette propriété ou cette méthode"

    Voici la déclaration de ma collection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private mcolpersons As Collection
    La déclaration de mon objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public nom2 As String
    Public prenom2 As String
    Public ville2 As String
    Public datenaissance2 As String
    Public nomcomplet2 As String
    Public Event completed()
    Voici le code d'ajout de l'objet dans ma collection

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub testcollection(nom2 As String, prenom2 As String, datenaissance2 As Date, ville2 As String)
     
    Dim colpersons As New persons
    Dim newperson As New person2
    Dim i As Long
     
    Set colpersons = New persons
    With colpersons
        newperson = .createperson2(nom2, prenom2, datenaissance2, ville2)
        .add (newperson)
        MsgBox "Maintenant, le nombre d'éléments présents dans la collection est :" & .count
        MsgBox " Maintenant, on va faire défiler la collection :"
        For i = 1 To .count
            MsgBox .item(i).nom2
        Next
    End With
    Le détail de la méthode createperson2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Function createperson2(strnom As String, strprenom As String, dtmnaissance As Date, strville As String) As person2
     
    Dim objperson2 As person2
    Set objperson2 = New person2
    With objperson2
        .nom2 = strnom
        .prenom2 = strprenom
        .ville2 = strville
        .datenaissance2 = dtmnaissance
    End With
    Set createperson2 = objperson2
     
    End Function
    Et le détail de ma méthode add :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Sub add(ByRef objperson2 As person2, Optional ByVal key As String = "")
        If Len(key) = 0 Then
            key = objperson2.nom2 & Format(objperson2.datenaissance2, "yyyymmdd")
        End If
        mcolpersons.add objperson2, key
      End Sub
    Alors mes méthodes sont bien reconnues, en saisissant ".", j'ai bien accès à tous mes méthodes et lors de leur déclarations, je respect bien les signatures.

    J'instancie mon objet et ma collection avec NEW

    Je déclare le liens de parenté entre ma collection et mon objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Property Set parent(ByRef colpersons As persons)
    If colpersons Is Nothing Then
        mobjparent = colpersons
    End If
    End Property
    Property Get parent() As persons
        objperson2.parent = mobjparent
    End Property
    J'ai temporairement enlevé la suppression du pointeur de mon objet et de ma collection car je craignais que l'objet ne se détruisait pas au bon moment.

    En espérant que le message n'était pas trop long, je remercie les personnes qui auront lu mon message jusqu'au bout.

    Merci d'avance à tous ceux qui pourront ou essairont de m'aider !

    Cordialement,

    NZs

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Property Set parent(ByRef colpersons As persons)
    If colpersons Is Nothing Then
        set mobjparent = colpersons
    End If
    End Property
    Property Get parent() As persons
        set parent = mobjparent
    End Property
    Ca devrait aller mieux =)

  3. #3
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Tant qu'à faire ce serait bien que tu nous précise quelle ligne provoque ce message d'erreur (à moins que j'ai mal lu ton message, je n'ai pas vu cette indication)

  4. #4
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    résolu ?
    je commence a en avoir marre de me balader de topic resolu en topic resolu a cause des tags non mis en place

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    Euh, en relisant je m'aperçois que je n'ai fait que corriger un bug technique l'autre fois. Mais vu la tronche de tes accesseurs ça ne peut pas marcher car tu ne fais l'affectation qu'en cas de pointeur null :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Property Set parent(ByRef colpersons As persons)
    If colpersons Is Nothing Then
        set mobjparent = colpersons
    End If
    End Property
    Property Get parent() As persons
        set parent = mobjparent
    End Property
    Entre nous, j'aurais plutôt laissé la syntaxe par défaut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Property Set parent(ByRef colpersons As persons)
        set mobjparent = colpersons
    End Property
    Property Get parent() As persons
        set parent = mobjparent
    End Property

  6. #6
    Membre régulier Avatar de Nzs26
    Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 136
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    Tout d'abord merci de votre aide, ensuite j'ai commencer par suivre les conseils de Vld44, en précisant la propriété SET lors de la déclaration de ma parenté. Le problème étant toujours existant j'ai enlever l'attribution qu'en cas de poiteur null et j'obtient donc le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Property Set parent(ByRef colpersons As persons)
        set mobjparent = colpersons
    End Property
    Property Get parent() As persons
        set parent = mobjparent
    End Property
    Malrgès cette modification, j'obtient toujours l'erreur " 438 : L'objet ne gère pas cette propriété ou cette méthode "

    Cette erreur survient lorsque que je tente de créer un nouvelle l'objet et de l'insérer dans ma collection grâce à cette méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    newperson = .createperson2(nom2, prenom2, datenaissance2, ville2)
        .add (newperson)

    L'erreur survient précisément dans la méthode de création d'un nouvelle objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    newperson = .createperson2(nom2, prenom2, datenaissance2, ville2)
    Pourtant j'utilise cette méthode dans un autre formulaire pour créer un objet et cela ne pose pas de problème

    Donc je ne sais plus d'où viens le problème

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    J'avais pas vu ça non plus ... Mais une question me vient tout d'un coup ; Sais-tu pourquoi on utilise Set parfois, et d'autres fois non ?

    Set est utilisé en sus du signe égal dans VB6 pour l'affectation d'objets. En d'autres termes, si tu affectes une valeur à un pointeur il faut utiliser Set.

    Or, dans ton code, il apparait clairement que
    1/ newperson est un objet
    2/ createnewperson renvoie un objet

    Tu dois donc utiliser Set pour affecter une nouvelle valeur à newperson.

    PS : utiliser les balises "code" plutôt que "caractère gras" pour désigner du code stp

  8. #8
    Membre régulier Avatar de Nzs26
    Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 136
    Points : 76
    Points
    76
    Par défaut
    Alors j'ai suivis tes conseils et utilisé plus concrêtement le SET, mais rien y fait ...

  9. #9
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Tu dois utiliser Set aussi pour affecter la variable en retour de CreatePerson2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    set newperson = .createperson2(nom2, prenom2, datenaissance2, ville2)
    Si cela ne fonctionne pas, essaie d'abord de compiler ton code. Cela débusquera d'éventuelles erreurs de syntaxe.

    Puis vas-y en lançant la procédure pas-à-pas et regarde où cela coince, et donne-nous le code de contexter ainsi que le message d'erreur, en spécifiant bien la ligne sur laquelle tu as l'erreur.

    [EDIT]
    De plus, il me semble que tu dois remplacer la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private mcolpersons As Collection
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private mcolpersons As New Collection
    , car tu oublies le New et, sauf à voir tout ton code, je n'ai pas repéré que tu avais une ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set mcolpersons = new collection
    ailleurs.
    [/EDIT]

  10. #10
    Membre régulier Avatar de Nzs26
    Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 136
    Points : 76
    Points
    76
    Par défaut
    Merci de la réponse, je teste cela et je vous tiens au courant !

  11. #11
    Membre régulier Avatar de Nzs26
    Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 136
    Points : 76
    Points
    76
    Par défaut
    Merci de votre aide pour tout !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Accéder aux méthodes d'un objet dans une collection
    Par coucouhibou dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 20/01/2012, 15h09
  2. [VB.NET] Suppression d'objets dans une collection
    Par master56 dans le forum VB.NET
    Réponses: 7
    Dernier message: 03/06/2010, 21h46
  3. Ajout d'un objet dans une classe
    Par Zorgloub dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/01/2008, 11h16
  4. Réccupération du type d'un objet dans une collection
    Par javacien dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 04/11/2007, 18h00
  5. Hibernate + suppression d'objets dans une collection
    Par Saiyan54 dans le forum Hibernate
    Réponses: 2
    Dernier message: 15/12/2006, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo