Listbox

guevain

XLDnaute Junior
Bonjour a tous ,
j'ai une liste variables dans une listbox(a choix multiple)
Je souhaiterai que chaque sélection arrive dans une cellule différente . Ex:choix1 en A1. , choix2 en C2 , etc...
J'arrive bien a extraire les données dans une meme cellule en ajoutant un séparateur mais impossible de mettre plusieurs choix dans plusieurs cellules.
Si besoin d'un extrait du fichier , je le mettrai demain. Car il est sur mon PC pro.

Merci a tous ceux qui se pencherons sur mon problème
 

Si...

XLDnaute Barbatruc
Re : Listbox

salut

il semblerait qu'il y ait des doublons Job :D.
S'il y en a trop on peut les éliminer mais en initialisant la liste autrement.
Dans le fichier joint j'ai ajouté une exemple de liste "déclinante" pour éviter des saisies déjà effectuées mais cet avantage est contrebalancé par une validation plus lente (2 clics pour chaque choix).
 

Pièces jointes

  • ListBox Multiselect ou pas.xlsm
    37.4 KB · Affichages: 41

job75

XLDnaute Barbatruc
Re : Listbox

Bonjour guevain, salut Si...

Oui, s'il faut éliminer les doublons, on peut utiliser une 3ème méthode pour remplir la ListBox.

La méthode List et l'objet Dictionary :

Code:
Private Sub CommandButton1_Click()
Dim i&, t(), n&
For i = 0 To ListBox1.ListCount - 1
  If ListBox1.Selected(i) Then
    ReDim Preserve t(n)
    t(n) = ListBox1.List(i, 0)
    n = n + 1
  End If
Next
Range("C2:C" & Rows.Count).ClearContents 'RAZ
If n Then [C2].Resize(n) = Application.Transpose(t)
End Sub

Private Sub UserForm_Initialize()
Dim d As Object, c As Range
Set d = CreateObject("Scripting.Dictionary")
For Each c In [Liste]
  d(c.Value) = ""
Next
ListBox1.List = Application.Transpose(d.keys)
End Sub
Fichier (2).

Remarque : avec les méthodes List ou AddItem la ListBox ne peut pas avoir d'en-tête de colonne.

A+
 

Pièces jointes

  • mise en forme BDD(2).xls
    71 KB · Affichages: 36
Dernière édition:

job75

XLDnaute Barbatruc
Re : Listbox

Re,

Si l'on veut que la liste de la ListBox soit triée on peut utiliser la macro de Jacques Boisgontier :

Code:
Private Sub CommandButton1_Click()
Dim i&, t(), n&
For i = 0 To ListBox1.ListCount - 1
  If ListBox1.Selected(i) Then
    ReDim Preserve t(n)
    t(n) = ListBox1.List(i, 0)
    n = n + 1
  End If
Next
Range("C2:C" & Rows.Count).ClearContents 'RAZ
If n Then [C2].Resize(n) = Application.Transpose(t)
End Sub

Private Sub UserForm_Initialize()
Dim d As Object, c As Range, temp()
Set d = CreateObject("Scripting.Dictionary")
For Each c In [Liste]
  d(c.Value) = ""
Next
temp = Application.Transpose(d.keys)
Call Tri(temp, 1, UBound(temp))
ListBox1.List = temp
End Sub

Sub Tri(a(), gauc, droi) ' Quick sort de Jacques Boisgontier
Dim ref, g, d, temp
 ref = a((gauc + droi) \ 2, 1)
 g = gauc: d = droi
 Do
     Do While a(g, 1) < ref: g = g + 1: Loop
     Do While ref < a(d, 1): d = d - 1: Loop
     If g <= d Then
       temp = a(g, 1): a(g, 1) = a(d, 1): a(d, 1) = temp
       g = g + 1: d = d - 1
     End If
 Loop While g <= d
 If g < droi Then Call Tri(a, g, droi)
 If gauc < d Then Call Tri(a, gauc, d)
End Sub
Fichier (3).

A+
 

Pièces jointes

  • mise en forme BDD(3).xls
    72 KB · Affichages: 34

guevain

