Ho un file excel
all'interno ho un foglio con un elenco di prodotti, prezzo e immagini
(meglio immagini sul foglio excel o in una cartella dove e' salvato anche il foglio excel?)
Ciao Lorenzo,
secondo me, soprattutto se ci sono molte immagini, è meglio memorizzare le immagini in file separati e caricarle a necessità. Il tuo foglio conterrà, perciò, queste colonne: codice prodotto, prezzo, nome file immagine (completo di path).
Su un altro foglio voglio che in base al valore scelto nella lista prodotti ( lista men ua tendina dove scelgo un prodotto) mi prende i dati del prezzo (usando cerca vert) ed inoltre mi deve prendere l'immagine
relativa al prodott ( magari imamgine salvata nel directory dove e' salvato il file excel)
Do per scontato che tu sappia creare la casella combinata per la ricerca del codice articolo, anche se dovrai poi fare una piccola modifica, e passo oltre.
Il codice articolo, il prezzo e il nome file immagine saranno restituiti, nel foglio ‘Ouput’ rispettivamente dalle seguenti formule:
A5=INDICE(Foglio1!A2:C5;A1;1)
B5=INDICE(Foglio1!A2:C5;A1;2)
C5=INDICE(Foglio1!A2:C5;A1;3)
Precisazioni:
- Foglio1!A2:C5 è l'intervallo di ricerca, inizio dalla riga 2 perché presumo che la riga 1 contenga l'intestazione delle colonne; (per una migliore lettura, potresti inserire un nome che faccia riferimento all’intervallo ‘ Foglio1!A2:C5’),
in tal caso la formula diventerebbe, ad esempio, A5=INDICE(Tabella_Articoli;A1;1);
- A1 è la cella associata alla casella combinata che indica la selezione.
Mi domando: le immagini relative ad ogni prodotto devono essere sul foglio excel o possono essere in una cartella con magari il nome del prodotto, in modo tale che quando seleziono il prodotto dalla lista automaticamente
mi carica l-immagine corrispondente.
Grazie Mille Lorenzo
Esempio: Lista nel foglio Prodotti dalla cella A1:C5
Foglio Output, scelgo prodotto dalla lista e cerca il valore prezzo ed immagini, e carica i dati corrispondenti....
… dulcis in fundo, il caricamento dell'immagine. Inserisci il seguente codice in un modulo generale.
Sub CaricaImmagine()
' inserisce un'immagine nel foglio attivo e la ridimensiona in base alle dimensioni di rTargetRange
Dim ws As Excel.Worksheet
Dim rDestination As Excel.Range
Dim dTop As Double, dLeft As Double, dWidth As Double, dHeight As Double
Dim sPictureFile As String
'---------- imposta in base alle tue esigenze
Set ws = ThisWorkbook.Worksheets("Output")
sPictureFile = ws.Range("A1").Value ' cella associata alla casella a discesa
Set rDestination = ws.Range("E5:I14") ' intervallo che contiene l'immagine
'---------- cancella tutte le pictures sul foglio output
ws.Pictures.Delete
If (Dir(sPictureFile) <> vbNullString) Then
'---------- calcola dimensione
With rDestination
dTop = .Top
dLeft = .Left
dWidth = .Offset(0, .Columns.Count).Left - .Left
dHeight = .Offset(.Rows.Count, 0).Top - .Top
End With
'---------- importa e posiziona immagine
With ws.Pictures.Insert(sPictureFile)
.Top = dTop
.Left = dLeft
.Width = dWidth
.Height = dHeight
End With
End If
End Sub
Infine, dovrai fare in modo che la macro sia eseguita automaticamente dopo ogni selezione, quindi: tasto destro sulla casella, assegna macro e seleziona la macro CaricaImmagine.
Prima di eseguire il codice, ricordati di MODIFICARE i riferimenti alle celle in base alle tue esigenze.
Ciao,
Andrea.