Risolto Foreach - Presa dati da tabella con codice univoco id e codice cliente

andreasuriani

Utente abituale
Original poster
30 Marzo 2020
196
4
18
Excel 2016
Ciao a tutti,
chiedo già scusa in anticipo se il tema è stato trattato ma il ciclo foreach ancora non mi entra in testa!

Ho una tabella con due id, uno per identificare l'id del contenuto della tabella e uno per identificare il cliente.
Devo popolare una ListBox ma solo prendendo gli id che fanno riferimento a quel codice cliente.
Il codice sotto carica correttamente i dati dalla tabella ma, chiaramente, li carica tutti.
Ho bisogno di filtrarli.


Visual Basic:
'Carica Dati Controlli
Dim ultima_riga_controlli As Integer
Dim i2 As Integer
Dim Link As String
Sheets("db_c&a").Activate
ultima_riga_controlli = Cells(Rows.Count, "A").End(xlUp).Row
'lstArchivioClienti.RowSource = "A2:F" & ultima_riga_clienti
For i2 = 3 To ultima_riga_controlli
ListBoxDbControlli.AddItem
        ListBoxDbControlli.List(ListBoxDbControlli.ListCount - 1, 0) = Cells(i2, 1)
        ListBoxDbControlli.List(ListBoxDbControlli.ListCount - 1, 1) = Cells(i2, 4)
        ListBoxDbControlli.List(ListBoxDbControlli.ListCount - 1, 2) = Cells(i2, 10)
        ListBoxDbControlli.List(ListBoxDbControlli.ListCount - 1, 3) = Cells(i2, 28)
Next i2

Poniamo l'esempio che il codice id del cliente sia 34.
Come faccio a filtrare solo per questo codice?

Rinnovo le scuse ma questa sintassi ancora mi sfugge!!!

Ps: non posso allegare il file perché contiene dati sensibili.

Grazie,
A
 

dodo47

Utente assiduo
Expert
18 Ottobre 2020
3.694
781
245
excel 2016
ciao
- non vedo il for each.....il tuo è un ciclo for...next
- puoi sempre fare un esempio senza dati sensibili

per il tuo problema dovresti dire dove prendere il cod. ID da caricare nelle lBox.
Di cosa parliamo? ListBox in UserForm oppure in un foglio?

Supponendo che ci sia una combo da qualche parte dove scegliere l'id che alimenta la Lbox
dopo il for i2=....
inserisci un If di controllo:
If cella_che _contiene_gli_id = combo_con_id_da_caricare then
ListBoxDbControlli.AddItem
etc etc

saluti
 

andreasuriani

Utente abituale
Original poster
30 Marzo 2020
196
4
18
Excel 2016
...

Ciao Dodo,
hai ragione, con un file è sempre meglio.

Ho cercato di modificarlo al meglio.
L'Id cliente, per il momento lo seleziono manualmente da VBA (poi lo integro sull'altro codice)
Io credo (e sottolineo!) credo di dover utilizzare il foreach per questo scopo.. ma magari mi sbaglio.
Ho allegato il file, spero sia comprensibile!
 

Allegati

  • ListBox con filtro IdCliente.xlsm
    26,4 KB · Visite: 5

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
56.757
5.158
2.445
69
Napoli
Office 365
Ma come diceva giustamente dodo47 @dodo47 non basta una cosa del genere?

Visual Basic:
Private Sub UserForm_Initialize()

'Carica Dati Controlli



Dim IdCliente As String
Dim ultima_riga_controlli As Integer
Dim i2 As Integer
Dim Link As String
IdCliente = 10
Sheets("db_c&a").Activate
ultima_riga_controlli = Cells(Rows.Count, "B").End(xlUp).Row
'lstArchivioClienti.RowSource = "A2:F" & ultima_riga_clienti
For i2 = 3 To ultima_riga_controlli
    If Range("B" & i2).Value = IdCliente Then
    ListBoxDbControlli.AddItem
            ListBoxDbControlli.List(ListBoxDbControlli.ListCount - 1, 0) = Cells(i2, 1)
            ListBoxDbControlli.List(ListBoxDbControlli.ListCount - 1, 1) = Cells(i2, 2)
            ListBoxDbControlli.List(ListBoxDbControlli.ListCount - 1, 2) = Cells(i2, 3)
            ListBoxDbControlli.List(ListBoxDbControlli.ListCount - 1, 3) = Cells(i2, 4)
    End If
Next i2
End Sub
 

andreasuriani

Utente abituale
Original poster
30 Marzo 2020
196
4
18
Excel 2016
...
Eh niente ragazzi... alla veneranda età di 39 anni direi che il rincoglionimento aumenta sempre di più!
Mi stavo complicando la vita per niente!!!

Grazie mille a tutti!
 

andreasuriani

Utente abituale
Original poster
30 Marzo 2020
196
4
18
Excel 2016
alfrimpa @alfrimpa , ho solo un piccolo problema (Che scopro ora..)

Visual Basic:
ListBoxDbControlli.List(ListBoxDbControlli.ListCount - 1, 2) = Cells(i2, 3)

Questo valore è un formato data nella tabella Excel da dove leggo il dato. Nella tabella il formato è corretto, ovvero, "dd/mm/yyyy", brevemente come esempio: 01/12/2022 mentre nella ListBox mi appare come 12/01/2022.

Come posso ovviare?

Grazie mille in anticipo.

A.