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

Concatenation de cellule

6 réponses
Avatar
sebmen1
salut a tous

je voudrais savoir s'il y a une possibilité pour recuperer la
concatenation de 2 cellules dans une listbox.

je m'explique : j'ai une cellule A1 contenant "NOM" et une cellule B1
contenant "PRENOM".

je voudrais recuperer dans une listbox de mon userform le résultat de
la concatenation de ces 2 cellules ("NOM PRENOM") en evitant de jouer
avec des copier/coller vers d'autres cellules de la feuille.

est ce possible avec VBA ?

merci pour votre aide car là ca fait 2 jours que je m'arrache les
cheveux.

Seb

6 réponses

Avatar
Michel Gaboly
Bonjour,

Je dois avouer que je ne comprend pas très bien : s'il s'agit
juste de 2 cellules, pourquoi une ListBox ?

A moins que tu veuilles reporter NOM PRENOM dans un Label situé
au-dessus d'un ListBox, et que celui-ci doivent contenir des noms
(en A2 et suivantes) et des prénoms en (En B2 et suivantes)

Dans ce cas, avec un Label nommé LabNoms, dans le UserForm_
Initialize :

LabNom.Caption = Range("A1") & " " & Range("B1)

ou

LabNom = Range("A1") & " " & Range("B1)

car Caption est la propriété par défaut de l'objet Caption.


Pour remplir un ListBox avec le contenu de la plage A2:A50
(noms en colonne A et prénoms en colonne B, 2 options sont
possibles :

- 1 ListBox avec une seule colonne, et une concaténation est alors
nécessaire :

Voici le code associé à l'événement Initialize :

Private Sub UserForm_Initialize()
Dim c As Range
LabNoms = Range("A1") & " " & Range("B1")
For Each c In Range("A2:A50")
ListBox1.AddItem c & " " & c.Offset(0, 1)
Next c
End Sub


- 1 ListBox avec 2 colonnes (dans la fenêtre "Propriétés", tu entres
2 en face de ColumnCount). Pour avoir la place d'entrer des noms et
des prénoms un peu longs, prévoie des colonnes larges, par exemple
(toujours dans la fenêtre "Propriétés"), entre en face de Width 304,
et en face de ColumnWidths 150pt;150pt

NB - La largeur du ListBox (304 ici) doit toujours être légèrement
supérieure au total des largeurs des colonnes (150 + 150 ici) pour
éviter l'apparition d'un ascenseur horizontal dans le ListBox.

Voici alors le code associé à l'événement Initialize :

Private Sub UserForm_Initialize()
LabNoms = Range("A1") & " " & Range("B1")
ListBox1.List = Range("A2:B50").Value
End Sub

Il existe une propriété "RowSource", pour indiquer la plage devant
alimenter le ListBox, mais je ne l'utilise JAMAIS, car elle n'existe
que dans les versions Windows, et provoque un plantage si le traite-
ment est lancé sur 1 Mac.

C'est ce qui explique l'instruction

ListBox1.List = Range("A2:B50").Value

qui fonctionne sur les 2 plate-formes.


La seconde option, 2 colonnes dans le ListBox est beaucoup + rapide
à l'exécution car le remplissage se fait en une seule fois au lieu de
nécessiter une boucle.


N'hésite pas à demander un complément d'infos si nécessaire



salut a tous

je voudrais savoir s'il y a une possibilité pour recuperer la
concatenation de 2 cellules dans une listbox.

je m'explique : j'ai une cellule A1 contenant "NOM" et une cellule B1
contenant "PRENOM".

je voudrais recuperer dans une listbox de mon userform le résultat de
la concatenation de ces 2 cellules ("NOM PRENOM") en evitant de jouer
avec des copier/coller vers d'autres cellules de la feuille.

est ce possible avec VBA ?

merci pour votre aide car là ca fait 2 jours que je m'arrache les
cheveux.

Seb


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
Nicolas B.
Salut seb,

Quelque chose comme ça ?
listbox1.additem [A1] & " " & "[B1]

Ou alors, j'ai pas compris le problème...


A+
Nicolas B.


seb wrote:
salut a tous

je voudrais savoir s'il y a une possibilité pour recuperer la
concatenation de 2 cellules dans une listbox.

je m'explique : j'ai une cellule A1 contenant "NOM" et une cellule B1
contenant "PRENOM".

je voudrais recuperer dans une listbox de mon userform le résultat de
la concatenation de ces 2 cellules ("NOM PRENOM") en evitant de jouer
avec des copier/coller vers d'autres cellules de la feuille.

est ce possible avec VBA ?

merci pour votre aide car là ca fait 2 jours que je m'arrache les
cheveux.

Seb


Avatar
AV
je voudrais savoir s'il y a une possibilité pour recuperer la
concatenation de 2 cellules dans une listbox.
je m'explique : j'ai une cellule A1 contenant "NOM" et une cellule B1
contenant "PRENOM".


En supposant que tu parles (à adapter) d'un champ avec les Noms (A1:Ax) et un
autre avec les Prénoms (B2:Bx)
Pour récupérer Noms/Prénoms dans ta ListBox :
Dans les propriétés :
ColumnCount : 2
ListFillRange : Feuil1!A1:B50 (à adapter)

AV

Avatar
AV
Achhhh.....

......avec les Noms (A1:Ax) et un autre avec les Prénoms (B2:Bx)


Evidemment A1:Ax et B1:Bx !

AV

Avatar
sebmen1
salut a vous

je vais essayer d'éclairer un peu les propos de mon premier message.

en fait j'ai une feuille avec une colonne A contenant les noms et une
colonne B contenant les prenoms.

je veux recuperer l'association des 2 dans une premiere listbox1 et à
l'aide de 2 boutons ajouter/supprimer les envoyer dans une 2nd
listbox2.

cette manip me permet de ne pas avoir besoin de faire un traitement
dans une feuille annexe (copier/coller puis concatenation et enfin
recup dans listbox1)

en tout cas je vais essayer vos solutions et enfin si je peux me
permettre (etant débutant complet), il faudrait que je recupère cette
concatenation sur l'evenement click d'un optionbouton mais la plage
varie selon les saisies.

là je seche vraiment.

merci beaucoup pour votre rapidité, je vais pouvoir faire des tests
cet après midi.

Seb
Avatar
sebmen1
Re

Désolé je me suis enflammer et j'aurais du essayer vos propositions
avant car Michel c'est exactement ce que je voulais faire.

c'est génial je vais pouvoir boucler mon projet. j'ai plus qu'à
trouver le moyen de borner ma selection aux cellules non vides.

merci à vous deux, c'est la 1ère fois que je poste un message et là
c'est vraiment BINGO.

MERCI, MERCI

Seb