Alimentation de combobox ou listbox, VBA ou Formulaires avec des données en ligne ?

Charly88

XLDnaute Occasionnel
Bonjour à tous, je voulais faire un truc qui me semblait tout bête mais je me prends les pieds dans le tapis comme un bon bleu... que je suis.

Je souhaite alimenter une combo ou une listbox (indifférent à ce niveau) avec des données en ligne comme le montre le fichier joint.
Au tout départ, j'ai pensé utiliser simplement une combo de formulaire et la cellule liée (cellule liée qui est aussi dispo aussi en format VB).
Mais impossible de faire comprendre à cette buse qu'elle doit faire un transpose, avec un = ou sans, pige pas et je ne sais quoi lui raconter d'autre.

Devant cet échec cuisant, j'ai ressorti les contrôles VBA... et là, tout habitué à les alimenter en code, je me suis aperçu que je ne savais pas comment instruire une simple source de données directement en passant par les propriétés du contrôle.


Recherches sur le forum, une marée de messages mais pas pu trouver ma solution. Si une bonne âme pouvait nous faire un topo rapide, ce serait très sympa. Merci d'avance !
 

Pièces jointes

  • afficher données en ligne.xls
    25 KB · Affichages: 506
  • afficher données en ligne.xls
    25 KB · Affichages: 493
  • afficher données en ligne.xls
    25 KB · Affichages: 512

pierrejean

XLDnaute Barbatruc
Re : Alimentation de combobox ou listbox, VBA ou Formulaires avec des données en lign

bonjour Charly

Pour le vBa

Code:
Private Sub Worksheet_Activate()
ComboBox1.Clear
For n = 4 To 8
  ComboBox1.AddItem Cells(8, n)
  ListBox1.AddItem Cells(8, n)
Next n
End Sub
 

Pièces jointes

  • afficher données en ligne.zip
    9.3 KB · Affichages: 419
  • afficher données en ligne.zip
    9.3 KB · Affichages: 453
  • afficher données en ligne.zip
    9.3 KB · Affichages: 453

Charly88

XLDnaute Occasionnel
Re : Alimentation de combobox ou listbox, VBA ou Formulaires avec des données en lign

Merci PierreJean mais, même pour le VBA, j'aimerais savoir comment (si c'est possible) alimenter les boxes sans ligne de code. C'est un peu tordu mais c'est un peu pour le principe de savoir si c'est possible et comment.
 

Dull

XLDnaute Barbatruc
Re : Alimentation de combobox ou listbox, VBA ou Formulaires avec des données en lign

Salut Charly, pierrejean :), le Forum

Autre solution (IdemPourleVBA):D

Nommer ta Plage Ex Liste
Code:
=DECALER(Feuil1!$D$8;;;;NBVAL(Feuil1!$D$8:$H$8))
à l'activation de la feuille

Code:
Private Sub Worksheet_Activate()
ComboBox1.List = Application.Transpose(Range("Liste").Value)
ListBox1.List = Application.Transpose(Range("Liste").Value)
End Sub
Par contre enlève les données dans la Proproété "ListFillRange" de tes ComboBox et ListBox

Bonne Journée
 

Pièces jointes

  • afficher données en ligne.xls
    30 KB · Affichages: 509
  • afficher données en ligne.xls
    30 KB · Affichages: 499
  • afficher données en ligne.xls
    30 KB · Affichages: 474
Dernière édition:

Charly88

XLDnaute Occasionnel
Re : Alimentation de combobox ou listbox, VBA ou Formulaires avec des données en lign

Et là je dis non ! :)

Merci à tous pour vos contributions mais pour l'instant, elle ne me sauvent pas.
La seule bonne nouvelle c'est qu'alimenter un contrôle formulaire avec des données en ligne n'était pas aussi simple que je l'aurais cru. Et malheureusement.

Malheureusement parce que la propriété LinkedCell des combo et listbox VBA n'est pas égale à celle des formulaires. Les cellules liées de contrôles formulaires renvoient bêtement l'index du contrôle, celle de contrôles VBA renvoient, tout aussi bêtement, la valeur de la ligne saisie en contrôle.

Or ma manip consiste à sélectionner un élément dans une combo ou list dont l'index est utilisé par une formule Décaler. Or pour le moment, c'est patatra.

Et rajouter un simplet :
ComboBox1.LinkedCell = ComboBox1.Index
ListBox1.LinkedCell = ListBox1.ListIndex

N'a eu d'autre effet que de statufier les cellules liées respectives... sans déclencher de bug.

Une inspiration ?
 

pierrejean

XLDnaute Barbatruc
Re : Alimentation de combobox ou listbox, VBA ou Formulaires avec des données en lign

Re

Une solution triviale qui ne demande que quelques cellules dans une colonne
Voir fichier (colonne M)
 

Pièces jointes

  • afficher données en ligne.zip
    10.2 KB · Affichages: 368
  • afficher données en ligne.zip
    10.2 KB · Affichages: 410
  • afficher données en ligne.zip
    10.2 KB · Affichages: 406

Charly88

XLDnaute Occasionnel
Re : Alimentation de combobox ou listbox, VBA ou Formulaires avec des données en lign

Merci PierreJean, j'y avais déjà pensé et j'aurais voulu éviter.

En fouinant, j'ai trouvé une solution qui remplace cette présumée handicapée de Linkedcell :

https://www.excel-downloads.com/threads/lier-une-cellule-a-une-liste-combobox.114118/

C'est tout bête :

Code:
Private Sub ComboBox1_Change()
Range("A10") = ComboBox1.ListIndex + 1
End Sub
 

skoobi

XLDnaute Barbatruc
Re : Alimentation de combobox ou listbox, VBA ou Formulaires avec des données en lign

Bonjour Charly, le forum,

je suis pas sûr d'avoir bien compris mais si tu veux éviter d'écrire sur la feuille tu peux écrire l'index du combobox dans ça propriété Tag:
Code:
Private Sub ComboBox1_Change()
ComboBox1.Tag = ComboBox1.ListIndex + 1
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 185
dernier inscrit
Laurent.