OVH Cloud OVH Cloud

Copier des données d'un listbox à un un autre

7 réponses
Avatar
Alex St-Pierre
Bonjour,
Je suis entrain de construire un outil d'impression et je ne suis pas très
familier avec la programmation macro pour les ListBox. Je me demande comment
les éléments peuvent passer d'un ListBox à un autre? Comment savoir quels
éléments du ListBox sont présentement sélectionnés? Voici ce que j'aimerais
faire:

Dans le ListBox1, il y aurait l'ensemble des feuilles du fichier excel
actuel. J'aimerais que les gens puissent sélectionner les feuilles à imprimer
(avec Ctrl et Shift). Ensuite, en cliquant sur un bouton de commande,
l'ensemble des feuilles sélectionnées se retrouvent dans le ListBox2 et le
ListBox1 contient seulement les feuilles non sélectionnées. J'ai 2 boutons de
commande, un qui envoi les feuilles sélectionné dans ListBox1 vers le
ListBox2 et l'autre à l'invers. Ensuite, en cliquant un 3e bouton,
l'impression se lance pour les feuilles inclusent dans listbox2.
Merci !
Alex
--
Alex St-Pierre

7 réponses

Avatar
michdenis
Essaie ceci :

'------------------------
Sub MesListBox()

Dim T(), A As Integer
Me.ListBox1.Clear
For Each Sh In ActiveWindow.SelectedSheets

ReDim Preserve T(A)
T(A) = Sh.Name
A = A + 1
Next
Me.ListBox1.List = T

Me.ListBox2.Clear
On Error Resume Next
For Each Sh In Sheets
If Not IsNumeric(Application.Match(Sh.Name, T, 0)) Then
Err = 0
ListBox2.AddItem Sh.Name
End If
Next

End Sub
'------------------------


"Alex St-Pierre" a écrit dans le message de news:

Bonjour,
Je suis entrain de construire un outil d'impression et je ne suis pas très
familier avec la programmation macro pour les ListBox. Je me demande comment
les éléments peuvent passer d'un ListBox à un autre? Comment savoir quels
éléments du ListBox sont présentement sélectionnés? Voici ce que j'aimerais
faire:

Dans le ListBox1, il y aurait l'ensemble des feuilles du fichier excel
actuel. J'aimerais que les gens puissent sélectionner les feuilles à imprimer
(avec Ctrl et Shift). Ensuite, en cliquant sur un bouton de commande,
l'ensemble des feuilles sélectionnées se retrouvent dans le ListBox2 et le
ListBox1 contient seulement les feuilles non sélectionnées. J'ai 2 boutons de
commande, un qui envoi les feuilles sélectionné dans ListBox1 vers le
ListBox2 et l'autre à l'invers. Ensuite, en cliquant un 3e bouton,
l'impression se lance pour les feuilles inclusent dans listbox2.
Merci !
Alex
--
Alex St-Pierre
Avatar
Alex St-Pierre
Merci !
Je vais utiliser la programmation pour mettre l'ensemble des feuilles dans
le listbox1 au point de départ. Par la suite, est-ce que tu sais comment je
peux faire pour déplacer les noms d'un ListeBox à l'autre en utilisant un
bouton de commande?
Merci !
Alex

Private Sub UserForm_Initialize()
Dim T(), A As Integer
Me.ListBox1.Clear
For Each Sh In ActiveWorkBook
ReDim Preserve T(A)
T(A) = Sh.Name
A = A + 1
Next
Me.ListBox1.List = T
End Sub

--
Alex St-Pierre



Essaie ceci :

'------------------------
Sub MesListBox()

Dim T(), A As Integer
Me.ListBox1.Clear
For Each Sh In ActiveWindow.SelectedSheets

ReDim Preserve T(A)
T(A) = Sh.Name
A = A + 1
Next
Me.ListBox1.List = T

Me.ListBox2.Clear
On Error Resume Next
For Each Sh In Sheets
If Not IsNumeric(Application.Match(Sh.Name, T, 0)) Then
Err = 0
ListBox2.AddItem Sh.Name
End If
Next

End Sub
'------------------------


"Alex St-Pierre" a écrit dans le message de news:

Bonjour,
Je suis entrain de construire un outil d'impression et je ne suis pas très
familier avec la programmation macro pour les ListBox. Je me demande comment
les éléments peuvent passer d'un ListBox à un autre? Comment savoir quels
éléments du ListBox sont présentement sélectionnés? Voici ce que j'aimerais
faire:

Dans le ListBox1, il y aurait l'ensemble des feuilles du fichier excel
actuel. J'aimerais que les gens puissent sélectionner les feuilles à imprimer
(avec Ctrl et Shift). Ensuite, en cliquant sur un bouton de commande,
l'ensemble des feuilles sélectionnées se retrouvent dans le ListBox2 et le
ListBox1 contient seulement les feuilles non sélectionnées. J'ai 2 boutons de
commande, un qui envoi les feuilles sélectionné dans ListBox1 vers le
ListBox2 et l'autre à l'invers. Ensuite, en cliquant un 3e bouton,
l'impression se lance pour les feuilles inclusent dans listbox2.
Merci !
Alex
--
Alex St-Pierre





Avatar
michdenis
La question originale était :

| Ensuite, en cliquant sur un bouton de commande,
| l'ensemble des feuilles sélectionnées se retrouvent dans le ListBox2 et le
| ListBox1 contient seulement les feuilles non sélectionnées.

C'est exactement ce qui se passe et ce avec une seule procédure
Inverse le nom des listbox dans la procédure que je t'ai soumis...

Ta procédure "Private Sub UserForm_Initialize()" initialise déjà
ta listbox de l'ensemble des feuilles...



"Alex St-Pierre" a écrit dans le message de news:

Merci !
Je vais utiliser la programmation pour mettre l'ensemble des feuilles dans
le listbox1 au point de départ. Par la suite, est-ce que tu sais comment je
peux faire pour déplacer les noms d'un ListeBox à l'autre en utilisant un
bouton de commande?
Merci !
Alex

Private Sub UserForm_Initialize()
Dim T(), A As Integer
Me.ListBox1.Clear
For Each Sh In ActiveWorkBook
ReDim Preserve T(A)
T(A) = Sh.Name
A = A + 1
Next
Me.ListBox1.List = T
End Sub

--
Alex St-Pierre



Essaie ceci :

'------------------------
Sub MesListBox()

Dim T(), A As Integer
Me.ListBox1.Clear
For Each Sh In ActiveWindow.SelectedSheets

ReDim Preserve T(A)
T(A) = Sh.Name
A = A + 1
Next
Me.ListBox1.List = T

Me.ListBox2.Clear
On Error Resume Next
For Each Sh In Sheets
If Not IsNumeric(Application.Match(Sh.Name, T, 0)) Then
Err = 0
ListBox2.AddItem Sh.Name
End If
Next

End Sub
'------------------------


"Alex St-Pierre" a écrit dans le message de news:

Bonjour,
Je suis entrain de construire un outil d'impression et je ne suis pas très
familier avec la programmation macro pour les ListBox. Je me demande comment
les éléments peuvent passer d'un ListBox à un autre? Comment savoir quels
éléments du ListBox sont présentement sélectionnés? Voici ce que j'aimerais
faire:

Dans le ListBox1, il y aurait l'ensemble des feuilles du fichier excel
actuel. J'aimerais que les gens puissent sélectionner les feuilles à imprimer
(avec Ctrl et Shift). Ensuite, en cliquant sur un bouton de commande,
l'ensemble des feuilles sélectionnées se retrouvent dans le ListBox2 et le
ListBox1 contient seulement les feuilles non sélectionnées. J'ai 2 boutons de
commande, un qui envoi les feuilles sélectionné dans ListBox1 vers le
ListBox2 et l'autre à l'invers. Ensuite, en cliquant un 3e bouton,
l'impression se lance pour les feuilles inclusent dans listbox2.
Merci !
Alex
--
Alex St-Pierre





Avatar
Alex St-Pierre
En effet, ça va me prendre les deux parties du programme (dans la même
macro), les feuilles qui ne se trouvent pas dans ListBox2 seront dans
ListBox1. Ça fonctionne très bien. Je me demandais si c'était utile de mettre
la fonction dans "Private Sub UserForm_Initialize()", sinon, je pensais
écrire:
Load UserForm1
Run "MesListBox"
UserForm1.Show

