VBA - Listbox - Export de plusieurs colonnes

JONEY76

XLDnaute Occasionnel
Bonjour à tous,

J'ai ici un exemple de code qui fonctionne très bien.
Je peux choisir une donnée dans la listbox et l'exporter vers la feuille.

Cependant, je souhaiterai exporter plusieurs colonnes au lieu d'une seule.

Je suis bloqué au niveau des variables, je n'arrive pas à acquérir les bons automatismes..

Merci pour les coups d'pouces
 

Pièces jointes

  • export de listbox.xlsm
    21 KB · Affichages: 81

JONEY76

XLDnaute Occasionnel
Re : VBA - Listbox - Export de plusieurs colonnes

Re,

Private Sub UserForm_Initialize()

'Déclarer les variables

Dim Vadressedernier

'Remplir la listbox avec les données de la feuille liste
Sheets("liste").Activate

'De B3, en descendant jusqu'à la première ligne vide de la colonne : ...
Vadressedernier = Range("d3").End(xlDown).Address

'Remplir la listbox
ListBox1.RowSource = "B3:" & Vadressedernier
ListBox1.ListIndex = 0
ListBox1.ColumnCount = 3

'Option du multi select
ListBox1.MultiSelect = fmMultiSelectExtended

Sheets("export").Activate

End Sub


Voilà, j'arrive à afficher les trois colonnes dans la listbox
Mais pas encore à les exporter
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : VBA - Listbox - Export de plusieurs colonnes

Bonjour,

Exemple

Code:
Dim f, a(1 To 20, 1 To 2)
Sub UserForm_Initialize()
  Set f = Sheets("bd")
  Me.choix.List = Range(f.[A2], f.[b65000].End(xlUp)).Value
  Me.choix.MultiSelect = fmMultiSelectMulti
End Sub

Private Sub Choix_Change()
 ligne = 0
 For k = 0 To Me.choix.ListCount - 1
   If Me.choix.Selected(k) = True Then
     ligne = ligne + 1
     a(ligne, 1) = Me.choix.List(k, 0)
     a(ligne, 2) = Me.choix.List(k, 1)
   End If
 Next k
End Sub

Private Sub cmdValider_Click()
  f.Cells(2, "e").Resize(20, 2).ClearContents
  f.Cells(2, "e").Resize(UBound(a), 2) = a
  Unload Me
End Sub

JB
 

Pièces jointes

  • FormSelectionMult2.xls
    48.5 KB · Affichages: 100

JONEY76

XLDnaute Occasionnel
Re : VBA - Listbox - Export de plusieurs colonnes

Bonjour,

Merci beaucoup de vous être penché sur mon soucis !!

Je regarde le code et je vais adapter !
J'avais regardé sur votre site qui me sert de référence mais je n'avais pas trouvé cet exemple

En tout cas, merci beaucoup !!
 

JONEY76

XLDnaute Occasionnel
Re : VBA - Listbox - Export de plusieurs colonnes

' ATTENTION : Déclaration de variables
Dim f, a(1 To 20, 1 To 2)
Sub UserForm_Initialize()

'Donner un nom raccourci aux feuilles , F pour la feuille de base de données et L pour la feuille avec les listes

Set f = Sheets("bd")
Set l = Sheets("liste")

'La listbox de l'userform est nommée choix, la liste à afficher va de B3 au dernier en C
Me.choix.List = Range(l.[b3], l.[d65000].End(xlUp)).Value

'Option multiselection de la list box nommée choix
Me.choix.MultiSelect = fmMultiSelectMulti
Me.choix.ColumnCount = 3
Me.choix.ColumnWidths = "60;50;70"

End Sub

Private Sub Choix_Change()

ligne = 2 'A partir de quelle ligne, les résultats s'afficheront
'0= ligne A / 1= ligne B etc...

'Boucle, pour chaque ligne sélectionnée
For k = 0 To Me.choix.ListCount - 1

'Si la ligne est véritablement sélectionnée alors..
If Me.choix.Selected(k) = True Then

ligne = ligne + 1 'ligne +1 pour garder les entêtes des colonnes?

a(ligne, 1) = Me.choix.List(k, 0)
a(ligne, 2) = Me.choix.List(k, 1)

End If

'Prochaine ligne sélectionnée 'boucle
Next k

End Sub
Private Sub cmdValider_Click()

' Traduction?
f.Cells(2, "e").Resize(20, 2).ClearContents
f.Cells(2, "e").Resize(UBound(a), 2) = a
Unload Me
End Sub


