|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 205 ![]() |
Bonjour,
Dans certains cas il est préférable d'utiliser un objet Collection au lieu des tableaux classiques : Par exemple, lorsque l'on souhaite supprimer ou ajouter un éléments dans un tableau ce n'est jamais simple et l'objet Collection qui dispose des méthode Remove et Add est alors préférable. Cependant, quand on veut réaliser des procédure un peu complexe, comme déterminer les arrangements ou les combinaisons de m éléments parmi n, on a besoin de copier dans une nouvelle collection la totalité de ses éléments. Ce pose alors le problème de l'affectation de ce genre d'objet En effet, si c1 et c2 sont 2 objets Collection et si je fais : La variable c2 ne fais que pointer sur c1 et si je fais : cela va aussi supprimer le 1er élément de la collection c1. Je propose donc de réaliser, avec une fonction VBA, une copie, ou un clone c2 de c1. Cette collection c2 contiendra donc les mêmes éléments que c1 en double : Code :
Et alors : Supprime le 1er élément de c2 mais pas de c1. Cependant, cette fonction alloue à chaque fois de la mémoire, n'oublions donc pas de libérer la mémoire utilisée par ces objets à la fin avec un : Application à la détermination des arrangements de m éléments parmi n : Code :
La procédure de test : Code :
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
||||||
|
00
|
|
|
#2 |
![]() ![]() |
Salut,
Pas mal du tout ce code
__________________
Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access |
|
00
|
|
|
#3 | |||
![]() ![]() Inscription : septembre 2003 Messages : 4 300 ![]() |
Citation:
Essaye de remplir une collection avec des centaines de milliers d'éléments et regarde dans le gestionnaire des tâches => après le set = nothing la mémoire est libérée. Idem si on met des objets de classe dans la collection, le release de chaque classe est bien exécuté sans avoir besoin de libérer les objets un à un (heureusement!)
__________________
Assistant de création/modification de rubans Office Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL Blog Office Mon Site DVP |
|||
|
|
00
|
|
|
#4 |
![]() ![]() |
Yep, perso je m'etais cree une pseudo fonction de "reinitialisation" de collection en enchainant un
suivi d'un
__________________
Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access |
|
00
|
|
|
#5 | |
![]() ![]() Inscription : septembre 2003 Messages : 4 300 ![]() |
Citation:
ça te fait gagner une ligne
__________________
Assistant de création/modification de rubans Office Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL Blog Office Mon Site DVP |
|
|
|
00
|
|
|
#6 | ||
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 205 ![]() |
Merci à vous deux
ok pour le seul qui suffit à libérer la mémoire Dans le même ordre d'idée, on peut également utiliser ce code pour copier une partie des éléments d'une collection dans une autre : Code :
qui extrait 4 éléments de la collection c1 en commençant par le 2ème élément et les copie dans la collection c2.
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
||
|
00
|
Copyright © 2000-2012 - www.developpez.com