Sélection ligne Listbox et exploitation de celles-ci

cheyenne63

XLDnaute Occasionnel
Bonjour
Pas simple pour moi les USF et les listbox
Le fichier joint est super simplifié, et le VBA restant le strict nécessaire pour que l'exemple fonctionne.
Dans l'exemple, une fois l'USF ouvert, je choisi (ou indique) un n° de mobilier dans textbox jaune. Par exemple j'indique 825
La listebox me renvoie dans ce cas 2 lignes, ça ça a l'air bon.
1. Je voudrai qu'en sélectionnant une ligne de la listbox, les infos correspondant à cet enregistrement soient indiquées dans les textbox bleus ciels. Là j'ai tout faux
2. J'ai essayé avec une listview, j'arrive même pas à paramétrer comme il faut "cette chose" (qui m'a l'air si bien pourtant …). Vous pouvez me montrer svp ?
3. Ensuite je souhaiterai pouvoir exporter les colonnes A, B, C, F, G, X, AA des "lignes-réponses" de la listbox en feuille Export en A2
4. Enfin, en double cliquant sur une ligne de la listbox, ça m'ouvre l'autre USF pour consultation de toutes les infos de la ligne concernée
Merci d'avance, suis dessus depuis hier matin :mad:
 

Pièces jointes

  • ListBoxCheyenne.zip
    206 KB · Affichages: 45

Robert

XLDnaute Barbatruc
Repose en paix
Re : Sélection ligne Listbox et exploitation de celles-ci

Bonjour Cheyenne, Chalet, bonjour le forum,

Je ne me suis attaqué qu'à ton premier problème...
D'abord je ne comprends pas l'alimentation de la combobox ChoixSR. Tu commences par l'alimenter à l'aide d'un dictionnaire alors que, si je ne dit pas des conn..ries (ce qui est rare j'en conviens), il n'y a pas de doublons, puis la ligne en dessous tu annihiles tout ça avec l'alimentant via la propriété RowSource ? Du code pour rien pour au final opter pour la pire, à mon sens, des solutions ?

Ensuite tu utilises, pour alimenter les 3 textboxes le numéro d'index ListIndex de la ListBox1 qui n'a plus rien à voir avec le numéro d'index de la combobox ChoixSR. C'est pour cela que ça ne concorde pratiquement jamais.

Pour pallier ce problème j'ai rajouté une 6 colonne à la ListBox1 que j'ai masquée (voir les propriété ColumnCount et ColumnWidths) dans laquelle je stocke le numéro de ligne de la donnée correspondante. Ensuite j'utilise ce numéro de ligne pour récupérer les données dans les 3 textboxes :

Le code :

Code:
Private fBD As Object


Private Sub UserForm_Initialize()
Set fBD = Sheets("INTERVENTIONS")
ChoixSR.List = Range("Bd_Numéro").Value
End Sub


Private Sub ChoixSR_Click()
Dim c As Range
Dim i As Integer

Me.ListBox1.Clear
Me.TextBox1.Value = ""
Me.TextBox5.Value = ""
Me.TextBox3.Value = ""
For Each c In fBD.Range("B2:B" & fBD.[B65000].End(xlUp).Row)
    If CStr(c.Value) = Me.ChoixSR.Value Then
        Me.ListBox1.AddItem c.Value
        Me.ListBox1.List(i, 0) = c.Offset(, -1).Value
        Me.ListBox1.List(i, 1) = c.Offset(, 4).Value
        Me.ListBox1.List(i, 2) = c.Offset(, 5).Value
        Me.ListBox1.List(i, 3) = c.Offset(, 10).Value
        Me.ListBox1.List(i, 4) = c.Offset(, 29).Value
        Me.ListBox1.List(i, 5) = c.Row
        i = i + 1
    End If
Next c
End Sub


Private Sub ListBox1_Change()
Dim LI As Integer

If Me.ListBox1.ListIndex <> -1 Then
    LI = Me.ListBox1.Column(5, Me.ListBox1.ListIndex)
    Me.TextBox1 = fBD.Range("I" & LI)
    Me.TextBox3 = fBD.Range("W" & LI)
    Me.TextBox5 = fBD.Range("AD" & LI)
End If
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Sélection ligne Listbox et exploitation de celles-ci

Bonjour le fil, bonjour le forum,

Le code ci-dessous devrait répondre à tous tes problèmes :

Code:
Private fBD As Object
Private LI As Integer


Private Sub UserForm_Initialize()
Set fBD = Sheets("INTERVENTIONS")
ChoixSR.List = Range("Bd_Numéro").Value
End Sub


Private Sub ChoixSR_Click()
Dim c As Range
Dim i As Integer

