J'ai créé un module de classe pour faciliter la création de collections
triées à partir d'éléments présentés dans un ordre quelconque.
L'élément de la classe contient deux objets de type collection, le premier
pour la collection elle-même, le deuxième pour les clés.
Pour insérer un nouvel élément, je voulais écrire une méthode, ce queje ne
sais pas vraiment faire. A la place, j'ai écrit une Propriété let, avec deux
paramètres : la clé et l'élément à insérer dans la liste.
La collection des clés comprend autant d'élements que la collection
proprement dite. Elle me permet de trouver l'emplacement où il faut insérer
les nouveaux élément;
Mon code de classe est celui-ci :
Option Explicit
Public Ensemble As Collection
Public LesCles As Collection
Public Property Let Ajout( _
Key As String, _
Item As Object)
suit le code de recherche de la position et de mise à jour des collections
end property
Le code qui permet de créer la collection triée est à peu le suivant
Dim A as CollectionTriée
Set A = New CollectionTriée
'suit alors le code de composition de l'élément à introduire dans la liste
monNouvelObjet, dont la clé vaut LaClédeLobjet
A.Ajout (key:=LaClédeLobjet) = MonNouvelObjet
J'ai deux questions :
1) pourquoi le code
Set A.Ajout (key:=LaClédeLobjet) = MonNouvelObjet
n'est'il pas correct ?
2) je veux retourner une valeur d'erreur si plusieurs éléments ont la même
valeur de clé. Comment faire ?
D'avance merci.
Je tiens le code disponible pour quiconque est intéressé par cette classe.
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
david
salut, 1° - erreur de syntaxe : En fait, le 2° paramètre de ta propriété (celui à droite du =) est un objet ! => la propriété LET n'existe que pour les types simples. Pour les objets on utilise SET Donc, ta propriété doit s'écrire : Public Property Set Ajout( byval Key As String, byRef Item As Object) rq: ajoute toujours les byvla et byref si tu ne veux pas avoir de surprise d'effets de bords par la suite.
2° - Retour d'erreur Le plus simple (et le plus propre) est de lever une erreur : err.raise n°d'erreur, "classe", "description" Attention : dans ta propriété (ou méhtode), tu doit avoir un On Error Resume Next 'au début et On Error Goto 0 'à la fin
3° - méthode/propriété Je pense que pour les propriétés ça va, pour les méthodes il suffit de déclarer un Sub ou un Function, suivant que tu ne veuilles pas (ou que tu veuilles) retourner un résultat : Public Function Ajout( byval Key As String, byRef Item As Object)As Object et s'utilise par : A.Ajout (LaClé, LObjet) Tu peux avec ça retourner l'objet paramètre si tout c'est bien passé, ou Nothing (ou null si tu utilise des types standard) sinon.
A+, david
Ton cas devient donc : arbiel a écrit :
Bonjour
J'ai créé un module de classe pour faciliter la création de collect ions triées à partir d'éléments présentés dans un ordre quelconque.
L'élément de la classe contient deux objets de type collection, le pr emier pour la collection elle-même, le deuxième pour les clés.
Pour insérer un nouvel élément, je voulais écrire une méthode, ce queje ne sais pas vraiment faire. A la place, j'ai écrit une Propriété let, avec deux paramètres : la clé et l'élément à insérer dans la liste.
La collection des clés comprend autant d'élements que la collection proprement dite. Elle me permet de trouver l'emplacement où il faut ins érer les nouveaux élément;
Mon code de classe est celui-ci :
Option Explicit
Public Ensemble As Collection Public LesCles As Collection
Public Property Let Ajout( _ Key As String, _ Item As Object)
suit le code de recherche de la position et de mise à jour des collecti ons
end property
Le code qui permet de créer la collection triée est à peu le suivant
Dim A as CollectionTriée
Set A = New CollectionTriée 'suit alors le code de composition de l'élément à introduire dans l a liste monNouvelObjet, dont la clé vaut LaClédeLobjet
A.Ajout (key:=LaClédeLobjet) = MonNouvelObjet
J'ai deux questions :
1) pourquoi le code Set A.Ajout (key:=LaClédeLobjet) = MonNouvelObjet n'est'il pas correct ?
2) je veux retourner une valeur d'erreur si plusieurs éléments ont la même valeur de clé. Comment faire ?
D'avance merci.
Je tiens le code disponible pour quiconque est intéressé par cette cl asse.
Arbiel
salut,
1° - erreur de syntaxe :
En fait, le 2° paramètre de ta propriété (celui à droite du =) est
un objet !
=> la propriété LET n'existe que pour les types simples. Pour les
objets on utilise SET
Donc, ta propriété doit s'écrire :
Public Property Set Ajout( byval Key As String, byRef Item As
Object)
rq: ajoute toujours les byvla et byref si tu ne veux pas avoir de
surprise d'effets de bords par la suite.
2° - Retour d'erreur
Le plus simple (et le plus propre) est de lever une erreur :
err.raise n°d'erreur, "classe", "description"
Attention : dans ta propriété (ou méhtode), tu doit avoir un
On Error Resume Next 'au début
et
On Error Goto 0 'à la fin
3° - méthode/propriété
Je pense que pour les propriétés ça va, pour les méthodes il suffit
de déclarer un Sub ou un Function, suivant que tu ne veuilles pas (ou
que tu veuilles) retourner un résultat :
Public Function Ajout( byval Key As String, byRef Item As Object)As
Object
et s'utilise par :
A.Ajout (LaClé, LObjet)
Tu peux avec ça retourner l'objet paramètre si tout c'est bien
passé, ou Nothing (ou null si tu utilise des types standard) sinon.
A+, david
Ton cas devient donc :
arbiel a écrit :
Bonjour
J'ai créé un module de classe pour faciliter la création de collect ions
triées à partir d'éléments présentés dans un ordre quelconque.
L'élément de la classe contient deux objets de type collection, le pr emier
pour la collection elle-même, le deuxième pour les clés.
Pour insérer un nouvel élément, je voulais écrire une méthode, ce queje ne
sais pas vraiment faire. A la place, j'ai écrit une Propriété let, avec deux
paramètres : la clé et l'élément à insérer dans la liste.
La collection des clés comprend autant d'élements que la collection
proprement dite. Elle me permet de trouver l'emplacement où il faut ins érer
les nouveaux élément;
Mon code de classe est celui-ci :
Option Explicit
Public Ensemble As Collection
Public LesCles As Collection
Public Property Let Ajout( _
Key As String, _
Item As Object)
suit le code de recherche de la position et de mise à jour des collecti ons
end property
Le code qui permet de créer la collection triée est à peu le suivant
Dim A as CollectionTriée
Set A = New CollectionTriée
'suit alors le code de composition de l'élément à introduire dans l a liste
monNouvelObjet, dont la clé vaut LaClédeLobjet
A.Ajout (key:=LaClédeLobjet) = MonNouvelObjet
J'ai deux questions :
1) pourquoi le code
Set A.Ajout (key:=LaClédeLobjet) = MonNouvelObjet
n'est'il pas correct ?
2) je veux retourner une valeur d'erreur si plusieurs éléments ont la même
valeur de clé. Comment faire ?
D'avance merci.
Je tiens le code disponible pour quiconque est intéressé par cette cl asse.
salut, 1° - erreur de syntaxe : En fait, le 2° paramètre de ta propriété (celui à droite du =) est un objet ! => la propriété LET n'existe que pour les types simples. Pour les objets on utilise SET Donc, ta propriété doit s'écrire : Public Property Set Ajout( byval Key As String, byRef Item As Object) rq: ajoute toujours les byvla et byref si tu ne veux pas avoir de surprise d'effets de bords par la suite.
2° - Retour d'erreur Le plus simple (et le plus propre) est de lever une erreur : err.raise n°d'erreur, "classe", "description" Attention : dans ta propriété (ou méhtode), tu doit avoir un On Error Resume Next 'au début et On Error Goto 0 'à la fin
3° - méthode/propriété Je pense que pour les propriétés ça va, pour les méthodes il suffit de déclarer un Sub ou un Function, suivant que tu ne veuilles pas (ou que tu veuilles) retourner un résultat : Public Function Ajout( byval Key As String, byRef Item As Object)As Object et s'utilise par : A.Ajout (LaClé, LObjet) Tu peux avec ça retourner l'objet paramètre si tout c'est bien passé, ou Nothing (ou null si tu utilise des types standard) sinon.
A+, david
Ton cas devient donc : arbiel a écrit :
Bonjour
J'ai créé un module de classe pour faciliter la création de collect ions triées à partir d'éléments présentés dans un ordre quelconque.
L'élément de la classe contient deux objets de type collection, le pr emier pour la collection elle-même, le deuxième pour les clés.
Pour insérer un nouvel élément, je voulais écrire une méthode, ce queje ne sais pas vraiment faire. A la place, j'ai écrit une Propriété let, avec deux paramètres : la clé et l'élément à insérer dans la liste.
La collection des clés comprend autant d'élements que la collection proprement dite. Elle me permet de trouver l'emplacement où il faut ins érer les nouveaux élément;
Mon code de classe est celui-ci :
Option Explicit
Public Ensemble As Collection Public LesCles As Collection
Public Property Let Ajout( _ Key As String, _ Item As Object)
suit le code de recherche de la position et de mise à jour des collecti ons
end property
Le code qui permet de créer la collection triée est à peu le suivant
Dim A as CollectionTriée
Set A = New CollectionTriée 'suit alors le code de composition de l'élément à introduire dans l a liste monNouvelObjet, dont la clé vaut LaClédeLobjet
A.Ajout (key:=LaClédeLobjet) = MonNouvelObjet
J'ai deux questions :
1) pourquoi le code Set A.Ajout (key:=LaClédeLobjet) = MonNouvelObjet n'est'il pas correct ?
2) je veux retourner une valeur d'erreur si plusieurs éléments ont la même valeur de clé. Comment faire ?
D'avance merci.
Je tiens le code disponible pour quiconque est intéressé par cette cl asse.
Arbiel
arbiel
Merci beaucoup pour ces informations
J'ai transformé ma procédure Property en une fonction, avec déclenchement d'erreur avec err.raise.
Tout marche parfaitement.
Merci encore
"david" a écrit :
salut, 1° - erreur de syntaxe : En fait, le 2° paramètre de ta propriété (celui à droite du =) est un objet ! => la propriété LET n'existe que pour les types simples. Pour les objets on utilise SET Donc, ta propriété doit s'écrire : Public Property Set Ajout( byval Key As String, byRef Item As Object) rq: ajoute toujours les byvla et byref si tu ne veux pas avoir de surprise d'effets de bords par la suite.
2° - Retour d'erreur Le plus simple (et le plus propre) est de lever une erreur : err.raise n°d'erreur, "classe", "description" Attention : dans ta propriété (ou méhtode), tu doit avoir un On Error Resume Next 'au début et On Error Goto 0 'à la fin
3° - méthode/propriété Je pense que pour les propriétés ça va, pour les méthodes il suffit de déclarer un Sub ou un Function, suivant que tu ne veuilles pas (ou que tu veuilles) retourner un résultat : Public Function Ajout( byval Key As String, byRef Item As Object)As Object et s'utilise par : A.Ajout (LaClé, LObjet) Tu peux avec ça retourner l'objet paramètre si tout c'est bien passé, ou Nothing (ou null si tu utilise des types standard) sinon.
A+, david
Ton cas devient donc : arbiel a écrit :
> Bonjour > > J'ai créé un module de classe pour faciliter la création de collections > triées à partir d'éléments présentés dans un ordre quelconque. > > L'élément de la classe contient deux objets de type collection, le premier > pour la collection elle-même, le deuxième pour les clés. > > Pour insérer un nouvel élément, je voulais écrire une méthode, ce queje ne > sais pas vraiment faire. A la place, j'ai écrit une Propriété let, avec deux > paramètres : la clé et l'élément à insérer dans la liste. > > La collection des clés comprend autant d'élements que la collection > proprement dite. Elle me permet de trouver l'emplacement où il faut insérer > les nouveaux élément; > > Mon code de classe est celui-ci : > > > Option Explicit > > Public Ensemble As Collection > Public LesCles As Collection > > Public Property Let Ajout( _ > Key As String, _ > Item As Object) > > suit le code de recherche de la position et de mise à jour des collections > > end property > > Le code qui permet de créer la collection triée est à peu le suivant > > Dim A as CollectionTriée > > Set A = New CollectionTriée > 'suit alors le code de composition de l'élément à introduire dans la liste > monNouvelObjet, dont la clé vaut LaClédeLobjet > > A.Ajout (key:=LaClédeLobjet) = MonNouvelObjet > > J'ai deux questions : > > 1) pourquoi le code > Set A.Ajout (key:=LaClédeLobjet) = MonNouvelObjet > n'est'il pas correct ? > > 2) je veux retourner une valeur d'erreur si plusieurs éléments ont la même > valeur de clé. Comment faire ? > > D'avance merci. > > Je tiens le code disponible pour quiconque est intéressé par cette classe. > > Arbiel
Merci beaucoup pour ces informations
J'ai transformé ma procédure Property en une fonction, avec déclenchement
d'erreur avec err.raise.
Tout marche parfaitement.
Merci encore
"david" a écrit :
salut,
1° - erreur de syntaxe :
En fait, le 2° paramètre de ta propriété (celui à droite du =) est
un objet !
=> la propriété LET n'existe que pour les types simples. Pour les
objets on utilise SET
Donc, ta propriété doit s'écrire :
Public Property Set Ajout( byval Key As String, byRef Item As
Object)
rq: ajoute toujours les byvla et byref si tu ne veux pas avoir de
surprise d'effets de bords par la suite.
2° - Retour d'erreur
Le plus simple (et le plus propre) est de lever une erreur :
err.raise n°d'erreur, "classe", "description"
Attention : dans ta propriété (ou méhtode), tu doit avoir un
On Error Resume Next 'au début
et
On Error Goto 0 'à la fin
3° - méthode/propriété
Je pense que pour les propriétés ça va, pour les méthodes il suffit
de déclarer un Sub ou un Function, suivant que tu ne veuilles pas (ou
que tu veuilles) retourner un résultat :
Public Function Ajout( byval Key As String, byRef Item As Object)As
Object
et s'utilise par :
A.Ajout (LaClé, LObjet)
Tu peux avec ça retourner l'objet paramètre si tout c'est bien
passé, ou Nothing (ou null si tu utilise des types standard) sinon.
A+, david
Ton cas devient donc :
arbiel a écrit :
> Bonjour
>
> J'ai créé un module de classe pour faciliter la création de collections
> triées à partir d'éléments présentés dans un ordre quelconque.
>
> L'élément de la classe contient deux objets de type collection, le premier
> pour la collection elle-même, le deuxième pour les clés.
>
> Pour insérer un nouvel élément, je voulais écrire une méthode, ce queje ne
> sais pas vraiment faire. A la place, j'ai écrit une Propriété let, avec deux
> paramètres : la clé et l'élément à insérer dans la liste.
>
> La collection des clés comprend autant d'élements que la collection
> proprement dite. Elle me permet de trouver l'emplacement où il faut insérer
> les nouveaux élément;
>
> Mon code de classe est celui-ci :
>
>
> Option Explicit
>
> Public Ensemble As Collection
> Public LesCles As Collection
>
> Public Property Let Ajout( _
> Key As String, _
> Item As Object)
>
> suit le code de recherche de la position et de mise à jour des collections
>
> end property
>
> Le code qui permet de créer la collection triée est à peu le suivant
>
> Dim A as CollectionTriée
>
> Set A = New CollectionTriée
> 'suit alors le code de composition de l'élément à introduire dans la liste
> monNouvelObjet, dont la clé vaut LaClédeLobjet
>
> A.Ajout (key:=LaClédeLobjet) = MonNouvelObjet
>
> J'ai deux questions :
>
> 1) pourquoi le code
> Set A.Ajout (key:=LaClédeLobjet) = MonNouvelObjet
> n'est'il pas correct ?
>
> 2) je veux retourner une valeur d'erreur si plusieurs éléments ont la même
> valeur de clé. Comment faire ?
>
> D'avance merci.
>
> Je tiens le code disponible pour quiconque est intéressé par cette classe.
>
> Arbiel
J'ai transformé ma procédure Property en une fonction, avec déclenchement d'erreur avec err.raise.
Tout marche parfaitement.
Merci encore
"david" a écrit :
salut, 1° - erreur de syntaxe : En fait, le 2° paramètre de ta propriété (celui à droite du =) est un objet ! => la propriété LET n'existe que pour les types simples. Pour les objets on utilise SET Donc, ta propriété doit s'écrire : Public Property Set Ajout( byval Key As String, byRef Item As Object) rq: ajoute toujours les byvla et byref si tu ne veux pas avoir de surprise d'effets de bords par la suite.
2° - Retour d'erreur Le plus simple (et le plus propre) est de lever une erreur : err.raise n°d'erreur, "classe", "description" Attention : dans ta propriété (ou méhtode), tu doit avoir un On Error Resume Next 'au début et On Error Goto 0 'à la fin
3° - méthode/propriété Je pense que pour les propriétés ça va, pour les méthodes il suffit de déclarer un Sub ou un Function, suivant que tu ne veuilles pas (ou que tu veuilles) retourner un résultat : Public Function Ajout( byval Key As String, byRef Item As Object)As Object et s'utilise par : A.Ajout (LaClé, LObjet) Tu peux avec ça retourner l'objet paramètre si tout c'est bien passé, ou Nothing (ou null si tu utilise des types standard) sinon.
A+, david
Ton cas devient donc : arbiel a écrit :
> Bonjour > > J'ai créé un module de classe pour faciliter la création de collections > triées à partir d'éléments présentés dans un ordre quelconque. > > L'élément de la classe contient deux objets de type collection, le premier > pour la collection elle-même, le deuxième pour les clés. > > Pour insérer un nouvel élément, je voulais écrire une méthode, ce queje ne > sais pas vraiment faire. A la place, j'ai écrit une Propriété let, avec deux > paramètres : la clé et l'élément à insérer dans la liste. > > La collection des clés comprend autant d'élements que la collection > proprement dite. Elle me permet de trouver l'emplacement où il faut insérer > les nouveaux élément; > > Mon code de classe est celui-ci : > > > Option Explicit > > Public Ensemble As Collection > Public LesCles As Collection > > Public Property Let Ajout( _ > Key As String, _ > Item As Object) > > suit le code de recherche de la position et de mise à jour des collections > > end property > > Le code qui permet de créer la collection triée est à peu le suivant > > Dim A as CollectionTriée > > Set A = New CollectionTriée > 'suit alors le code de composition de l'élément à introduire dans la liste > monNouvelObjet, dont la clé vaut LaClédeLobjet > > A.Ajout (key:=LaClédeLobjet) = MonNouvelObjet > > J'ai deux questions : > > 1) pourquoi le code > Set A.Ajout (key:=LaClédeLobjet) = MonNouvelObjet > n'est'il pas correct ? > > 2) je veux retourner une valeur d'erreur si plusieurs éléments ont la même > valeur de clé. Comment faire ? > > D'avance merci. > > Je tiens le code disponible pour quiconque est intéressé par cette classe. > > Arbiel