![]()
![]()
Ca ma l'air pas mal ces histoire de collection !
V aller voir ca, sinon j'opterai pour le Ubound
![]()
![]()
Ca ma l'air pas mal ces histoire de collection !
V aller voir ca, sinon j'opterai pour le Ubound
Me revoilà,
alors j'ai lu dans l'aide à quoi servait une collection et ca à l'air de corresponre assez à ce que je veux faire. Par contre pour la manipulation je me perd un peu
j'ai essayé de chercher dans l'aide mais le mot collection apparait partout donc niveau resultat j'ai trouvé qu'un seul exemple (peut etre qu'il n'y a que ca)
enfin tout ca pour en venir à la question.
je testais le code de random mais j'ai quelques questions... par exemple MaColl.add("hello") ca donne quoi? enfin je sais que ca ajoute Hello à la collection mais comme le recuperer??
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 'initialisation Sub initfichier() MaColl.Add ("Hello") MaColl.Add ("autre fichier") End Sub Function RenvoiNom(index As Integer) As String 'renvoi d'un index RenvoiNom = MaColl.Item(index) End Function Public Sub test() Debug.Print RenvoiNom(1) End Sub
j'ai essayé la fonction que j'ai renommé renvoinom mais elle ne marchait pas (ou alors je m'en sert mal peut etre) donc j'ai tenté d'ajouté item qui me semblait etre juste apres avoir lu l'aide mais toujours une erreur dans mon test... "argument ou appel incorrect"
ensuite comment dire quel sera l'element 1 de ma collection?? par exemple entre "hello" et "autre fichier" comment leur attribuerleur numéro? j'ai vu qu l'on pouvais ajouter [key] mais je n'arrive pas à m'en servir.. j'ai tenté ("hello",1) à tout hasard mais il a pas trop aimé![]()
voilà, désolé mais je connais rien aux collections![]()
add ajoute un élément à la collection
comment le récupérer ?
un item d'une collection a deux méthodes d'accés:
son index
c'est à dire sa position dans la collection et sa clef si on a pris la peine
de lui en attibuer une
macoll(x) renvoie l'élément x tout comme mamatrice(X) renvoie l'élément
X (j'utilise toujours option base 1)
si on attribue une clef
macoll.Add Item:="fichier", Key:="1"
macoll("1") renverra fichier
l'avantage de la collection c'est qu'elle est dynamique, supporte l'ajout, et aussi la suppression
merci bien
je m'en sors deja mieux![]()
juste une derniere question (pour le moment)
j'ai le code :
quand j'execute initfichier, je vois bien "hello" qui s'affiche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Public MaColl As New Collection 'initialisation Public Sub initfichier() MaColl.Add Item:="Hello", Key:="1" MaColl.Add ("autre fichier") Debug.Print MaColl("1") End Sub
Mais lorsque je met le debug.print dans une autre procédure, il me remarque une erreur : "argument ou appel incorrect"
pourquoi? on ne peut pas utiliser un element d'une collection qui a été ajouté dans une autre procédure??ca me parait etrange mais bon..
Euh...![]()
je viens de retester, meme code mais là tout va bien.... je comprends pas![]()
enfin j'ai plus de probleme pour le moment, je vais avancer un peu et si j'ai un souci je reviendrai![]()
Ah ca y'est ! je bloque (legerement)![]()
j'ai remarqué une chose, si je fais :
je lance, j'obtient bien "Hello"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 MaColl.Add "Hello" debug.print MaColl(1)
maintenant si je met hello2 puis je relance, j'obitent hello![]()
J'ai vu qu'en cliquant sur le carré "Réinitialiser" et en relancant, j'obtient hello2 ou en voulant afficher MaColl(2) car je présume qu'il ajoute à chaque execution un element dans la collection meme si il a le meme nom.
D'où ma question : vaut-il mieux utiliser des clé?
sinon j'aurais un autre conseil à demander, je voudrais que l'on puisse ajouter un nom de fichier sans aller dans le code (à partir d'un userform peut etre?) mais je voudrais que si l'utilisateur ajoute un nom, il soit gardé pour une utilisation future. Donc il faut forcement que ca écrive quelque par dans la macro le code "MaColl.Add nouveaunom"
Non??![]()
(Si il le faut, est ce possible?
)
si tu avais lu tu aurais remarqué
'démo d'ajout dynamique
macoll.Add(inputbox("entrez un nom")
il doit suffire d'ajouter une parenthèse qui fait courant d'air
??si tu avais lu tu aurais remarqué
'démo d'ajout dynamique
macoll.Add(inputbox("entrez un nom")
il doit suffire d'ajouter une parenthèse qui fait courant d'air
j'essayerais de relire ca quand je serais mieux reveillé mais là je comprends pas de trop![]()
j'ai essayé macoll.add ("hello")
mais, lorsque je modifie et reexecute sans faire reinintialiser, bah j'ai toujours hello![]()
![]()
... bien c'est normal ...non ? ..Envoyé par Elstak
le premier élément ajouté dans la collection à l'index 1..
le 2é élément ajouté dans la collection à l'index 2...
et ainsi de suite ...![]()
Yup,
apres une revisite de l'aide, j'ai trouvé un ptit truc :
et hop, plus de souci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 MaColl.Add "hello" MaColl.Add ("autre fichier") Debug.Print MaColl(1) For i = 1 To MaColl.Count MaColl.Remove 1 Next
par contre pour ca :
je veux toujours bien une réponse car je ne bloque plus q'uà cet endroitEnvoyé par Elstak
![]()
![]()
ok t'as gagné le dodo, tu peux te moquer![]()
mais je comprends toujours pas, au risque de paraitre euh... je sais pas quoi (on va dire idiot?) l'histoire de la parenthese va falloir m'expliquer mot à mot (il ne faut pas se fier au "membre confirmé" qui est sous mon nom !!) surtout que là vu le code y'a 2 parenthese d'ouvertes et 1 de fermée
et ca mon editeur il aime pas trop !
merci de m'expliquer![]()
ben il faut voir combien as tu de nom de fichier différents...?Envoyé par Elstak[I
tu peu par exemple stocker les éléments de ta collection dans un fichier texte ... fichier lu au lancement de l'application et écrit à la sortie..
T'as raté un épisode... Hier, 12h20, Random te donnais un exemple de saisie en dynamique dans lequel il y avait cette ligne :Tu ne vois rien ?macoll.Add(inputbox("entrez un nom")
Et aujourd'hui tu demandes comment ajouter un nom de fichier... Toujours rien ?Faut arrêter les virées nocturnes...
![]()
A+
Oui,
je pensais justement à un truc de ce genre.
donc pour te répondre il y a pour le moment environ 50 noms (47 je crois) et ca ne depassera jamais 100.
d'apres toi tous les noms de fichier conetnus dans ma fonction devraient etre mis dans un fichier texte donc? ca me semble une bonne idée...
mais quelques question un peu technique avant de me lancer :
je met un nom par ligne?
pour recuperer il faudra simplement ajouter à la collection une ligne jusque la derniere?
enfin, pour ajouter un nom, une simple zone de texte (dans un userform)devrait suffir non? par contre pour la suppression, j'ai vu le "combobox" qui liste les nom existants, c'est ce qu'il faudrait utiliser d'apres toi?
merci des réponses![]()
La question qui se pose est : Cette utilisation "future" pourra-t-elle se produire après fermeture de l'appli, et ré-ouverture ou bien juste un peu plus loin dans l'appli ?Envoyé par Tu
Dans le premier cas, la solution de bbil paraît la meilleure, dans le second, la collection suffit
Attention, si tu veux que ta collection soit vraiment Public, tu dois la déclarer dans un module, non dans le code de ta form.
A+
tiens te revoilà mon dodo,
ok là j'ai bien compris donc... le ".add" merci je l'avais vu !!
c'est surtout le "utilisation future" qui m'interesse ! avec le inputbox je suis ok, on peut ajouter mais il faudra le ressaisir à chaque fois (non?).Envoyé par elstak
Je pense que bbil a bien compris ce que je cherchais à faire avec l'idée du fichier texte. Donc jvais suivre sa piste![]()
Ps : j'ai bien dormi cette nuit !!![]()
tiens on se croise,
donc future pour moi c'est apres fermeture de l'appli, car si c'est un peu plus loin (dejà c'est sur ca sera pas avant la saisie) j'aurais aps insisté là dessus
![]()
donc tu confirme bien que la solution de bbil convient le mieux !
jvais aller dans ce sens
Ps : oui on m'avais deja dit de mettre la collection dans un module, c'est fait(ou alors je l'ai lu dans l'aide je sais plus
)
Ps2 : jvien de relire ca :
pas mal, mais comment faire ?Envoyé par bbil
le lire ca devrait aller, mais "au lancement" suffit de mettre un truc dans "thisworkbook" ?
Tu mets les noms de fichiers lus dans le txt dans un combo à l'ouverture de ta form et tu ajoutes les noms après saisie par l'utilisateur.
Quand tu fermes, tu relis ton combo et place tout dans ton txt.
Quelle est ta question ?![]()
A+
euh, je sais plus![]()
j'vais aller un peu travailler, car là c'est assez clair maintenant dans ma tete faut que je commence à produire !
et je reviens en cas de probleme
Ps : Le thisworkbook? j'en sais rienje voyais pas trop comment faire pour lire le fichier texte à l'ouverture et pour le moment toutes les actions que j'ai faite à 'louverture sont dans thisworkbook. Mais t'a répondu entre temps à la question (avec l'histoire du combobox)
![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager