Récupérer des doonées à partir d'une listbox pour les incorporer dans un textbox

Chrige

XLDnaute Occasionnel
Bonjour

J’ai réalisé un userform

A l’intérieur j’ai mis une listbox qui récupère les données de la 1ère colonne de la feuille Data
Je souhaiterais lorsque je clique sur une de ces données, faire apparaitre dans le textbox la donnée qui se trouve dans la 2ème colonne sur la même ligne.

Exemple je clique sur Acer dans la listbox, Micro-ordinateur doit apparaitre dans le textbox

Est-ce que quelqu’un peut me donner un petit coup de main
Merci
 

Pièces jointes

  • Exemple.xlsm
    16.2 KB · Affichages: 41
  • Exemple.xlsm
    16.2 KB · Affichages: 59
  • Exemple.xlsm
    16.2 KB · Affichages: 57

Robert

XLDnaute Barbatruc
Repose en paix
Re : Récupérer des doonées à partir d'une listbox pour les incorporer dans un textbox

Bonsoir Chrige, bonsoir le forum,

En pièce jointe ton fichier modifié avec alimentation dynamique de la ListBox1 :
Code:
Private Sub UserForm_Initialize()
Dim dl As Integer
Dim pl As Range

With Sheets("Data")
    dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row
    Set pl = .Range("A1:A" & dl)
End With
ListBox1.List = pl.Value
End Sub
Et ce code au clic dans la ListBox1 qui est correct uniquement si chaque donnée de la colonne A est unique (pas de doublons) :
Code:
Private Sub ListBox1_Click()
Me.TextBox1.Value = Sheets("Data").Cells(Me.ListBox1.ListIndex + 1, 2)
End Sub
Le fichier :
 

Pièces jointes

  • Chrige_v01.xls
    36.5 KB · Affichages: 86

Robert

XLDnaute Barbatruc
Repose en paix
Re : Récupérer des doonées à partir d'une listbox pour les incorporer dans un textbox

Bonjour Chrige, bonjour le forum,

Code:
Me.TextBox1.Value = Sheets("Data").Cells(Me.ListBox1.ListIndex + 1, 2)
Une listbox stocke les éléments en les indexant de 0 à (nombre d'élément - 1). Donc le premier élément de la ListBox aura sa propriété ListIndex = 0, le second => ListIndex = 1, etc. Comme on voulait récupérer une données sur une ligne et que dans ton exemple la première donnée se trouve dans la ligne 1, on a donc l'equivalence : ligne = ListIndex + 1. Ton tableau aurait commencé à la ligne 4 le code aurait été :
Code:
Me.TextBox1.Value = Sheets("Data").Cells(Me.ListBox1.ListIndex + 5, 2)

Pour l'autre ligne :
Range("A10") = Cells(10, 1) => cellule (ligne, Colonne) => 1 correspond à la première colonne donc la colonne A. Pour définir la dernière ligne éditée d'une colonne X on se positionne dans la dernière cellule de la colonne : Cells(Application.Rows.count, X) puis on remonte avec la combinaison de touches [End]+[Flèche vers le haut] qui en VBA s'écrit End(xlUp). On rajoute Row à la fin pour en extraire le numéro de ligne.
Ça donne, pour la dernière ligne dl de la première colonne (colonne A) :
Code:
dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row
Comme ça ta ListBox sera toujours à jour dès que tu rajoutes une donnée sans avoir à redimensionner ta plage nommée.
 

Chrige

XLDnaute Occasionnel
Re : Récupérer des doonées à partir d'une listbox pour les incorporer dans un textbox

Bonjour Robert

Je te remercie à nouveau

Ces explications très détaillées et très facilement compréhensives me permettront de progresser

Bonne journée
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 333
Membres
103 188
dernier inscrit
evebar