Risolto inserimento immagine dinamica

robybayy

Utente junior
19 Dicembre 2018
86
8
64
Bergamo
office 2010
0
ciao a tutti
sto cercando di mettere a punto un programma che mi apre sul foglio un'immagine relativa al colore scelto nella lista a discesa nella cella A7.
il riferimento del colore lo metto nella cella A2 con una formula di riferimento.
purtroppo non riesco a farlo funzionare in modo automatico, nel senso che per fargli cambiare colore devo fare doppio click nella cella A2 e poi premendo invio cambia colore.
l'immagine la visualizza partendo dalla cella C2, vorrei che partissa da una cella diversa ma non so come fare.
ho impostato questa macro

Codice:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim s As String
    s = ThisWorkbook.Path & "\"
    With Target
        If .Address = "$A$2" Then
            If .Value <> "" Then
                Me.Image1.Picture = _
                    LoadPicture(s & .Value & ".jpg")
                Me.Image1.AutoSize = True
            End If
        End If
    End With
End Sub
Allego esempio cartella compressa
grazie
 

Allegati

alfrimpa

VBA Expert
Supermoderatore
Expert
18 Dicembre 2015
18.646
113
66
Napoli
2013
332
Devi semplicemente andare nella scheda Sviluppo menù Inserisci e tra i controlli ActiveX clicca su Immagine e trascina sul foglio.

Supponendo che le immagini siano nella stessa directory del file e siano denominate come in convalida tutto dovrebbe funzionare.
 
Ultima modifica:

robybayy

Utente junior
19 Dicembre 2018
86
8
64
Bergamo
office 2010
0
Ciao alfrimpa, ho tentato in tutti i modi con ActiveX ma non ci riesco, a questo punto ricomincio da capo con un sistema diverso.
Nel file di esempio il Foglio 1 funziona perfettamente e le immagini vengono richiamate dalla cella B21.
Nel Foglio 2 dove le immagini le richiamo nella cella B24 con una formula di riferimento alla cella B21 non ci riesco.
Dove sbaglio? cosa tralascio di fare?
 

Allegati

robybayy

Utente junior
19 Dicembre 2018
86
8
64
Bergamo
office 2010
0
Ciao alfrimpa, sono riuscito ad usare il controllo ActiveX ma nel mio foglio di lavoro devo inserire parecchie foto e il file diventerebbe troppo pesante a meno che possa usare i riferimenti alle foto che inserisco nella cartella ci lavoro ( e non so se è possibile ).
In alternativa sto provando a perfezionare questo esempio che allego ed è simile al file che ho postato in precedenza dove il Foglio 1 funziona perfettamente e le immagini vengono richiamate dalla cella B21.
Nel Foglio 2 le immagini le richiamo nella cella B21 con una formula di riferimento alla cella B24.
purtroppo non funziona perché anche se si legge il nome dell'immagine la cella contiene una formula..
Dove sbaglio? cosa tralascio di fare?
Grazie
 

Allegati

alfrimpa

VBA Expert
Supermoderatore
Expert
18 Dicembre 2015
18.646
113
66
Napoli
2013
332
Con il metodo LoadPicture non è necessario che le foto siano nel file basta che siano sull’hard disk.

Se il file non deve essere dato a terzi è un fatto molto semplice da risolvere.
 

robybayy

Utente junior
19 Dicembre 2018
86
8
64
Bergamo
office 2010
0
ho provato ad usare il metodo LoadPicture ma non risolve il mio problema oppure non sono capace io,
ti faccio un esempio,
io ho una lista di più di 1000 indirizzi ai quali ho abbinato circa 30 foto ( circa 30 indirizzi con una stessa foto )
in una cella con finestra a discesa mi compaiono gli indirizzi,
in un'altra cella mi compare il nome della foto abbinata a quell'indirizzo usando la formula
Codice:
=SE.ERRORE(INDICE(SCARTO($AB$21;;;CONTA.VALORI($AB$21:$AB$1026)-1;1);CONFRONTA($B$24;SCARTO($AA$21;;;CONTA.VALORI($AA$21:$AA$1026)-1;1);0);1);"")
nel mio esempio che ho allegato precedentemente "WebColor" nel Foglio2 non riesco a far caricare l'immagine col nome nella cella con la formula. ( se laccio doppio click sulla cella con la formula e premo invio però la carica.
Invece nel Foglio 1 funziona tutto alla perfezione.
dove sbaglio?
 

Rubik72

Excel/VBA Expert
Supermoderatore
Expert
12 Dicembre 2015
5.536
83
47
Cosenza
Excel 2016
181
un saluto a tutti.

[...]
nel mio esempio che ho allegato precedentemente "WebColor" nel Foglio2 non riesco a far caricare l'immagine col nome nella cella con la formula. ( se laccio doppio click sulla cella con la formula e premo invio però la carica.
Invece nel Foglio 1 funziona tutto alla perfezione.
dove sbaglio?
Non funziona in quanto stai modificando la cella B24 e non B21 (che contiene la formula). Modifica la routine con il collegamento tra intersezione e cella B24.
Inoltre senza dover avviare un ciclo che identifichi la Forma che contiene l'immagine, potresti attribuire un nome identificativo alla Forma per poterla richiamare successivamente.
Adatta questa routine:
Visual Basic:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim nwPic As Object
    Dim Rng As Range
    
    If Target.Cells.Count > 1 Then Exit Sub
    If Target = "" Then Exit Sub
    
    Set Rng = Me.Range("B21") 'range da modificare

    If Not Intersect(Target, Rng) Is Nothing Then 'verifica se il range e' stato modificato
    
        Shapes("myPicture").Delete 'cancella la Forma
        
        Set nwPic = Target.Parent.Pictures.insert(ThisWorkbook.Path & "\" & Target.Value & ".jpg") 'inserisce una n uova forma in una variabile
        
        With nwPic
            .Name = "myPicture" 'rinomina l'immagine
            .Top = Target.Offset(2, 2).Top 'posiziona l'immagine
            .Left = Target.Offset(2, 2).Left 'posiziona l'immagine
        End With
    End If
    
    Target.Select
    
    Set Rng = Nothing
    Set nwPic = Nothing
    
End Sub
N.B. va da se che la prima volta dovrai rinominare l'immagine manualmente.
 

robybayy

Utente junior
19 Dicembre 2018
86
8
64
Bergamo
office 2010
0
Ciao Rubik72 e grazie per l'intervento, sto provando il tuo suggerimento ma non capisco cosa intendi per rinominare l'immagine manualmente la prima volta.

allego il file che ho modificato
 

Allegati

robybayy

Utente junior
19 Dicembre 2018
86
8
64
Bergamo
office 2010
0
Grazie a tutti per il supporto,
devo dire che il suggerimento di Ges per usare l' UserForm è eccezionale, non li avevo mai usati e sono molto utili soprattutto per la selezione della ricerca quando inizio l'inserimento dei caratteri del TextBox CERCA, avendo più di 1000 indirizzi mi fa un'ottima scrematura di quello che sto cercando.
ho scaricato il tuo file di esempio e lo sto adattando alle mie esigenze perché devo impostare un'altro TextBox di RICERCA e spero di essere in grado a creare la macro e collegare tutti i campi necessari.
Grazie di nuovo
Roberto
 

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!