VBA - Boucler sur des collections

Hervé

XLDnaute Barbatruc
Bonjour tout le monde

J'ai un petit souci de syntaxe, que je vous soumet.

En simplifiant : j'ai un fichier de 25 colonnes, je dois retourner chacune des colonnes sans doublons dans 25 listbox. Afin de m'éviter une saisie laborieuse de 25 fois data.add, et de 25 boucles for to, je souhaiterai trouver une boucle.

Je sais travailler avec des tableaux array de tableau dynamique, mais pas avec des collections.

En résumer, comment faire une boucle sur 25 collections ?

En pièce jointe un fichier démo, avec une macro par boucle sur chaque item des listbox, mais qui ne me convient pas.

Conclusions : je sais résoudre mon souci mais pas avec la méthode que je veux. :)

En espérant votre aide, je vous en remercie par avance.

salut
[file name=Classeur1_20051017120958.zip size=12844]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur1_20051017120958.zip[/file]
 

Pièces jointes

  • Classeur1_20051017120958.zip
    12.5 KB · Affichages: 35

MichelXld

XLDnaute Barbatruc
bonjour cher Hervé

si j'ai bien compris ta demande , tu peux tester cette adaptation


Private Sub UserForm_Initialize()
Dim Data As Collection
Dim i As Integer, j As Integer

Tablo = Range('A1').CurrentRegion

On Error Resume Next
For j = 1 To 4 '********nombre colonnes / listbox **********
Set Data = New Collection

For i = 1 To UBound(Tablo)
Data.Add CStr(Tablo(i, j)), CStr(Tablo(i, j))
Next i

For i = 1 To Data.Count
Me.Controls('ListBox' & j).AddItem Data(i)
Next i

Set Data = Nothing
Next j
End Sub




bon apres midi
MichelXld
 

Hervé

XLDnaute Barbatruc
Bonjour ami michel, le forum

:)

Merci de te préoccuper de mon souci.

J'avais penser à ce type de syntaxe, mais j'aurais préféré garder mes 4 collections.

En somme voici le type de syntaxe que je voudrais (attention gros délire, âme sensible s'abstenir :) )


tableau = Array('data', 'data1', 'data2', 'data3')

On Error Resume Next
For j = 0 To UBound(tableau)
   
For k = 1 To UBound(tablo)
        tableau(j).Add CStr(tablo(k, j + 1)), CStr(tablo(k, j + 1))
   
Next k
Next j
On Error GoTo 0




Tu aurais pas un barbatruc dans ta manche de magicien ?

salut
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Salut Hervé

Bon j'ai essayé un truc mais je ne sais pas si c'est très 'Star Excel Academique' comme dirait Thierry

Bonne journée [file name=Classeur1_20051017133232.zip size=10825]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur1_20051017133232.zip[/file]
 

Pièces jointes

  • Classeur1_20051017133232.zip
    10.6 KB · Affichages: 36

PascalXLD

XLDnaute Barbatruc
Modérateur
Oups

Oh là le gars Pascal il est pas clair. J'avais oublié de rafraichir après le repas

Bon c'est pas grave je profite de ta question Hervé pour remercier Michel pour son WIKI qui vient encore de me dépanner pour insérer des données dans Word gràce au signet. Alors encore grand MERCI à toi MICHEL

Bonne journée
 

MichelXld

XLDnaute Barbatruc
rebonsoir Hervé , bonsoir Pascal

Pascal , merci pour ton message au sujet des wikis pages : c'est très sympa de ta part

par contre Hervé , je ne comprend plus ce que tu souhaites faire :
tu auras 4 ou 25 collections ? et si tu veux conserver tes collections , que comptes tu en faire ensuite? ...si ce n'est pas indiscret bien entendu ...;o)

bonne soirée
MichelXld
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Salut l'équipe de Choc

Ouh la la Hervé, y a pas bon les retours de bières du Ninkasi !

En fait moi aussi je voudrais bien savoir ce que tu comptes en faire de toutes ces collections ? si encore c'était de € de Monaco !!!

Non moi je ferais qu'une seule collection comme proposé par Michel quite à faire une concaténation pour connaitre éventuellement plus tard le numéro de la colonne d'origine avec un 'Key Caractère', par exemple un'#'...

Data.Add CStr(Tablo(i, j)) & '#' & J, CStr(Tablo(i, j)) & '#' & J

...;-)
Ensuite on n'envoie évidemment dans la ListBox et avec un Chti 'Split' sur ce Dièse que l'Item(0) ... L'item(1) quant à lui conservant le Numéro de Colonne...

Si ça peut te donner des idées...

Bonne Fin de Journée
[ol]@+Thierry[/ol]
 

Hervé

XLDnaute Barbatruc
re michel, pascal
salut thierry

:)

Pour la petite histoire, je 'corrige' le programme d'un copain.

Alors pourquoi il à 25 collections, franchement j'en sais rien :)

Au début j'etais parti sur ta solution thierry, puis je me suis dit qu'il devait bien exister une syntaxe pour dédoublonner des colonnes dans x collections en une seule boucle, d'ou ma question.

Comme apparement il va utiliser ces collections dans le reste du programme (pas en ma possession), je me disais aussi qu'il serait bien de les créer une bonne fois pour toutes dès le début de la macro.

Mais bon apparement, c'est pas possible, alors je reste sur vos syntaxe.

merci pour votre implication, toujours sympathique.

Thierry, je suis retourné au ninkasi la semaine dernière, c'etait moins bien, vous étiez pas là :)

salut
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 327
Membres
103 516
dernier inscrit
René Rivoli Monin