Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1396 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA - Créer une matrice à partir d'une ListBox Multiple

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VBA - Créer une matrice à partir d'une ListBox Multiple

n°2065179
Jaxy
Posté le 21-03-2011 à 21:29:48  profilanswer
 

Salut à vous,
 
Je sèche actuellement sur un problème VBA qui ne devrait pourtant être difficile à résoudre :
 
J'ai un tableau avec dans la première ligne des libellés, et dans toutes les lignes suivantes des valeurs.
 
J'ai créé une ListBox Multiple avec tous les libellés, et ce que je souhaite c'est qu'en sélectionnant les noms de colonnes dans la LisBox, je puisse créer une matrice ne contenant que ces colonnes là (sans les libellés de préférence, mais le souci n'est pas là).
 
Alors autant je suis capable de repérer quelles sont les colonnes sélectionnées, mais pour créer la matrice  :??: :p
 
Sachant que j'ai mon tableau initial stocké sous le nom 'Prix', je tente des combinaisons à base de :

Code :
  1. Dim Selection_a() As Variant
  2. J = 0
  3. For i = 0 To ListBox1.ListCount - 1
  4.     If ListBox1.Selected(i) Then
  5.           J = J + 1
  6.           Selection_a.Columns(J) = Prix.Columns(i)
  7.     End If
  8. Next i


 
qui ne marche pas et me renvoie une "Erreur de compilation : Qualificateur Incorrect".
 
J'ai également essyé de la faire à partir de "Union", mais je suis infoutu de faire quelque chose d'utilisable, la combinaison

Code :
  1. a = Union(Columns(2), Columns(3)).Value

est semblable à ce que je veux faire, mais elle me sélectionne toute la colonne (pas que celle de "Prix" ), et je n'arrive pas à la rendre dynamique.
 
Une idée quelqu'un ?  
 
Merci  :hello:  

mood
Publicité
Posté le 21-03-2011 à 21:29:48  profilanswer
 

n°2065230
SuppotDeSa​Tante
Aka dje69r
Posté le 22-03-2011 à 09:56:30  profilanswer
 

Il faut dimensionner ton tableau.
Regarde du coté de : ReDim Preserve Selection_a(1 To J)
 
Ensuite, tu ne peux (a ma connaissance) pas ajouter directement une colonne.
Il faut te positionner sur chaque valeur de la colonne (donc sur chaque ligne de la colonne) et l'ajouter a ton tableau.
 
Pour résumer il te faut un tableau a plusieurs dimensions où Dimensions = Nb de colonne.
Dans chaque dimension tu vas ajouter les valeurs de chaque colonne.
 
Tu as donc besoin de deux boucles. Une pour boucler sur les colonnes a partir de ta listbox, une autre pour boucler sur les lignes de chaques colonnes pour ajouter les valeurs au tableau.
 
 
Edit : un peu de lecture ne fera pas de mal :jap:


Message édité par SuppotDeSaTante le 22-03-2011 à 09:58:56

---------------
Soyez malin, louez entre voisins !
n°2065259
Jaxy
Posté le 22-03-2011 à 11:10:26  profilanswer
 

Merci beaucoup, j'avais vraiment mal intégré le fonctionnement des tableaux, et developpez.com a bien aidé...  :o  
 
Maintenant ça donne ça :  

Code :
  1. nLig = UBound(Prix)
  2. nCol = 0
  3. For i = 0 To ListBox1.ListCount - 1
  4.     If ListBox1.Selected(i) Then
  5.        nCol = nCol + 1
  6.     End If
  7. Next i
  8. ReDim Selection_a(nLig, nCol)
  9. nCol = 0
  10. For i = 0 To ListBox1.ListCount - 1
  11.     If ListBox1.Selected(i) Then
  12.        nCol = nCol + 1
  13.        For l = 1 To nLig
  14.         Selection_a(l, nCol) = Prix(l, i)
  15.        Next r
  16.     End If
  17. Next i


 
Ce qui semble fonctionner, donc merci beaucoup ! Ceci dit, j'ai plus d'expérience avec Matlab, et faire quelque qui ressemblerait à

Code :
  1. nCol = 0
  2. For i = 0:ListBox1.ListCount - 1
  3.     If ListBox1.Selected(i) Then
  4.        nCol = nCol + 1
  5.        Selection_a(:, nCol) = Prix(:, i)
  6.      End If
  7. Next i


 
N'est donc pas (trivialement) possible sous VBA ? C'est tout de même dommage, mais bon.
 
En tout cas merci  :hello:  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA - Créer une matrice à partir d'une ListBox Multiple

 

Sujets relatifs
VBA Appeler procédure dynamique dont le nom est variablerecupération des donné a partir d'un applet ou servlet
[Resolu][perl tk] caractère spéciaux dans une listbox (genre àéè...)[Résolu] Update multiple dans une boucle while
Macro VBA pour passer de word aexcelExcel VBA Gestion Suivi des stock
[Résolu] - Php Créer variable session loginfusion dans Word à partir d'Excel
VBA excel macro conditionnelle HELP!![VBA] Une sombre histoire de collection de classes
Plus de sujets relatifs à : VBA - Créer une matrice à partir d'une ListBox Multiple


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR