Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

listox vers cellules

9 réponses
Avatar
sebmen1
salut a tous

ayant bien avancé hier sur mon projet grace à Michel et Nicolas, me
voila de nouveau bloqué.

voila mon probleme :

je cherche à coller dans une feuille MODELE le resultat de la
selection d'une listbox.
pour etre plus concret, je selectionne a partir d'une liste principale
(nom prenom) un nombre variable de personnes qui viennent alimenter
une deuxieme listbox qui, au moment de la validation du formulaire,
doit etre copié vers une plage de cellules D12:D35.

merci pour vos propositions

Seb

9 réponses

Avatar
Nicolas B.
Salut seb,

Essaie ça :

Private Sub CommandButton1_Click()
j = 12
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
Sheets("MODELE").Cells(j, 4) = ListBox1.List(i)
j = j + 1
End If
Next
End Sub


A+
Nicolas B.


seb wrote:
salut a tous

ayant bien avancé hier sur mon projet grace à Michel et Nicolas, me
voila de nouveau bloqué.

voila mon probleme :

je cherche à coller dans une feuille MODELE le resultat de la
selection d'une listbox.
pour etre plus concret, je selectionne a partir d'une liste principale
(nom prenom) un nombre variable de personnes qui viennent alimenter
une deuxieme listbox qui, au moment de la validation du formulaire,
doit etre copié vers une plage de cellules D12:D35.

merci pour vos propositions

Seb


Avatar
Michel Gaboly
Bonjour,

Par curiosité, 2 questions :

Pourquoi éprouves-tu le besoin de passer par une seconde ListBox ?

Comment fais-tu pour alimenter cette seconde ListBox ?

Indique ton code ; j'ai peut-être + simple à te proposer.

Cependant, il est probable que tu peux faire l'économie de la seconde
ListBox : avec la propriété MultiSelec, tu peux sélectionner à la fois
autant d'éléments que tu veux dans la première ListBox. Pour cela,
dans la fenêtre Propriétés, en face de MultiSelect, choisis l'option
1 - fmMultiSelectMulti dans le menu déroulant

Ensuite, pour les transférer vers la plage D12:D35


Cas 1 - Une seule ListBox avec MultiSelect activé.
Les noms suivants sont utilisés :
LNoms, pour la ListBox
Réception, pour la cellule D12
PlageRéception pour la plage D12:D35
BOK pour le CommandButton sur le UserForm permettant de reporter
les données

NB - Les noms "Réception" et "PlageRéception" évitent les mauvaises
surprises si la feuille de calcul est modifiée (suppression et/ou inser-
tion de ligne(s) et/ou de colonne(s)). D'autre part, ils permettent au
traitement de bien fonctionner même si une autre feuille du classeur
est la feuille active.


Private Sub UserForm_Initialize()
' Alimentation de LNoms
Range("PlageRéception").ClearContents
End Sub

Private Sub BOK_Click()
Dim i As Integer, j As Integer
For i = 0 To LNoms.ListCount - 1
If LNoms.Selected(i) Then
Range("Réception").Offset(j) = LNoms.List(i)
j = j + 1
End If
Next i
Unload Me
End Sub

NB - Dans un ListBox sans multisélection, la propriété Value, renvoie
l'élément sélectionné. Si une multisélection est poddible, il faut alors
tester chaque item de la liste, ce qui se fait avec Selected(i)



Cas 2 - Une seconde ListBox, dont tous les éléments sont à récupérer
Les mêmes noms sont utilisés. La variable j n'est + nécessaire.

Private Sub UserForm_Initialize()
' Alimentation de LNoms
Range("PlageRéception").ClearContents
End Sub

Private Sub BOK_Click()
Dim i As Integer
For i = 0 To LNoms.ListCount - 1
Range("Réception").Offset(i) = LNoms.List(i)
Next i
Unload Me
End Sub



salut a tous

ayant bien avancé hier sur mon projet grace à Michel et Nicolas, me
voila de nouveau bloqué.

voila mon probleme :

je cherche à coller dans une feuille MODELE le resultat de la
selection d'une listbox.
pour etre plus concret, je selectionne a partir d'une liste principale
(nom prenom) un nombre variable de personnes qui viennent alimenter
une deuxieme listbox qui, au moment de la validation du formulaire,
doit etre copié vers une plage de cellules D12:D35.

merci pour vos propositions

Seb


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
Michel Gaboly
Bonjour Nicolas,

Désolé pour mon post qui fait en partie double emploi avec le tien,
que je n'avais pas vu avant de répondre.

Il y a une certaine similitude dans le code que nous proposons, mais
je n'ai pas copié, promis-juré ;-)))))



Salut seb,

Essaie ça :

Private Sub CommandButton1_Click()
j = 12
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
Sheets("MODELE").Cells(j, 4) = ListBox1.List(i)
j = j + 1
End If
Next
End Sub

A+
Nicolas B.

seb wrote:
salut a tous

ayant bien avancé hier sur mon projet grace à Michel et Nicolas, me
voila de nouveau bloqué.

voila mon probleme :

je cherche à coller dans une feuille MODELE le resultat de la
selection d'une listbox.
pour etre plus concret, je selectionne a partir d'une liste principale
(nom prenom) un nombre variable de personnes qui viennent alimenter
une deuxieme listbox qui, au moment de la validation du formulaire,
doit etre copié vers une plage de cellules D12:D35.

merci pour vos propositions

Seb



--
Cordialement,

Michel Gaboly
http://www.gaboly.com


Avatar
Nicolas B.
Salut Michel,

Désolé pour mon post qui fait en partie double emploi avec le tien,
que je n'avais pas vu avant de répondre.


Pas grave : moi, entre le moment où j'ai lu la question et le moment où
j'ai ouvert Excel pour tester une solution, j'ai oublié qu'il y avait
deux ListBox :-)


A+
Nicolas B.


Michel Gaboly wrote:
Bonjour Nicolas,

Désolé pour mon post qui fait en partie double emploi avec le tien,
que je n'avais pas vu avant de répondre.

Il y a une certaine similitude dans le code que nous proposons, mais
je n'ai pas copié, promis-juré ;-)))))




Avatar
Michel Gaboly
Re,

Aurais-tu parfois certaines faiblesses, que certains, avec beaucoup
de mauvaise foi, bien sûr ;-)) osent imputer à jps ?



Salut Michel,

Désolé pour mon post qui fait en partie double emploi avec le tien,
que je n'avais pas vu avant de répondre.


Pas grave : moi, entre le moment où j'ai lu la question et le moment où
j'ai ouvert Excel pour tester une solution, j'ai oublié qu'il y avait
deux ListBox :-)

A+
Nicolas B.

Michel Gaboly wrote:
Bonjour Nicolas,

Désolé pour mon post qui fait en partie double emploi avec le tien,
que je n'avais pas vu avant de répondre.

Il y a une certaine similitude dans le code que nous proposons, mais
je n'ai pas copié, promis-juré ;-)))))





--
Cordialement,

Michel Gaboly
http://www.gaboly.com


Avatar
Nicolas B.
Aurais-tu parfois certaines faiblesses, que certains, avec beaucoup
de mauvaise foi, bien sûr ;-)) osent imputer à jps ?


Ca serait un peu tôt pour les faiblesses : je n'ai pas encore profité de
la tournée générale que jps vient d'offrir à l'instant ;-)))


A+
Nicolas B.


Michel Gaboly wrote:
Re,

Aurais-tu parfois certaines faiblesses, que certains, avec beaucoup
de mauvaise foi, bien sûr ;-)) osent imputer à jps ?




Salut Michel,

Désolé pour mon post qui fait en partie double emploi avec le tien,
que je n'avais pas vu avant de répondre.


Pas grave : moi, entre le moment où j'ai lu la question et le moment où
j'ai ouvert Excel pour tester une solution, j'ai oublié qu'il y avait
deux ListBox :-)

A+
Nicolas B.

Michel Gaboly wrote:

Bonjour Nicolas,

Désolé pour mon post qui fait en partie double emploi avec le tien,
que je n'avais pas vu avant de répondre.

Il y a une certaine similitude dans le code que nous proposons, mais
je n'ai pas copié, promis-juré ;-)))))






--
Cordialement,

Michel Gaboly
http://www.gaboly.com






Avatar
Michel Gaboly
Re,

Tu confirmes lesdites faiblesses ;-)))
jps n'a offert aucune tournée, mais proposé que gretabitis en offre
une :

"tournée générale sur le compte de gretabitis"



Aurais-tu parfois certaines faiblesses, que certains, avec beaucoup
de mauvaise foi, bien sûr ;-)) osent imputer à jps ?


Ca serait un peu tôt pour les faiblesses : je n'ai pas encore profité de
la tournée générale que jps vient d'offrir à l'instant ;-)))

A+
Nicolas B.

Michel Gaboly wrote:
Re,

Aurais-tu parfois certaines faiblesses, que certains, avec beaucoup
de mauvaise foi, bien sûr ;-)) osent imputer à jps ?




Salut Michel,

Désolé pour mon post qui fait en partie double emploi avec le tien,
que je n'avais pas vu avant de répondre.


Pas grave : moi, entre le moment où j'ai lu la question et le moment où
j'ai ouvert Excel pour tester une solution, j'ai oublié qu'il y avait
deux ListBox :-)

A+
Nicolas B.

Michel Gaboly wrote:

