Condividi:        

Aggiornamento listino automatico su 2 fogli excel in vba

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

Aggiornamento listino automatico su 2 fogli excel in vba

Postdi ary.84 » 24/04/12 14:58

Ciao a tutti e da un po che smanetto e grazie al vostro forum o ragiunto qualcosa con delle formule per copiare un listino da un foglio excel ad un altro e in più aggiornarlo, ma adesso vorrei provarci con vba ma non sono per niente pratico. qualcuno mi puo' aiutare spiego cosa avrei bisogno.
Foglio x :composto da "colonna (b) con descrizioni prodotto" "colonna (c) codice prodotto" "(d) prezzo prodotti "e vorrei importarli
su un altro foglio excel dove colonna (b) corrisponde a colonna (b) colonna (c) corrisponde a colonna (A e X) colonna(d) corrisponde a (AA) e magari far riconoscere le categorie dei prodotti e in più ogni voilta che devo aggiornare mi riconosca solo i cambiamenti sia di descrizione codice e prezzo.
Spero di essere stato esaustivo nella spiegazione.
Grazie Ragazzi
ary.84
Newbie
 
Post: 8
Iscritto il: 24/04/12 14:42

Sponsor
 

Re: Aggiornamento listino automatico su 2 fogli excel in vba

Postdi Anthony47 » 24/04/12 23:25

Ciao ari.84, benvenuto nel forum.
Un paio di domande:
-intanto parli di lavorare tra due fogli dello stesso file (cartella di lavoro), o sono due file diversi?
-il layout di FoglioX e' chiaro, mentre non e' chiaro nel secondo foglio da che cosa parti e che cosa vorresti mappare nelle varie colonne.
-infine non mi e' chiaro l' obiettivo di questo lavoro.

Ciao, ti aspettiamo.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Aggiornamento listino automatico su 2 fogli excel in vba

Postdi ary.84 » 25/04/12 11:59

Grazie per avermi risposto
Cmq
l'obiettivo di questo lavoro e che ho dei listini formati appunto come il foglio x e devo trasportarli su un altro foglio excel che e composto in maniera diversa inquanto e generato da un gestionale appunto come da descrizione.
1) parlo di due fogli excel diversi , es. Cartel1.xlsx composto da 3 fogli diversi come da descrizione fogliox, e Cartel2.xlsx composto da 1 foglio con colonne diverse che dovranno corrispondere rispettivamente:
colonna (b) corrisponde a colonna (b) colonna (c) corrisponde a colonna (A e X) colonna(d) corrisponde a (AA).

2) Partirei appunto dal Foglio X e vorrei mappare colonna b-c-d per copiare le stesse colonne al secondo file excel in colonne diverse.
e siccome il foglio x viene aggiornato dai fornitori vorrei aggiornare automaticamente il secondo foglio excel.
e se e possibile far riconoscere le varie categorie di prodotti che appunto nelle descrizioni ce scritto per esempio
-Monitor samsung tv
-Monitor sony lcd
monitor panasonic led etc
Grazie
ary.84
Newbie
 
Post: 8
Iscritto il: 24/04/12 14:42

Re: Aggiornamento listino automatico su 2 fogli excel in vba

Postdi Anthony47 » 26/04/12 01:52

Quindi sono due "cartelle di lavoro".
Ora pero' la situazione mi e' ancora confusa: se hai un file generato dal gestionale (che quindi dovrebbe essere "la bibbia") perche' vuoi copiarci sopra dati che arrivano da clienti (che quindi scriveranno ognuno come meglio gli piace, e provati a dirgi che non va bene come fanno)?

Comunque se e' solo un fatto di rimappare la colonna N del file 1 sulla colonna M del file 2 allora ti bastera' registrare una macro mentre esegui una volta l' operazione e avrai il codice di base:
-parti da un nuovo file, che servira' solo come contenitore della macro
-avvia il registratore di macro (Tab Sviluppo, gruppo Codice, Registra macro)
-esegui diligentemente le operazioni: scegli il primo file, seleziona la colonna che ti interessa copiare, Copia, scegli il secondo file, seleziona riga 1 della colonna su cui vuoi incollare, Incolla (oppure Incolla speciale, Valori); torna sul primo file, seleziona e copia la seconda colonna, etc etc
-quando hai completato premi Interrompi registrazione
Se vuoi visualizzare il codice prodotto: da Excel, Alt-F8, seleziona il nome della macro che hai appena creata, premi Modifica.

A questo punto tutte le volte che manderai in esecuzione questa macro (Alt-F8, seleziona la macro, premi Run) verranno eseguite le stesse operazioni.
Non avendo capito il tuo processo non so se questo e' idoneo e sufficiente per il tuo caso; eventualmente pubblica il codice della macro ottenuta con la descrizione di quali modifiche bisognerebbe apportare, in termine di prestazioni.

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