Par la suite, j'aimerais mettre un bouton qui permet de transférer les
cellules sélectionnées dans listbox1 à l'intérieur de listbox2. Y-a-t-il
moyen de sélectionner plusieurs cellules en même temps dans Listbox1?
Private Sub CommandButton1_Click()
ListBox2.Add ListBox1.SelectedItems
ListBox1.Remove Selected Items
End Sub

Finalement, en cliquant sur:
Private Sub CommandButton2_Click()
For i = 1 to ListBox2.List.Items.Count
NomFeuille = ListeBox1.List.Items(i)
Traitement...
Next i
End Sub
--
Alex St-Pierre



La question originale était :

| Ensuite, en cliquant sur un bouton de commande,
| l'ensemble des feuilles sélectionnées se retrouvent dans le ListBox2 et le
| ListBox1 contient seulement les feuilles non sélectionnées.

C'est exactement ce qui se passe et ce avec une seule procédure
Inverse le nom des listbox dans la procédure que je t'ai soumis...

Ta procédure "Private Sub UserForm_Initialize()" initialise déjà
ta listbox de l'ensemble des feuilles...



"Alex St-Pierre" a écrit dans le message de news:

Merci !
Je vais utiliser la programmation pour mettre l'ensemble des feuilles dans
le listbox1 au point de départ. Par la suite, est-ce que tu sais comment je
peux faire pour déplacer les noms d'un ListeBox à l'autre en utilisant un
bouton de commande?
Merci !
Alex

Private Sub UserForm_Initialize()
Dim T(), A As Integer
Me.ListBox1.Clear
For Each Sh In ActiveWorkBook
ReDim Preserve T(A)
T(A) = Sh.Name
A = A + 1
Next
Me.ListBox1.List = T
End Sub

--
Alex St-Pierre



Essaie ceci :

'------------------------
Sub MesListBox()

Dim T(), A As Integer
Me.ListBox1.Clear
For Each Sh In ActiveWindow.SelectedSheets

ReDim Preserve T(A)
T(A) = Sh.Name
A = A + 1
Next
Me.ListBox1.List = T

Me.ListBox2.Clear
On Error Resume Next
For Each Sh In Sheets
If Not IsNumeric(Application.Match(Sh.Name, T, 0)) Then
Err = 0
ListBox2.AddItem Sh.Name
End If
Next

End Sub
'------------------------


"Alex St-Pierre" a écrit dans le message de news:

Bonjour,
Je suis entrain de construire un outil d'impression et je ne suis pas très
familier avec la programmation macro pour les ListBox. Je me demande comment
les éléments peuvent passer d'un ListBox à un autre? Comment savoir quels
éléments du ListBox sont présentement sélectionnés? Voici ce que j'aimerais
faire:

Dans le ListBox1, il y aurait l'ensemble des feuilles du fichier excel
actuel. J'aimerais que les gens puissent sélectionner les feuilles à imprimer
(avec Ctrl et Shift). Ensuite, en cliquant sur un bouton de commande,
l'ensemble des feuilles sélectionnées se retrouvent dans le ListBox2 et le
ListBox1 contient seulement les feuilles non sélectionnées. J'ai 2 boutons de
commande, un qui envoi les feuilles sélectionné dans ListBox1 vers le
ListBox2 et l'autre à l'invers. Ensuite, en cliquant un 3e bouton,
l'impression se lance pour les feuilles inclusent dans listbox2.
Merci !
Alex
--
Alex St-Pierre










Avatar
JB
Bonjour,


Transfert Liste avec sélection multiple (listes triées):

http://cjoint.com/?jEfDJOv5OD

Dim mondicoSource, monDicoDest
Private Sub UserForm_Initialize()
Set mondicoSource = CreateObject("Scripting.Dictionary")
Set monDicoDest = CreateObject("Scripting.Dictionary")
For i = 1 To Sheets.Count
mondicoSource.Add Sheets(i).Name, Sheets(i).Name
Next i
temp = mondicoSource.items
Call Tri(temp, LBound(temp), UBound(temp)) ' voir module mod_tri
Me.Source.List = temp
Me.Source.MultiSelect = fmMultiSelectMulti
End Sub

