VBA EXCEL - validazione di cella con valori da altro foglio

di Anonimizzato24259 il
2 risposte
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:

--------------------------
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:

2 Risposte

  • Crossposting su forumexcel.it
  • Mi pare di aver scritto prima questo e poi l'altro quindi nel momento in cui ho scritto qui non era presente in nessun altro forum.
    Comunque, se non va bene, lo cancello di là e mi scuso senz'altro sinceramente.

    Aggiornamento:
    E niente... Non riesco a cancellare l'altro messaggio.
    Pace. Vuol dire che userò carta e penna come gli antichi!
    Scusatemi per l'involontaria infrazione del regolamento.

    Buona giornata.
Devi accedere o registrarti per scrivere nel forum
2 risposte