J'ai un peu de mal avec les variables ...
Comment dois je faire pour ajouter une troisième colonne sur la feuille EXCEL
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : VBA - Listbox - Export de plusieurs colonnes

Voir PJ

Code:
Dim f, a(1 To 20, 1 To 3)
Sub UserForm_Initialize()
  Set f = Sheets("bd")
  Me.choix.List = Range(f.[A2], f.[c65000].End(xlUp)).Value
  Me.choix.MultiSelect = fmMultiSelectMulti
End Sub

Private Sub Choix_Change()
 ligne = 0
 For k = 0 To Me.choix.ListCount - 1
   If Me.choix.Selected(k) = True Then
     ligne = ligne + 1
     For c = 0 To 2
       a(ligne, c + 1) = Me.choix.List(k, c)
     Next c
   End If
 Next k

End Sub
Private Sub cmdValider_Click()
  f.Cells(2, "e").Resize(20, 3).ClearContents
  f.Cells(2, "e").Resize(UBound(a), 3) = a
  Unload Me
End Sub

JB
 

Pièces jointes

  • FormSelectionMult2zz.xls
    45.5 KB · Affichages: 72
  • FormSelectionMult2zz.xls
    45.5 KB · Affichages: 72
  • FormSelectionMult2zz.xls
    45.5 KB · Affichages: 85
Dernière édition:

JONEY76

XLDnaute Occasionnel
Re : VBA - Listbox - Export de plusieurs colonnes

Re,

J'essai de traduire le code,
Je me perds dans les variables..

'Déclaration des variables (f pour la feuille BD) et ( a

Dim f, a(1 To 20, 1 To 3)
Sub UserForm_Initialize()

'Remplissage de la listbox nommée choix, des colonnes A à C
Set f = Sheets("bd")
Me.choix.List = Range(f.[A2], f.[c65000].End(xlUp)).Value

'Option de sélection multiple
Me.choix.MultiSelect = fmMultiSelectMulti
End Sub
Private Sub Choix_Change()
ligne = 0
For k = 0 To Me.choix.ListCount - 1
If Me.choix.Selected(k) = True Then
ligne = ligne + 1
For c = 0 To 2
a(ligne, c + 1) = Me.choix.List(k, c)
Next c
End If
Next k
End Sub
Private Sub cmdValider_Click()

f.Cells(2, "e").Resize(20, 3).ClearContents
f.Cells(2, "e").Resize(UBound(a), 3) = a
Unload Me
End Sub
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : VBA - Listbox - Export de plusieurs colonnes

Voir PJ

Code:
Dim f, nbCol, a()
Sub UserForm_Initialize()
  Set f = Sheets("bd")
  Me.choix.List = Range(f.[A2], f.[d65000].End(xlUp)).Value
  Me.choix.MultiSelect = fmMultiSelectMulti
  nbCol = 4
  ReDim a(1 To 20, 1 To nbCol)
End Sub

Private Sub Choix_Change()
 ligne = 0
 For k = 0 To Me.choix.ListCount - 1
   If Me.choix.Selected(k) = True Then
     ligne = ligne + 1
     For c = 0 To nbCol - 1
       a(ligne, c + 1) = Me.choix.List(k, c)
     Next c
   End If
 Next k
End Sub

Private Sub cmdValider_Click()
  f.Cells(2, "f").Resize(20, nbCol).ClearContents
  f.Cells(2, "f").Resize(UBound(a), nbCol) = a
  Unload Me
End Sub

JB
 

Pièces jointes

  • FormSelectionMult2zz.xls
    46.5 KB · Affichages: 72
  • FormSelectionMult2zz.xls
    46.5 KB · Affichages: 58
  • FormSelectionMult2zz.xls
    46.5 KB · Affichages: 59

JONEY76

XLDnaute Occasionnel
Re : VBA - Listbox - Export de plusieurs colonnes

Re,

Merci beaucoup pour le coup de main,

J'ai adapté le code suivant les remarques


Il y a une chose que je ne comprends pas :

Tout en haut je déclare des variables: exemple L
Je leur donne une valeur dans l'initialise L = 100

Comment cela se fait que cette valeur ne doit pas être réécrite dans le code du bouton? Cela garde 100 en mémoire ?
 

Pièces jointes

  • FormSelectionMult2zz.xls
    60 KB · Affichages: 61
  • FormSelectionMult2zz.xls
    60 KB · Affichages: 71
  • FormSelectionMult2zz.xls
    60 KB · Affichages: 98

Discussions similaires