Private Sub b_prend_Click()
For i = 0 To Me.Source.ListCount - 1
If Me.Source.Selected(i) = True Then
monDicoDest.Add Me.Source.List(i), Me.Source.List(i)
mondicoSource.Remove (Me.Source.List(i))
End If
Next
temp = monDicoDest.items
Call Tri(temp, LBound(temp), UBound(temp)) ' voir module mod_tri
Me.Dest.List = temp
temp = mondicoSource.items
Me.Source.List = temp
End Sub

Private Sub B_enlève_Click()
For i = 0 To Me.Dest.ListCount - 1
mondicoSource.Add Me.Dest.List(i), Me.Dest.List(i)
monDicoDest.Remove Me.Dest.List(i)
Next i
temp = mondicoSource.items
Call Tri(temp, LBound(temp), UBound(temp)) ' voir module mod_tri
Me.Source.List = temp
Me.Dest.Clear
End Sub

Private Sub B_imprime_Click()
For i = 0 To Me.Dest.ListCount - 1
nf = Me.Dest.List(i)
Sheets(nf).PrintPreview
Next i
End Sub

Sub Tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = 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

Cordialement JB


Bonjour,
Je suis entrain de construire un outil d'impression et je ne suis pas tr ès
familier avec la programmation macro pour les ListBox. Je me demande comm ent
les éléments peuvent passer d'un ListBox à un autre? Comment savoir quels
éléments du ListBox sont présentement sélectionnés? Voici ce qu e j'aimerais
faire:

Dans le ListBox1, il y aurait l'ensemble des feuilles du fichier excel
actuel. J'aimerais que les gens puissent sélectionner les feuilles à imprimer
(avec Ctrl et Shift). Ensuite, en cliquant sur un bouton de commande,
l'ensemble des feuilles sélectionnées se retrouvent dans le ListBox2 et le
ListBox1 contient seulement les feuilles non sélectionnées. J'ai 2 bo utons de
commande, un qui envoi les feuilles sélectionné dans ListBox1 vers le
ListBox2 et l'autre à l'invers. Ensuite, en cliquant un 3e bouton,
l'impression se lance pour les feuilles inclusent dans listbox2.
Merci !
Alex
--
Alex St-Pierre


Avatar
MichDenis
Bonjour Alex,

Je ne suis pas certain de comprendre ce que tu veux faire...
mais voici un fichier qui donne quelques explications sur ce
que sont les "Tableaux" (array), comment les utiliser avec
un listbox, et comment traiter une sélection multiple
dans un listbox. Ce fichier exemple provient du site
de Misange : http://www.excelabo.net/

http://cjoint.com/?jEpDc4gsmb

'----------------------
Load UserForm1
Run "MesListBox"
UserForm1.Show
'----------------------
La commande Load est surtout utile pour charger les formulaires en mémoire
avant de les appeler : Exemple en utilisant l'événement
"Private Sub Workbook_Open()" du ThisWorkbook...

Lorsque l'on gère une application via des formulaires, le fait que ceux-ci soient
chargés en mémoire donne à l'usager l'effet d'instanéité de l'application lorsque
ces derniers sont appelés car il ne reste plus qu'à les afficher avec la commande
Userform1.Show... et cela est très pratique dans le cas de
"gros formulaires" qui prennent quelques instants à s'initialer...Dans les autres
cas, la commande Userform1.Show suffit.



"Alex St-Pierre" a écrit dans le message de news:

En effet, ça va me prendre les deux parties du programme (dans la même
macro), les feuilles qui ne se trouvent pas dans ListBox2 seront dans
ListBox1. Ça fonctionne très bien. Je me demandais si c'était utile de mettre
la fonction dans "Private Sub UserForm_Initialize()", sinon, je pensais
écrire:
Load UserForm1
Run "MesListBox"
UserForm1.Show

Par la suite, j'aimerais mettre un bouton qui permet de transférer les
cellules sélectionnées dans listbox1 à l'intérieur de listbox2. Y-a-t-il
moyen de sélectionner plusieurs cellules en même temps dans Listbox1?
Private Sub CommandButton1_Click()
ListBox2.Add ListBox1.SelectedItems
ListBox1.Remove Selected Items
End Sub

Finalement, en cliquant sur:
Private Sub CommandButton2_Click()
For i = 1 to ListBox2.List.Items.Count
NomFeuille = ListeBox1.List.Items(i)
Traitement...
Next i
End Sub
--
Alex St-Pierre



La question originale était :

| Ensuite, en cliquant sur un bouton de commande,
| l'ensemble des feuilles sélectionnées se retrouvent dans le ListBox2 et le
| ListBox1 contient seulement les feuilles non sélectionnées.

C'est exactement ce qui se passe et ce avec une seule procédure
Inverse le nom des listbox dans la procédure que je t'ai soumis...

Ta procédure "Private Sub UserForm_Initialize()" initialise déjà
ta listbox de l'ensemble des feuilles...



"Alex St-Pierre" a écrit dans le message de news:

Merci !
Je vais utiliser la programmation pour mettre l'ensemble des feuilles dans
le listbox1 au point de départ. Par la suite, est-ce que tu sais comment je
peux faire pour déplacer les noms d'un ListeBox à l'autre en utilisant un
bouton de commande?
Merci !
Alex

Private Sub UserForm_Initialize()
Dim T(), A As Integer
Me.ListBox1.Clear
For Each Sh In ActiveWorkBook
ReDim Preserve T(A)
T(A) = Sh.Name
A = A + 1
Next
Me.ListBox1.List = T
End Sub

--
Alex St-Pierre



Essaie ceci :

'------------------------
Sub MesListBox()

Dim T(), A As Integer
Me.ListBox1.Clear
For Each Sh In ActiveWindow.SelectedSheets

ReDim Preserve T(A)
T(A) = Sh.Name
A = A + 1
Next
Me.ListBox1.List = T

Me.ListBox2.Clear
On Error Resume Next
For Each Sh In Sheets
If Not IsNumeric(Application.Match(Sh.Name, T, 0)) Then
Err = 0
ListBox2.AddItem Sh.Name
End If
Next

End Sub
'------------------------


"Alex St-Pierre" a écrit dans le message de news:

Bonjour,
Je suis entrain de construire un outil d'impression et je ne suis pas très
familier avec la programmation macro pour les ListBox. Je me demande comment
les éléments peuvent passer d'un ListBox à un autre? Comment savoir quels
éléments du ListBox sont présentement sélectionnés? Voici ce que j'aimerais
faire:

Dans le ListBox1, il y aurait l'ensemble des feuilles du fichier excel
actuel. J'aimerais que les gens puissent sélectionner les feuilles à imprimer
(avec Ctrl et Shift). Ensuite, en cliquant sur un bouton de commande,
l'ensemble des feuilles sélectionnées se retrouvent dans le ListBox2 et le
ListBox1 contient seulement les feuilles non sélectionnées. J'ai 2 boutons de
commande, un qui envoi les feuilles sélectionné dans ListBox1 vers le
ListBox2 et l'autre à l'invers. Ensuite, en cliquant un 3e bouton,
l'impression se lance pour les feuilles inclusent dans listbox2.
Merci !
Alex
--
Alex St-Pierre










Avatar
JB
Explications sur les tableaux, les collections et les dictionnaires.

http://www.excelabo.net/compteclic.php?nom=jb-tableaux


JB

Bonjour,
Je suis entrain de construire un outil d'impression et je ne suis pas tr ès
familier avec la programmation macro pour les ListBox. Je me demande comm ent
les éléments peuvent passer d'un ListBox à un autre? Comment savoir quels
éléments du ListBox sont présentement sélectionnés? Voici ce qu e j'aimerais
faire:

Dans le ListBox1, il y aurait l'ensemble des feuilles du fichier excel
actuel. J'aimerais que les gens puissent sélectionner les feuilles à imprimer
(avec Ctrl et Shift). Ensuite, en cliquant sur un bouton de commande,
l'ensemble des feuilles sélectionnées se retrouvent dans le ListBox2 et le
ListBox1 contient seulement les feuilles non sélectionnées. J'ai 2 bo utons de
commande, un qui envoi les feuilles sélectionné dans ListBox1 vers le
ListBox2 et l'autre à l'invers. Ensuite, en cliquant un 3e bouton,
l'impression se lance pour les feuilles inclusent dans listbox2.
Merci !
Alex
--
Alex St-Pierre