Bonjour Nicolas,

Désolé pour mon post qui fait en partie double emploi avec le tien,
que je n'avais pas vu avant de répondre.

Il y a une certaine similitude dans le code que nous proposons, mais
je n'ai pas copié, promis-juré ;-)))))






--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com




Avatar
Nicolas B.
...Hips :*)


A+
Nicolas B.


Michel Gaboly wrote:
Re,

Tu confirmes lesdites faiblesses ;-)))
jps n'a offert aucune tournée, mais proposé que gretabitis en offre
une :

"tournée générale sur le compte de gretabitis"




Aurais-tu parfois certaines faiblesses, que certains, avec beaucoup
de mauvaise foi, bien sûr ;-)) osent imputer à jps ?


Ca serait un peu tôt pour les faiblesses : je n'ai pas encore profité de
la tournée générale que jps vient d'offrir à l'instant ;-)))

A+
Nicolas B.

Michel Gaboly wrote:

Re,

Aurais-tu parfois certaines faiblesses, que certains, avec beaucoup
de mauvaise foi, bien sûr ;-)) osent imputer à jps ?





Salut Michel,


Désolé pour mon post qui fait en partie double emploi avec le tien,
que je n'avais pas vu avant de répondre.


Pas grave : moi, entre le moment où j'ai lu la question et le moment où
j'ai ouvert Excel pour tester une solution, j'ai oublié qu'il y avait
deux ListBox :-)









Avatar
sebmen1
salut michel et nicolas

en reponse a ta question michel, la source de ma listbox1 est
constitué de n nom et prénom mais je ne veux pas tous les
selectionner. donc je passe par une seconde listbox pour recuperer les
noms dont j'ai besoin via un bouton ajouter (listbox.additem). ensuite
je dois inserer tous les noms selectionnés de la listbox2 dans une
feuille MODELE. comme je le disais la plage de reception est fixe par
contre le nombre de noms selectionnés en listbox2 peut varier.

j'ai essayé pas mal de choses piocher à droite à gauche mais le
contenu de ma listbox2 va n'importe où sur ma feuille MODELE.

je suis decu depuis le debut de l'après midi et là il est minuit et
j'ai les yeux qui se croisent donc je poste ce message pour les
explications et j'essaierais vos solutions demain matin frais et
dispo.

encore merci

Bonne nuit

Seb


Michel Gaboly wrote in message news:...
Bonjour,

Par curiosité, 2 questions :

Pourquoi éprouves-tu le besoin de passer par une seconde ListBox ?

Comment fais-tu pour alimenter cette seconde ListBox ?

Indique ton code ; j'ai peut-être + simple à te proposer.

Cependant, il est probable que tu peux faire l'économie de la seconde
ListBox : avec la propriété MultiSelec, tu peux sélectionner à la fois
autant d'éléments que tu veux dans la première ListBox. Pour cela,
dans la fenêtre Propriétés, en face de MultiSelect, choisis l'option
1 - fmMultiSelectMulti dans le menu déroulant

Ensuite, pour les transférer vers la plage D12:D35


Cas 1 - Une seule ListBox avec MultiSelect activé.
Les noms suivants sont utilisés :
LNoms, pour la ListBox
Réception, pour la cellule D12
PlageRéception pour la plage D12:D35
BOK pour le CommandButton sur le UserForm permettant de reporter
les données

NB - Les noms "Réception" et "PlageRéception" évitent les mauvaises
surprises si la feuille de calcul est modifiée (suppression et/ou inser-
tion de ligne(s) et/ou de colonne(s)). D'autre part, ils permettent au
traitement de bien fonctionner même si une autre feuille du classeur
est la feuille active.


Private Sub UserForm_Initialize()
' Alimentation de LNoms
Range("PlageRéception").ClearContents
End Sub

Private Sub BOK_Click()
Dim i As Integer, j As Integer
For i = 0 To LNoms.ListCount - 1
If LNoms.Selected(i) Then
Range("Réception").Offset(j) = LNoms.List(i)
j = j + 1
End If
Next i
Unload Me
End Sub

NB - Dans un ListBox sans multisélection, la propriété Value, renvoie
l'élément sélectionné. Si une multisélection est poddible, il faut alors
tester chaque item de la liste, ce qui se fait avec Selected(i)



Cas 2 - Une seconde ListBox, dont tous les éléments sont à récupérer
Les mêmes noms sont utilisés. La variable j n'est + nécessaire.

Private Sub UserForm_Initialize()
' Alimentation de LNoms
Range("PlageRéception").ClearContents
End Sub

Private Sub BOK_Click()
Dim i As Integer
For i = 0 To LNoms.ListCount - 1
Range("Réception").Offset(i) = LNoms.List(i)
Next i
Unload Me
End Sub