XLDnaute Junior
Re : Listbox

bonjour a tous ,
vos methode sont super bien mais ne correspondent pas ames attentes .

en effets il faut que l'incrementation de la listbox se fassent en fonction d'une valeur saisie par un inputbox,(valeur en A1 qui fait reference a une base de données).

je vais essayer d'adapter vos methode a mon besoin , mais il me semble que le fait de definir un nom pour la liste soit le point bloquant.la méthode AddItem me semble la plus approprié.

merci a tous et n'hesitez a revenir vers moi si vous avez des solutions .
 

job75

XLDnaute Barbatruc
Re : Listbox

Bonsoir guevain, le forum,

Retour de week-end.

Pas sûr d'avoir bien compris vos attentes.

Voyez tout de même ce que l'on peut faire en ajoutant une ComboBox permettant de définir la ListBox.

Pour la colonne des dates, il faut une boucle avant le tri (pour avoir des nombres) et une boucle après le tri (pour afficher au format Date).

Le nom BDD définit dynamiquement la base de données.

Fichier (4).

A+
 

Pièces jointes

  • mise en forme BDD(4).xls
    85 KB · Affichages: 36

guevain

XLDnaute Junior
Re : Listbox

bonsoir job75,

c'est vraiment gentil de prendre du temps pour moi .

je vais essayer de te detailler exactement se que je veux faire:

il faut qu'a partir du choix fait par inserbox (qui selectionne la colonne CAB dans la base),la listbox s'incremente des données de la colonne CMS et qu'a partir d'une selection multiple dans la listbox les infos puissent etre transféré sur des cellules prédéfini (mais a nombre variable).

voila ,en esperant avoir été clair , car lorsque c'est quelque chose que l'on utilise tout les jour cela parait simple.

d'autre part si cela est trop compliqué , j'essaierai de faire une extraction de la colonne CMS(uniquement les lignes qui correspondent a la valeur prédéfini de la colonne CAB) par un "current region" et de le collé sur la feuille afin de lui definir un nom (comme utiliser dans le fichier que tu a mis en partage)et d'incrementer ma listbox a partir de là.

merci beaucoup de m'aider
 

guevain

XLDnaute Junior
Re : Listbox

re ,

ci joint un fichier avec les commentaires qui details mon besoin (il y a des commentaires dans les 2 onglets).

@+
 

Pièces jointes

  • mise en forme BDD.xlsm
    30.5 KB · Affichages: 39
  • mise en forme BDD.xlsm
    30.5 KB · Affichages: 36
  • mise en forme BDD.xlsm
    30.5 KB · Affichages: 44

job75

XLDnaute Barbatruc
Re : Listbox

Bonjour guevain, le forum,

Maintenant c'est très clair, ce fichier (5) doit donc convenir.

J'ai conservé le nom défini BDD bien que seules ses colonnes A et C soient utilisées.

La tableau VBA tablo est défini à l'ouverture de l'USF et mémorisé.

A+
 

Pièces jointes

  • mise en forme BDD(5).xls
    82 KB · Affichages: 66

guevain

XLDnaute Junior
Re : Listbox

Bonsoir job ,
Je viens de regarder votre fichier (le5) et la combobox+ la liste box c'est exatement l'outil que je voulais faire.
En revanche j'ai regarder le code et j'ai beaucoup de mal a le comprendre.j'ai remarquer que la liste des cms qui s'incremente dans la listbox n'est pas identique a cellle du fichier ( feuil4).
Je pense qu'il s'agit du tri operer par le biais du quick sort de jacques boisgontier..pourrait tu me detailler comment est incrementer la listbox.
Par avance merci
 

guevain

XLDnaute Junior
Re : Listbox

re
j'ai regarder de plus pres et j'ai reussi a supprimer le trie (qui ne me genais pas plus que ca )par contre je ne voit pas comment ou par quoi renplacer l'objet "dictionary".
j'ai penser a "add item" mais comme je ne maitrise pas bien le langage ,je m'enmêle les pinceaux.
 

Discussions similaires

Statistiques des forums

Discussions
312 913
Messages
2 093 534
Membres
105 750
dernier inscrit
fred13340