Sono un ignorante becero alle primissime armi.
Ho due fogli, nel primo un elenco di prodotti, dove nella prima colonna ho il nome del prodotto e nel secondo il nome del fornitore. Più altre che per ora non interessano.
Nel secondo vorrei inserire le fatture.
Vorrei che, in questo secondo foglio ("fatture"), a seconda del fornitore che scelgo nella prima colonna, nella seconda ci sia il controllo di validazione che mi permetta di inserire i soli prodotti di quello specifico venditore.
Premetto che nel primo foglio le righe sono ordinate per venditore.
Ecco cosa ho beceramente partorito:

codice:
 
Private Sub Worksheet_Change(ByVal Target As Range)
 
   
    'SE CAMBIO LA COLONNA "FORNITORE" DEVO CAMBIARE NELLA CELLA A FIANCO I PRODOTTI DISPONIBILI
    If Target.Column() = 1 Then
   
    'CERCA IL PRIMO PRODOTTO PER QUEL FORNITORE
    Set trovaPrimo = Worksheets("listinototalone").Range("B:B").Find(Target)
    primoprod = trovaPrimo.Row()
   
    'CONTA I PRODOTTI PER QUEL FORNITORE
 
' prima è la cella dove è la prima occorrenza di quel fornitore
' quanti è il numero di occorrenza nella colonna B per quel fornitore
 
   
    quantiProd = Application.WorksheetFunction.CountIf(Workbooks(1).Sheets(1).Range("B:B"), Target)
                    
    ultimoprod = primoprod + quantiProd
                
 
    Worksheets("listinototalone").Activate
    ActiveWorkbook.Names.Add Name:="listdata", RefersTo:=Range(Cells(primoprod, 1), Cells(ultimoprod, 1))
    Worksheets("fatture").Activate
   
 
 
With Range("B" & Target.Row()).Validation 'definizione delle celle per la convalida
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=listdata"
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
           
End If
 
 
End Sub
Purtroppo vedo che la "listdata" punta sempre alle celle del secondo foglio ("fatture") e non al primo ("listinototalone").
Grazie a chi mi saprà aiutare e ne avrà la pazienza.

:help: