XL 2019 Affichage plusieurs colonne dans Listbox avec tri Combobox

Jacquie

XLDnaute Nouveau
Bonjour à tous,

je fais appel aux aguerris du VBA dans l'espoir de trouver une solution à mon problème.
Dans mon fichier joint que j'ai eu grâce à ce forum, j'ai actuellement un Userform qui me sert à filtrer un tableau qui se trouve dans ma feuille nommée "Données" et à récupérer dans ma "Feuil1" la sélection choisi.
Jusqu'ici tout fonctionne parfaitement.

Je voudrais pouvoir afficher dans ma ListBox1 les colonnes "dimensions, poids.." que j'ai nommé au dessus de celle-ci et trier la colonne choisi avec ma ComboBox1 du plus grand au plus petit.
A savoir que le contenu de ma liste de donnée peux être modifié et complété mais le nombre de colonne restera le même.

Quelqu'un a t-il une idée ?

Merci par avance pour votre aide.
 

Pièces jointes

  • Essai liste avec tri.xlsm
    41 KB · Affichages: 24
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re
il me semblait bien !
et toi bien réveillé ?
as tu regardé mon fichier ?
j'y ai trouvé ça Lol
VB:
Sub RecupTabGen()
  If Not Range("t_BDD").ListObject.DataBodyRange Is Nothing Then
    With Range("t_BDD").ListObject.DataBodyRange
 Tabtemp = .Resize(.Rows.Count, .Columns.Count + 1).Value 'on remplit le tableau temporaire avec les données de la plage ainsi déterminée
    End With
  End If
' End With
       Tabtemp = IndexTablo(Tabtemp)  'on envoie le tableau pour indexation n° de ligne et x pour valider au départ l'ensemble des lignes
      'ci dessous on remplit le tableau avec les données qui vont servir au chargement des Combobox et à la coloration du texte des différentes colonnes de la ListView
         TabStrSearch(1, 1) = "*": TabStrSearch(1, 2) = "<< TOUTES >>":   TabStrSearch(1, 3) = ""     ' Colonne  1
         TabStrSearch(2, 1) = "*": TabStrSearch(2, 2) = "<< TOUS >>":     TabStrSearch(2, 3) = ""       ' Colonne  2
         TabStrSearch(3, 1) = "*": TabStrSearch(3, 2) = "<< TOUTES >>":   TabStrSearch(3, 3) = ""     ' Colonne  3
End Sub
C'est pas du Structuré ? Lol
On peut optimiser , mais bon Lol
Bonne Journée
Jean marie
 

Eric C

XLDnaute Barbatruc
Bonjour le forum
Bonjour Jacquie, bonjour Jean Marie, Bonjour Patrick

@ Patrick - Explique nous point par point (si tu as le temps et je sais que ton temps t'est compté ;)) comment réaliser simplement un tableau structuré... Apparemment c'est très tendance et remplace ce que j'ai pu apprendre (enfin le peu que j'ai appris) jusqu'à maintenant.

@+ Eric c
 

patricktoulon

XLDnaute Barbatruc
re
un exemple
comment remplir une variable tableau avec des colonnes non contigues et dans l'ordre que l'on veut
transformer votre plage en tableau structuré le nom c'est Tableau1 (dans cet exemple )

prenez un userform et mettez lui une liste box et un bouton
dans le bouton click

VB:
Private Sub CommandButton1_Click()
   t = Array("dimensions", "poids")
   With ListBox1
   .ColumnCount = UBound(t) + 1
   .List = GetTabLo_RangeNoContigue("Tableau1", t)
End With
End Sub
vous l'avez compris il vous faut la fonction Get.. perso de chez patricktoulon😂😂😂
la voici
VB:
Private Sub CommandButton1_Click()
   t = Array("dimensions", "poids")
   With ListBox1
   .ColumnCount = UBound(t) + 1
   .List = GetTabLo_RangeNoContigue("Tableau1", t) ' on injecte le nom du TS et l'array des nom de colonnes du TS
End With
End Sub

