VBA - Boucler sur des collections

  • Initiateur de la discussion Initiateur de la discussion Hervé
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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
 
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
 
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
 
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]
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

D
Réponses
2
Affichages
947
D
Réponses
12
Affichages
1 K
C
Réponses
0
Affichages
1 K
C
Retour