Condividi:        

Le immagini nelle celle si accavallano

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Le immagini nelle celle si accavallano

Postdi Brauli75 » 20/11/15 14:58

Buongiorno,

Ho un file di excel che utilizzo come aiuto per il magazzino della ditta per la quale lavoro.
Ho principalmente un foglio di lavoro che contiene dati su articoli che ho in giacenza.

Seguendo qualche vostro consiglio su questo forum ho compilato un codice che mi inserisce le foto nelle celle alla sinistra della cella che contiene il nome della stessa .jpg.

Ho un paio di domande :
1) come faccio a far decidere quale deve essere l'ultima cella da verificare per l'inserimento dell'immagine? Per ora ho inserito manualmente il range (D2:D6684)
2) il file è diventato molto lento nel processo di calcolo, ho sbagliato qualche cosa o devo cambiare strada?
3) se filtro le colonne, le immagini sembrano accavallarsi e ci mette una vita....
4) se inserisco una riga per immettere un nuovo articolo l'immagine non si sposta verso il basso come tutte le altre celle ma resta sulla cella appena creata, come posso ovviare? ( premetto che ho già controllato le propietà delle immagini e mi danno sempre " Sposta ma non ridimensionare ")

Vi allego in modulo che ho salvato nel foglio "Dettagliato" )

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
'
ListaF = "D2:D6684"   '<<< Le celle con nome immagine
For Each Cella In Target
If Not Application.Intersect(Cella, Range(ListaF)) Is Nothing Then
    On Error Resume Next
        ActiveSheet.Shapes("FOTO_DA_" & Cella.Address(0, 0)).Delete
    On Error GoTo 0
    Cella.Select
    If Dir("\\SRV-DC\Company\AT-Dati-SBS\Sandro\progetto inventario\FOTO RICAMBI\" & Cella.Text & ".jpg") = "" Then    '<1
    ActiveSheet.Pictures.Insert("\\SRV-DC\Company\AT-Dati-SBS\Sandro\progetto inventario\FOTO RICAMBI\LOGO ELECTROLUX.jpg").Select  '<2
    Else
    ActiveSheet.Pictures.Insert("\\SRV-DC\Company\AT-Dati-SBS\Sandro\progetto inventario\FOTO RICAMBI\" & Cella.Text & ".jpg").Select '<1
    End If
    Selection.Name = "FOTO_DA_" & Cella.Address(0, 0)
    Selection.ShapeRange.Height = 79
    If Selection.ShapeRange.Width > 150 Then
    Selection.ShapeRange.Width = 150
    End If
   
    'PER POSIZIONARE L'IMMAGINE
    Selection.ShapeRange.Left = Cella.Offset(0, -1).Left - Selection.ShapeRange.Width / 2 + Cella.Offset(0, -1).Width / 2
    Selection.ShapeRange.Top = Cella.Offset(0, 0).Top - Selection.ShapeRange.Height / 2 + Cella.Offset(0, 5).Height / 2
End If
Next Cella
End Sub
Brauli75
Newbie
 
Post: 2
Iscritto il: 20/11/15 12:32

Sponsor
 

Re: Le immagini nelle celle si accavallano

Postdi Anthony47 » 21/11/15 10:24

Ciao Brauli75, benvenuto nel forum.
La macro che usi lavora sul cambiamento del contenuto di una cella, e inserisce l'immagine che ha il nome pari al contenuto della cella; prima di inserire una immagine elimina la precedente, ma per questo fa affidamento all'indirizzo della cella per puntare all'immagine da cancellare.
Se e' tua abitudine aggiungere delle righe in mezzo all'elenco, ad esempio in posizione 44, allora tutto il castello crolla, perche' le immagini che prima erano nominate "FOTO_DA_D45", "FOTO_DA_D46", "FOTO_DA_D47" etc etc sono ora legate a D46, D47, D48 etc etc, quindi saranno eliminate nel momento sbagliato e non saranno eliminate (ovviamente) nel momento buono.
Per suggerirti l'approccio migliore quindi e' utile che spieghi se hai veramente bisogno di lavorare alla modifica di ogni cella o se invece puoi compilare tutte le celle e poi (in un unico momento) aggiungere tutte le immagini; e se le aggiunte le devi fare all'interno dell'elenco o se invece puoi pensare di farle in coda all'elenco esistente.

E' anche necessario che indichi la versione di Office che usi.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Le immagini nelle celle si accavallano

Postdi Brauli75 » 24/11/15 17:56

Ciao Anthony, grazie per la risposta

Utilizzo Il pacchetto Office 2010 e quini Excel 2010.
Purtroppo sono costretto ad utilizzare l'inserimento delle righe in base all'anagrafica del codice dell'articolo che devo caricare :
ad esempio : se ho i codici degli articoli
PEPPA
PLUTO
e dovessi inserire PIPPO
ho bisogno di inserire una riga..... da quì il casino dell'accavallamento...
Se mettessi PIPPO nell'ultima posizione andrei a sballare o meglio non mi trova i dati di ricerca automatica che ho creato in un'altro foglio "Ricerca con codice" dove ho inserito delle formule con CERCA(.....)
Ti metto un esempio :
=SE(CERCA(F1;DETTAGLIATO!C$2:C$7039;DETTAGLIATO!C$2:C$7039)=F1;CERCA(F1;DETTAGLIATO!C$2:C$7039;DETTAGLIATO!O$2:O$7039);"NON ESISTE")
in cui controllo il contenuto inserito in F1 del foglio "Ricerca con codice" e restituisce il dato che trova nell'elenco della colonna "o" del foglio "Dettagliato" .......se il confronto è esatto....
se non inserisco esattamente il dato in ordine alfabetico nel foglio contenente tutti i dati prende il dato più vicino a quello inserito.
Ricapitolando : se metto PIPPo per ultimo nel foglio di ricerca mi darebbe PEPPA :(

Se vuoi posso snellire il file fino all'osso e inviartelo....però devi dirmi come si fà perchè oltre ad essere il secondo messaggio su questo forum è anche il secondo messaggio su TUTTI i forum :D .... sono proprio alle prime armi su ste cose
Brauli75
Newbie
 
Post: 2
Iscritto il: 20/11/15 12:32

Re: Le immagini nelle celle si accavallano

Postdi Anthony47 » 26/11/15 22:59

Puoi inserire immagini "al-volo", cioe' appena hai digitato un articolo, solo se non mandi all'aria i collegamenti tra le foto inserite e la lori riga di appartenenza; cosa che invece avviene quando aggiungi una o piu' righe, o quando ne cancelli.

Direi quindi di provare a lavorare in modalita' "ibrida": al-volo, spero per la maggior parte delle attivita', ex-novo in caso di disallineamenti.
Ti rimando a questo proposito su questa discussione: viewtopic.php?f=26&t=93054%29#p533274
(messaggi del 21-10-2011 e successivi).
Nella discussione sono presentate:
1) una macro di "WorksheetChange", per le operazioni al-volo; l'elenco immagini viene inserito in colonna E, e le immagini vengono inserite in colonna E+5, cioe' J. A spanne direi che la tua WorksheetChange corrente e' simile a questa, quindi lascerei la tua.
2) una Sub Delall che cancella tutte le immagini che sono state inserite in colonna J.
3) una Sub PutAll che aggiunge tutte le immagini.