Re: Aggiornamento listino automatico su 2 fogli excel in vba

Postdi ary.84 » 27/04/12 15:06

Ho eseguito passo passo quello che mi hai scritto ma purtroppo quando invio il comando run mi porta errore run time 9 indice non incluso nell'intervallo. e mi evidenzia nel codice """ Windows("Cartel1.xlsx").Activate"""
Altra cosa come ti ho scritto in precedenza vorrei che riconoscesse gli aggiornamenti da listini nuovi che mi inviano i fornitori sempre negli stessi formati e nelle stesse colonne.Ho provato a fare una cosa ho preso un listino vecchio chiamato "LISTINO 15-33.xls" ho eseguito la tua guida dopo o eliminato questo file e inserito nella stessa cartella un listino aggionato modificandogli i campi copiati in precedenza e il risultato e l'errore che ti dicevo.
ti posto il codice :
Codice: Seleziona tutto
Sub Macro1()
'
' Macro1 Macro
'

'
    Application.WindowState = xlMinimized
       Range("B14:B1219").Select
    Selection.Copy
    Windows("Cartel1.xlsx").Activate
    Range("B2").Select
    Columns("B:B").ColumnWidth = 65.71
    ActiveSheet.Paste
    Columns("B:B").ColumnWidth = 72.29
    Windows("LISTINO 15-33.xls").Activate
    Range("C14:C1219").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Cartel1.xlsx").Activate
    Range("A2").Select
    ActiveSheet.Paste
    Columns("A:A").ColumnWidth = 20
    Columns("B:B").ColumnWidth = 74.71
    Range("B4").Select
    Range("X2").Select
    ActiveSheet.Paste
    Range("Y2").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "Omicron"
    Range("Y3:Y1211").Select
        Range("Y2").Select
    Selection.ClearContents
        Windows("LISTINO 15-33.xls").Activate
   
    Range("D14:D1220").Select
    Selection.Copy
    Windows("Cartel1.xlsx").Activate
        Range("H2").Select
    ActiveSheet.Paste
    Range("I19").Select
    Columns("H:H").ColumnWidth = 12.14
    Range("H12").Select
    Windows("LISTINO 15-33.xls").Activate
    Range("D1221").Select
    Application.WindowState = xlMinimized
    Windows("Cartel1.xlsx").Activate
End Sub



Grazie mille e scusa l'ignoranza :oops: :oops: :oops:

EDIT Flash - Eliminati tutti gli "ActiveWindow.ScrollRow" per rendere più leggibile la macro
ary.84
Newbie
 
Post: 8
Iscritto il: 24/04/12 14:42

Re: Aggiornamento listino automatico su 2 fogli excel in vba

Postdi Flash30005 » 29/04/12 07:31

Apri una nuova cartella di lavoro e rinominala "ListinoOggi.xlsx"
Incolla questa macro e tenendo aperto anche il file "Listino 15-33.xls"
avvia la macro

Codice: Seleziona tutto
Sub Macro1()

    Windows("LISTINO 15-33.xls").Activate
    Range("B14:B1219").Copy
    Windows("ListinoOggi.xlsx").Activate
    Range("B2").Select
    ActiveSheet.Paste
    Columns("B:B").ColumnWidth = 72.29
    Windows("LISTINO 15-33.xls").Activate
    Range("C14:C1219").Copy
    Windows("ListinoOggi.xlsx").Activate
    Range("A2").Select
    ActiveSheet.Paste
    Columns("A:A").ColumnWidth = 20
    Range("X2").Select
    ActiveSheet.Paste
    Range("Y2").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "Omicron"
 '   Range("Y3:Y1211").Select
  '      Range("Y2").Select
  '  Selection.ClearContents
    Windows("LISTINO 15-33.xls").Activate
    Range("D14:D1220").Select
    Selection.Copy
    Windows("ListinoOggi.xlsx").Activate
    Range("H2").Select
    ActiveSheet.Paste
    Range("I19").Select
    Columns("H:H").ColumnWidth = 12.14
    Range("H12").Select

End Sub


(Ci sono dei passi che non ho capito e che ho eliminato dalla tua registrazione)

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Aggiornamento listino automatico su 2 fogli excel in vba

Postdi ary.84 » 29/04/12 09:03

Grazie Flash30005
Ma mi da sempre lo stesso errore questa volta mensionandomi "Windows("LISTINO 15-33.xls").Activate"
non saprei da cosa possa dipendere.
mi puoi indicare cosa non ti e chiaro? cosi cerco di spiegare meglio.
ary.84
Newbie
 
Post: 8
Iscritto il: 24/04/12 14:42

Re: Aggiornamento listino automatico su 2 fogli excel in vba

