Moderatori: Anthony47, Flash30005
Sub Confronta()
' Foglio1 Vecchio Catalogo
' Foglio2 Nuovo Catalogo
' Foglio3 Prodotti che non sono più nel nuovo catalogo
' Foglio4 Nuovi prodotti (non erano nel vecchio catalogo)
Call CopiaF
URS = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row '<<<< alias Foglio3
URA = Worksheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row '<<< alias Foglio4
For RS = 2 To URS
For RA = URA To 2 Step -1
If Worksheets("Foglio1").Cells(RS, 1).Value = Worksheets("Foglio4").Cells(RA, 1).Value Then Worksheets("Foglio4").Rows(RA & ":" & RA).Delete
Next RA
Next RS
For RA = 2 To URA
For RS = URS To 2 Step -1
If Worksheets("Foglio2").Cells(RA, 1).Value = Worksheets("Foglio3").Cells(RS, 1).Value Then Worksheets("Foglio3").Rows(RS & ":" & RS).Delete
Next RS
Next RA
End Sub
Sub CopiaF()
Sheets("Foglio3").Select
Cells.Select
Selection.Clear
Range("D10").Select
Sheets("Foglio4").Select
Cells.Select
Selection.Clear
Range("A1").Select
Sheets("Foglio1").Select
Cells.Select
Selection.Copy
Sheets("Foglio3").Select
Cells.Select
ActiveSheet.Paste
Range("A1").Select
Sheets("Foglio2").Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Foglio4").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("Foglio3").Select
End Sub
Sub ConfrontaEColora()
' Foglio1 Vecchio Catalogo
' Foglio2 Nuovo Catalogo
' Foglio3 Prodotti che non sono più nel nuovo catalogo
' Foglio4 Nuovi prodotti (non erano nel vecchio catalogo)
Call CopiaF
URS = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row '<<<< alias Foglio3
UCS = Worksheets("Foglio1").Range("IV2").End(xlToLeft).Column
Worksheets("Foglio3").Select
Worksheets("Foglio3").Range(Cells(2, 1), Cells(URS, UCS)).Interior.ColorIndex = 44
URA = Worksheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row '<<< alias Foglio4
UCA = Worksheets("Foglio2").Range("IV2").End(xlToLeft).Column
Worksheets("Foglio4").Select
Worksheets("Foglio4").Range(Cells(2, 1), Cells(URA, UCA)).Interior.ColorIndex = 6
For RS = 2 To URS
For RA = URA To 2 Step -1
If Worksheets("Foglio1").Cells(RS, 1).Value = Worksheets("Foglio4").Cells(RA, 1).Value Then Worksheets("Foglio4").Rows(RA & ":" & RA).Interior.ColorIndex = 0
Next RA
Next RS
For RA = 2 To URA
For RS = URS To 2 Step -1
If Worksheets("Foglio2").Cells(RA, 1).Value = Worksheets("Foglio3").Cells(RS, 1).Value Then Worksheets("Foglio3").Rows(RS & ":" & RS).Interior.ColorIndex = 0
Next RS
Next RA
End Sub
=Se(val.errore(Cerca.vert(IlPartNumber-di-Foglio1;laColonnaColPartNumber-di-Foglio2;1;0));1;0)
=Se(val.errore(Cerca.vert(IlPartNumber-di-Foglio2;laColonnaColPartNumber-di-Foglio1;1;0));1;0)
Flash30005 ha scritto:Ma... il pacchetto di Office costa talmente poco... e vale il suo prezzo
Ciao
Si, mettilo pure.Ho trovato un sito che da la possibilità di convertire il codice VBA in Basic per OOo, io l'ho provato [.....] potrebbe servire in futuro per altre applicazioni, chi lo sa
Posso metterlo?
Anthony47 ha scritto:Vediamo se in questo altro modo possiamo fare di piu':
-creati un file di servizio vuoto
-registra una macro mentre:
--apri il file storico, attivi il foglio buono (*), copi le colonne utili e incolli su Foglio1 del nuovo file
--apri il file ultimo ricevuto, attivi il foglio buono (*), copi le colonne utili e incolli su Foglio2 del nuovo file
-fermi la registrazione della macro
-su Foglio1 inserisci la formula
- Codice: Seleziona tutto
=Se(val.errore(Cerca.vert(IlPartNumber-di-Foglio1;laColonnaColPartNumber-di-Foglio2;1;0));1;0)
-su Foglio2 inserisci la formula
- Codice: Seleziona tutto
=Se(val.errore(Cerca.vert(IlPartNumber-di-Foglio2;laColonnaColPartNumber-di-Foglio1;1;0));1;0)
Inserisci le formule sulla prima riga di dati di Foglio1 e Foglio2, in una colonna libera, e copi poi quella formula in verticale quanto basta (diciamo tutti i dati correnti piu' almeno 100 righe)
Le formule ti indicheranno: su Foglio1, i dati che NON SONO piu' presenti nel foglio ricevuto, quindi dati eliminare nello storico; su Foglio2 i dati che NON SONO ANCORA presenti sul file storico, quindi da aggiungere.
Per avere l' evidenza dei record puoi applicare il Filtro automatico su queste colonne e filtrare per valore 1.
Nota*: se i file in oggetto hanno piu' fogli, e' utile che prima di avviare la registrazione macro salvi e chiudi tali file con il foglio attivo diverso da quello che devi copiare.
Il "giorno dopo" dovrebbe essere sufficiente aprire il file di servizio, con gli altri file chiusi, e lanciare la macro.
Ciao.
A1
=SE(foglio_vecchio.J1=1;foglio_vecchio.A1;"")
B1
=SE(foglio_vecchio.J1=1;foglio_vecchio.B1;"")
C1
=SE(foglio_vecchio.J1=1;foglio_vecchio.C1;"")
apprendistaIT ha scritto:Ho avuto modo di provare la macro di Flash su una licenza di office da un amico (ero curioso di vederne il funzionamento ), ho notato che nel foglio 3 e 4 mette praticamente la lista completa degli articoli, non scrive solo quelli che mancano nell'altra lista,
Torna a Applicazioni Office Windows
Macro che scatta quando cambia dato in un altro file Autore: systemcrack |
Forum: Applicazioni Office Windows Risposte: 14 |
Excel: formula automatica per evidenziare prodotto scaduto Autore: gamma_ray |
Forum: Applicazioni Office Windows Risposte: 3 |
Salvare file excel in formato html escludendo le immagini Autore: systemcrack |
Forum: Applicazioni Office Windows Risposte: 10 |
Modifica visualizzazione file di una cartella Autore: mastino46 |
Forum: Sistemi Operativi Windows Risposte: 2 |
Problema con macro copia e rinomina file Autore: systemcrack |
Forum: Applicazioni Office Windows Risposte: 2 |
Visitano il forum: Nessuno e 44 ospiti