Nel processo che ti ho suggerito, quando vuoi ripetere l'inserimento ex-novo, dovremo eseguire in sequenza la Sub DelAll e poi la Seb PutAll.

Poiche' le tue immagini non sono inserite in colonna J (ma mi pare in colonna C), devi adattare la Sub DelAll; l'istruzione da modificare e' If pict.TopLeftCell.Column = 10 Then pict.Delete
Inserirai il numero della colonna su cu giacciono le imagini che dvono essere eliminate; se e' colonna C allora il numero da 10 (=J) deve diventare 3.
Nella Sub PutAll va invece modificata la riga ListaF = "E1:E41" '<<< Le celle con nome immagine

Per eseguire in sequenza la Sub DelAll e poi la Seb PutAll bastera' che in testa lla Sub PutAll inserisci una chiamata alla DelAll:
Codice: Seleziona tutto
Sub PutAll()
Call DelAll
'Crea le immagini come da lista presente nel range ListaF
ListaF = "E1:E41"   '<<< Le celle con nome immagine
'etc etc

Spero che quanto ti abbia convinto; e se decidi di procedere per prima cosa fai DUE COPIE di backup del tuo file attuale.

PS: quanto alla formula che ti costringe ad aggiungere righe: ma sei sicuro che non puoi usare (al posto di CERCA) le funzioni Cerca.Vert oppure Confronta che hanno l'opzione di "ricerca valore esatto"? Questo in realta taglierebbe la testa al toro potendo rimanere nella situazione di aggiornamento al-volo...

Ciao, fai sapere.
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Le immagini nelle celle si accavallano":


Chi c’è in linea

Visitano il forum: Marius44 e 42 ospiti