Postdi Flash30005 » 29/04/12 12:43

I due file devono essere aperti altrimenti la macro darà sempre errore

Per quanto riguarda la tua macro ho commentato queste righe perché mi sembrano inutili
Codice: Seleziona tutto
    Range("Y2").Select  '<<<< selezioni la cella Y2
    Application.CutCopyMode = False   
    ActiveCell.FormulaR1C1 = "Omicron" '<<<<<< scrivi "Omicron"
'   Range("Y3:Y1211").Select  '<<<<<<<<<< selezioni un range
  '      Range("Y2").Select  '<<<<<< selezioni di nuovo Y2
  '  Selection.ClearContents   '<<<<<<<<<<<<< cancelli ciò che avevi scritto (Omicron) ?


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Aggiornamento listino automatico su 2 fogli excel in vba

Postdi ary.84 » 29/04/12 22:31

NUlla continua ancora a darmi sempre lo stesso errore i due file sono aperti e ho attivato le macro da file/opzioni/centro protezioni/impostazioni centro protezioni/attiva tutte le macro.
Non so dove sbaglio.
Cmq in effetti quelle righe di comando sono inutili Grazie.
ary.84
Newbie
 
Post: 8
Iscritto il: 24/04/12 14:42

Re: Aggiornamento listino automatico su 2 fogli excel in vba

Postdi Flash30005 » 30/04/12 09:05

Sei sicuro di aver aperto il file
"LISTINO 15-33.xls"
e non
"LISTINO 15-33.xlsx" ?

La macro richiama un file con estensione excel 2003 (.xls)
come da te postata
ma magari hai salvato il file con estensione excel 2007 (.xlsx)
in questo caso va in errore

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Aggiornamento listino automatico su 2 fogli excel in vba

Postdi ary.84 » 01/05/12 13:33

Flash30005 in effetti aprivo il file con nome con uno spazzio in più.
Cmq adesso una cosa che mi accade e che nelle colonne che vado a copiare ci sono delle immagini incollate e quindi quando vado ad importare il file creato nel programma per aggiornare il listino mi da errore inquanto mi copia paripasso il contenuto, come posso fare ad eliminare le immagini o a selezionare solo lettere e numeri e senza spazzi tra le celle inquanto i listini da copiare sono tutti con lo spazio?
Grazie mille
ary.84
Newbie
 
Post: 8
Iscritto il: 24/04/12 14:42

Re: Aggiornamento listino automatico su 2 fogli excel in vba

Postdi Flash30005 » 02/05/12 09:46

Per fare qualcosa dovrei avere un listino come il tuo
Potresti inviarlo (magari anche ridotto)?

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Aggiornamento listino automatico su 2 fogli excel in vba

Postdi ary.84 » 10/05/12 22:02

Grazie Flash30005
non so come inviarti i file
Cmq ho quasi risolto ma adesso devo eliminare gli spazzi che intercorrono tra righe ecolonne io ho registrato questa macro

Codice: Seleziona tutto
Sub Macro1()
'
' Macro1 Macro
'

'
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.EntireRow.Delete
End Sub


ma ricevo l'errore Selection.EntireRow.Delete impossibile utilizzare il comando con sezioni sovrapposte.
come mai?
Grazie
ary.84
Newbie
 
Post: 8
Iscritto il: 24/04/12 14:42

Re: Aggiornamento listino automatico su 2 fogli excel in vba

Postdi Flash30005 » 10/05/12 22:44

Strano io ho provato il codice e funziona
poi ho eliminato anche la select non necessaria e funziona ugualmente
Codice: Seleziona tutto
    Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete


Quell'errore lo hai se nella riga hai alcune colonne senza nulla e altre con uno o più dati
es.:
A4 = ""
B4 = 1

Quel codice non può funzionare perché ha "sezioni sovrapposte"
Devi definire la condizione di eliminazione riga ad esempio
se in An = "" deve cencellare anche se trova un valore in Bn?

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Aggiornamento listino automatico su 2 fogli excel in vba

Postdi ary.84 » 10/05/12 22:52

SI dovrebbe cancellare anche se trova file bn
ary.84
Newbie
 
Post: 8
Iscritto il: 24/04/12 14:42

Re: Aggiornamento listino automatico su 2 fogli excel in vba

Postdi Flash30005 » 10/05/12 23:07

Usa questo codice (per le righe)
Codice: Seleziona tutto
Sub CancellaR()
Ur = Range("A" & Rows.Count).End(xlUp).Row
For RR = Ur To 1 Step -1
If Range("A" & RR).Value = "" Then Rows(RR & ":" & RR).Delete
Next RR
End Sub
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "Aggiornamento listino automatico su 2 fogli excel in vba":


Chi c’è in linea

Visitano il forum: Nessuno e 65 ospiti