Ciao, benvenuto anche da parte mia
Guarda anche le considerazioni di Flash sopra.
dopo svariati anni passati ad usufruire di questo forum grazie ai vostri preziosi interventi mi ritrovo in un angolo morto e costretto a chiedere il vostro aiuto
Mi spiace, se vuoi ti indico un paio di forum che ti avrebbero lasciato al punto di partenza...
Un po' piu' seriamente:
-in Foglio1 hai il listino "precedente"
-importi il nuovo listino su Foglio2
-su una colonna libera di Foglio1, tramite Cerca.Vert controlli se quel codice e' presente in Foglio2; avrai #N/D se non presente
-usi l' esito in questa colonna per formattare il testo della riga con effetto barrato; per questo dovrai usare la formattazione condizionale, condizione=La formula e', come formula userai ad esempio
=Val.Errore($Z1), come Formato, nel tab Carattere imposterai l' effetto barrato. La formula ipotizza che hai usato la col Z
-in ulteriori N colonne libere di Foglio1 controlli, per ogni Codice di Foglio1 e per ognuna delle N colonne di tuo interesse se il dato e' cambiato; per questo calcolo userai una formula del tipo
=LaCellaDiInteresse<>Cerca.vert(IlCodice;Foglio2!Tabella;IndiceDellaCellaDiInteresse;0)La formula ti restituira' Vero, Falso, #N/D
-usi l' esito di queste colonne per impostare il grassetto in caso di valore Vero; usando la formattazione condizionale, userai quindi una formula tipo
=AA1 (se Vero /Falso /#N/D l' hai calcolato in AA1) e come formato lo stile grassetto.
Su Foglio2,
-in una colonna libera tramite Cerca.Vert controlli se quel codice e' presente in Foglio1; avrai #N/D se non presente.
-imposti su quella colonna il Filtro automatico
A questo punto registri una macro mentre, partendo da Foglio1:
-selezioni Foglio2
-nella freccina del filtro automatico scegli #N/D, in modo da visualizzare solo le righe nuove
-selezioni le celle visualizzate e copi
-vai su Foglio1, selezioni la prima cella libera, incolli
-premi Esc e poi interrompi la registrazione macro.
Sulla macro cosi' prodotta dovrai variare un paio di istruzioni
1) prima della ".Copy" avrai qualcosa come
Range("A21:H333").Select-modifica in
Intersect(Range("A:H"), ActiveSheet.UsedRange.Offset(1, 0)).Select(questo nell' ipotesi che I dati partano da Riga2 e in riga1 hai le intestazioni e la freccina del filtro automatico)
2)Dopo
Sheets("Foglio1").Select avrai ad esempio una
Range("A123").Select-modifica in
Cells(Rows.Count,1).End(Xlup).offset(1,0).SelectIn questo modo selezionerai la prima cella libera di col A, e non una cella specifica.
Eventualmente inserisci un pulsante (trovi questo simbolo nella barra degli strumenti Moduli) e gli assegni questa macro.
L' ho fatta lunga per (cercare di) farla chiara; se non ci sono riuscito, e se non ti arrivano altre proposte, posta ancora magari chiarendo quale e' il layout dei tuoi dati.
Ciao