Function GetTabLo_RangeNoContigue(TabloName As String, arrColName)
'fonction perso patricktoulon
Dim Titre, I&, X&
'on recupere la ligne des titre du tableau structuré (le header)dans un array 1 dim
    Titre = Application.Index(Range(TabloName & "[#all]").Value, 1, 0)
    For I = 0 To UBound(arrColName) 'on boucle sur les noms de l'arrcolname
        X = Application.IfError(Application.Match(arrColName(I), Titre, 0), 0) 'on fait un match pour chercher la valeur
        If X > 0 Then arrColName(I) = X ' si match on remplace le nom par son index dans l'array lui meme
    Next
' donc l'array arrcolname devient un array de chiffre
'il nous reste plus qu'a  créer une variable tablo  avec ces colonne grace à index  et evaluate
'ici en l'ocurence on met tout de suite le resultat dans le return de la fonction
GetTabLo_RangeNoContigue = Application.Index(Range(TabloName), Evaluate("Row(1:" & Range(TabloName).Rows.Count & ")"), arrColName)
End Function

regarder votre listbox ;)
demo.gif
 

patricktoulon

XLDnaute Barbatruc
tout a l'heure je disais dansl'ordre que l'on veux
je prends des colonnes au hasard
dans le bouton click
t = Array("dimensions", "prix au cent", "poids", "prix zinguée")
dans la liste box elles seront dans cet ordre

jean-marie perso celle de Pierre faucaunier est très bien
après il y a de subtilité que l'on peche ici et là
dans mes recentes discussion j'explique un peu l'interet d'utiliser des code d'acces ou manip (range ou listobject ) sur les tableaux structurés

le 1er exemple qui est primordial
c'est l'accès
par listobject
'ici on precise le sheet on obtient un range(le databodyrange en fait
set r=activesheet.listobjects("Tableau1").range


maintenant par le range
'ici on ne précise pas la feuille parent rien du tout car un names "Tableau1" il ne peut y en avoir qu'un
set r=range("Tableau1")

maintenant ajouter /supprimer des lignes
avec un range quelle galéré il faut faire des find et des match et des end(xlup) et je t'en foutais moi et touticointi
donc on garde la méthode range mais on la re transforme en listobject
set T=range("Tableau1").listobject ' T est donc un listobject(tableau structuré)

j'ajoute une ligne à la fin
set ligne=t.listrows.add

j ajoute une ligne en 3 eme position (donc insertion)
set ligne=t.listrows.add(3)

c'est quoi le range de cette ligne
msgbox ligne.range.address

bref et encore bien d'autre petits truc utile avec un tableau structuré qui simplifie vraiment la tache
 
Dernière édition:

Jacquie

XLDnaute Nouveau
Bonjour Jacquie
il faudrait être plus précis .
Mets des explications avec exemples.
Bonne journée
Jean marie
Re bonjour à tous,

je vais essayer d’être plus clair :).
Dans mon fichier exemple, lorsque je clic sur mon bouton définir (qui se trouve dans ma "Feuil1") mon Userform s'affiche :

1634810131581.png

En espérant que mon exemple soit plus parlant.

Bonne journée et merci de m'aider.
 

patricktoulon

XLDnaute Barbatruc
re
@ChTi160
après pour être honnête celui de pierre fauconnier est bien mais il s'adresse déjà a des niveaux moyens et +
les débutants en perdent leur cheveux
le mieux c'est de poser des question pertinentes aux quelles les membres aguerris répondent et enregistrer les leçons
perso j'ai plus appris comme ça que sur des tutos qui se mettent pas a la porté d'un débutant
et ça fait vire le forum après tout

merci pour mon LOL des fois ca me manque dans tes réponses 🤣😂😅
 

ChTi160

XLDnaute Barbatruc
Re
tu sais que je suis autodidacte et j'apprends de pleins de façons
Merci de ton retour !
la je cherche s'il est possible de Charger une Liste sans doublon (colonne d'un tableau structuré ,AdvanceFilter ) directement dans un tableau temporaire ! je cherche , je teste et ça m'occupe pas mal ! LOL
Bonne fin de journée
jean marie
 

Discussions similaires

Statistiques des forums

Discussions
312 113
Messages
2 085 425
Membres
102 886
dernier inscrit
eurlece