Bonjour yndigos,
Comment assigner (est-ce le bon terme) ou copier le contenu d'une liste typée "générique" à ou dans mon objet enfant liste dictionnaire (lstDictionnaire).
Je ne comprends pas le problème, pour la raison suivante : la liste typée du projet doit être "typée" (on choisit une classe de base) dès son instanciation (c'est le paramètre du constructeur qui donne le type). Une liste "générique" ne peut pas exister en exécution.
Je vais reprendre la définition de votre dictionnaire, afin d'éclaircir le terrain.
Je me permets un parallèle avec C#, la déclaration en windev :
- Code: Tout sélectionner
- lstDictionnaire est une CL_TypableElementCollection(allouer un ENTITE)
correspond (en très très gros  

 ) à :
List<ENTITE> lstDictionnaire = new List<ENTITE>();
L'objet Windev lstDictionnaire est bien une liste d'ENTITE, pouvant aussi accepter les dérivés d'ENTITE.
Maintenant, fonctionnellement parlant la liste typée seule ne suffit pas, vous voulez des fonctionnalités supplémentaires propres à un dictionnaire. On peut y arriver de deux façons : 
héritage simple, ou bien 
composition (au sens UML).
Partons pour l'héritage simple, écrivons le code de la classe Dictionnaire (attention j'ai pas testé) :
- Code: Tout sélectionner
- Dictionnaire est une classe
 hérite de CL_TypableElementCollection // héritage simple, PUBLIC par défaut
 FIN
 
 Procedure Constructeur()
 CL_TypableElementCollection:Constructeur(allouer une ENTITE) // appel du constructeur ancêtre, je privilégie cette syntaxe
 
 // et après j'ajoute / je surcharge les fonctions qui m'intéressent...
 // pour exemple :
 Procedure TousLesElementsCommencantParA() : chaine
 
 lc_Resultat est une chaine
 lpo_Entite est une ENTITE Dynamique
 :Premier()
 TANTQUE :Courant(lpo_Entite)
 SI lpo_Entite:CommencePar("A") ALORS // trop forte cette Entite...
 lc_Resultat += lpo_Entite:Contenu()
 FIN
 :Suivant()
 FIN
 
 RENVOYER lc_Resultat
 
Là on a un dictionnaire qui 
est une liste typée verrouillée sur le type de base : ENTITE, avec des fonctions de dictionnaire qui travaillent 
sur ses propres éléments (du Dictionnaire).Dictionnaire 
gère son contenu comme un CL_TypableElementCollection.
La composition, que je privilégie (principe d'encapsulation, pas de hiérarchie de classes en cascades, plus simple à maintenir)
- Code: Tout sélectionner
- Dictionnaire est une classe
 PRIVE // de cette manière on considère que dictionnaire est pleinement responsable de son contenu (ce qui est le mieux du point de vue POO, dans le cas contraire utiliser le mot-clé PUBLIC)
 lstEntites est une CL_TypableElementCollection(allouer une ENTITE) // 'lstEntites' à la place de 'lstDictionnaire' pour une meilleure sémantique
 FIN
 
 // et après j'ajoute les fonctions qui m'intéressent... et qui vont travailler sur mon membre lstEntites.
 // pour exemple :
 Procedure TousLesElementsCommencantParA() : chaine
 
 lc_Resultat est une chaine
 lpo_Entite est une ENTITE Dynamique
 :lstEntites:Premier()
 TANTQUE :lstEntites:Courant(lpo_Entite)
 SI lpo_Entite:CommencePar("A") ALORS // trop forte cette Entite...
 lc_Resultat += lpo_Entite:Contenu()
 FIN
 :lstEntites:Suivant()
 FIN
 
Là on a un dictionnaire qui 
a une liste typée verrouillée sur le type de base : ENTITE, avec des fonctions de dictionnaire qui travaillent 
sur les éléments de la liste typée (du Dictionnaire).Dictionnaire 
délègue son contenu à un membre de type CL_TypableElementCollection.
Avec une des deux méthodes vous disposez maintenant d'un dictionnaire pleinement fonctionnel.
J’espère avoir pu répondre à votre problème.
Sinon, avez toujours besoin de copier des éléments d'une liste à une autre ? si c'est le cas je referais un autre post.
En vous souhaitant un bon développement.