Me.ListBox1.Clear
Me.TextBox1.Value = ""
Me.TextBox5.Value = ""
Me.TextBox3.Value = ""
For Each c In fBD.Range("B2:B" & fBD.[B65000].End(xlUp).Row)
    If CStr(c.Value) = Me.ChoixSR.Value Then
        Me.ListBox1.AddItem c.Value
        Me.ListBox1.List(i, 0) = c.Offset(, -1).Value
        Me.ListBox1.List(i, 1) = c.Offset(, 4).Value
        Me.ListBox1.List(i, 2) = c.Offset(, 5).Value
        Me.ListBox1.List(i, 3) = c.Offset(, 10).Value
        Me.ListBox1.List(i, 4) = c.Offset(, 29).Value
        Me.ListBox1.List(i, 5) = c.Row
        i = i + 1
    End If
Next c
End Sub


Private Sub ListBox1_Change()
If Me.ListBox1.ListIndex <> -1 Then
    LI = Me.ListBox1.Column(5, Me.ListBox1.ListIndex)
    Me.TextBox1 = fBD.Range("I" & LI)
    Me.TextBox3 = fBD.Range("W" & LI)
    Me.TextBox5 = fBD.Range("AD" & LI)
End If
End Sub


Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim E As objet
Dim DEST As Range

Set E = Sheets("Export")
LI = Me.ListBox1.Column(5, Me.ListBox1.ListIndex)
With USFConsultation
    .TextBox1.Value = fBD.Cells(LI, 1)
    'idem pour les autres textboxes
    'etc
    .Show
End With
Set DEST = E.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)
DEST.Value = fBD.Cells(LI, 1).Value
DEST.Offset(0, 1).Value = fBD.Cells(LI, 2).Value
DEST.Offset(0, 2).Value = fBD.Cells(LI, 3).Value
DEST.Offset(0, 3).Value = fBD.Cells(LI, 6).Value
DEST.Offset(0, 4).Value = fBD.Cells(LI, 7).Value
DEST.Offset(0, 5).Value = fBD.Cells(LI, 24).Value
DEST.Offset(0, 6).Value = fBD.Cells(LI, 27).Value
End Sub
 

cheyenne63

XLDnaute Occasionnel
Re : Sélection ligne Listbox et exploitation de celles-ci

C'est parfais, merci à tous les 2.
J'essaie d'adapter et je crois capter (pour l'instant).
Un souci par contre c'est au niveau de ce que j'appelle "l'export" : il s'agit en fait (pardon de m'être mal expliquée) de transférer l'ensemble des "lignes-réponses" présentes dans la listbox vers A2 (toujours) de la feuille 'Export via un bouton (il est vrai que je ne l'avais pas dessiné dans l'exemple) et non :
* seule la ligne sélectionnée
* à la suite des autres
* par un double click
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Sélection ligne Listbox et exploitation de celles-ci

Bonsoir le fil, bonsoir le forum,

En pièce jointe ton fichier avec les dernières modifications demandées et le code commenté.
 

Pièces jointes

  • Cheyenne._v02.zip
    204.6 KB · Affichages: 63

cheyenne63

XLDnaute Occasionnel
Re : Sélection ligne Listbox et exploitation de celles-ci

Bonjour
je reprends le fichier très légèrement modifié de Robert (encore merci)
Mon souci : je n'arrive pas à remplacer dans l'USF Consultation le Textbox1 par un combobox (avec liste de choix de la colonne A de la feuille INTERVENTIONS)
En effet l'idée est :
CE QUI FONCTIONNE BIEN :
1. Ouverture de l'USF Demande d'intervention
2. Choix dans le combo jaune
3. Avec résultats dans la listbox
4. Si simple clic dans la listbox, mise à jour des textbox en bleu
5. Si double clic sur une ligne de la listbox, ouverture de l'USF Consultation avec d'emblée dans le textbox1 le report de la ligne précédemment choisie
6 . Du coup mise à jour des textbox7 à 11 dans l'USF Consultation
CE QUE J'AIMERAI
1. Possibilité de remplacer le textbox1 de l'USF Consultation par un Combobox afin de :
2. Si double clic sur une ligne de la listbox de l'USF Demande d'intervention, ouverture de l'USF Consultation avec d'emblée dans le combobox dont je parle le report de la ligne précédemment choisie
3 . Du coup mise à jour des textbox7 à 11 dans l'USF Consultation
4. Possibilité de changement de choix dans le combobox avec bien sûr mise à jour des textbox7 à 11

Merci d'avance
 

Pièces jointes

  • Cheyenne._v02xls.xlsm
    268.9 KB · Affichages: 40

Discussions similaires

Statistiques des forums

Discussions
314 499
Messages
2 110 247
Membres
110 711
dernier inscrit
chmessi