Condividi:        

Macro excel confonto listini tramite codice ean

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

Macro excel confonto listini tramite codice ean

Postdi Maxpower2 » 20/06/12 16:53

salve ragazzi,
sono nuovo in questo forum ma ho visto che ci sono persone competenti ed in gamba. Ho bisogno
di un aiuto per quanto riguarda excel. Vi spiego cosa voglio fare; ho tre listini in excel, un listino madre su cui voglio visualizzare i risultati e due listini figli. Sia il listino madre che i listini figli hanno degli articoli cod codici ean (a 13 e 8 cifre) e relativo prezzo. Io vorrei che la macro (penso che ci vuole una macro che non so fare) individuasse gli articoli che hanno lo stesso codice ean nel listino madre e figli e se hanno lo stesso codice ean allora la macro dovrebbe copiare il prezzo dell'articolo presente nel listino figlio in una colonna creata appositamente nel listino madre.

Spero di essere stato chiaro su quale sia il mio problema.
aspetto news
grazie
Maxpower2
Utente Junior
 
Post: 10
Iscritto il: 20/06/12 11:17

Sponsor
 

Re: Macro excel confonto listini tramite codice ean

Postdi Flash30005 » 20/06/12 23:32

Ciao Maxpower2 e benvenuto nel Forum

Quello che chiedi è realizzabile tramite macro ma occorrerebbero più riferimenti sulla disposizione dati o, ancora meglio, uno stralcio dei file interessati

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: Macro excel confonto listini tramite codice ean

Postdi Maxpower2 » 21/06/12 19:32

Flash30005 ha scritto:Ciao Maxpower2 e benvenuto nel Forum

Quello che chiedi è realizzabile tramite macro ma occorrerebbero più riferimenti sulla disposizione dati o, ancora meglio, uno stralcio dei file interessati

Ciao


Ho provato a mettere un link ma ancora non posso perchè sono nuovo e devo scrivere almeno tre post, quindi ti ho mandato un messaggio privato.
Thanks
Maxpower2
Utente Junior
 
Post: 10
Iscritto il: 20/06/12 11:17

Re: Macro excel confonto listini tramite codice ean

Postdi Flash30005 » 21/06/12 20:24

Si ma leggi bene quanto ho scritto perché parli di confrontare dei codici esistenti sul file Mdre e File Figli ma non ci sono codici EAN (nemmeno altri codici) nel file Madre che è possibile confrontare con i file Figli

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: Macro excel confonto listini tramite codice ean

Postdi Flash30005 » 22/06/12 10:04

Appurato solo ora che il codice EAN si trova nella colonna B (foglio dati) del file Madre
puoi utilizzare questa macro
Codice: Seleziona tutto
Public NomeF As String, URM As Integer
Public perc As String

Sub ElencoFileXls()
Application.ScreenUpdating = False
Application.Calculation = xlManual
perc = ThisWorkbook.Path
NomeF = ThisWorkbook.Name
Worksheets("Dati").Select
URM = Workbooks(NomeF).Worksheets("Dati").Range("B" & Rows.Count).End(xlUp).Row
Range("P1").Select
Worksheets("Dati").Range("P1:P" & URM).ClearContents
Trova Direct:=perc, Estens:="*.xls", Inicell:=ActiveCell
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Private Sub Trova(Direct As String, Estens As String, Inicell As Range)
    Set fs = Application.FileSearch
    With fs
        .LookIn = perc
        .SearchSubFolders = True
        .Filename = Estens
        If .Execute > 0 Then
            For i = 1 To .FoundFiles.Count
                FileT = .FoundFiles(i)
                NFileP = Replace(FileT, perc, "")
                NFile = Mid(NFileP, InStr(NFileP, "\") + 1, Len(NFileP))
                If NFile <> NomeF Then
                    Workbooks.Open(FileT).Activate
                    URF = Range("N" & Rows.Count).End(xlUp).Row
                    For RRF = 2 To URF
                    EanF = Range("N" & RRF).Value
                        For RRM = 2 To URM
                            If Workbooks(NomeF).Worksheets("Dati").Range("B" & RRM).Value = EanF Then
                                Workbooks(NomeF).Worksheets("Dati").Range("P" & RRM).Value = Range("H" & RRF).Value
                                GoTo SaltaRRF
                            End If
                        Next RRM
SaltaRRF:
                    Next RRF
                    Workbooks(NFile).Close savechanges:=False
                End If
            Next i
        End If
    End With

End Sub


Potrai avviare la macro con tasti scelta rapida, oggetti o comandi

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: Macro excel confonto listini tramite codice ean

Postdi Maxpower2 » 24/06/12 11:08

Flash30005 ha scritto:Appurato solo ora che il codice EAN si trova nella colonna B (foglio dati) del file Madre
puoi utilizzare questa macro
Codice: Seleziona tutto
Public NomeF As String, URM As Integer
Public perc As String

Sub ElencoFileXls()
Application.ScreenUpdating = False
Application.Calculation = xlManual
perc = ThisWorkbook.Path
NomeF = ThisWorkbook.Name
Worksheets("Dati").Select
URM = Workbooks(NomeF).Worksheets("Dati").Range("B" & Rows.Count).End(xlUp).Row
Range("P1").Select
Worksheets("Dati").Range("P1:P" & URM).ClearContents
Trova Direct:=perc, Estens:="*.xls", Inicell:=ActiveCell
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Private Sub Trova(Direct As String, Estens As String, Inicell As Range)
    Set fs = Application.FileSearch
    With fs
        .LookIn = perc
        .SearchSubFolders = True
        .Filename = Estens
        If .Execute > 0 Then
            For i = 1 To .FoundFiles.Count
                FileT = .FoundFiles(i)
                NFileP = Replace(FileT, perc, "")
                NFile = Mid(NFileP, InStr(NFileP, "\") + 1, Len(NFileP))
                If NFile <> NomeF Then
                    Workbooks.Open(FileT).Activate
                    URF = Range("N" & Rows.Count).End(xlUp).Row
                    For RRF = 2 To URF
                    EanF = Range("N" & RRF).Value
                        For RRM = 2 To URM
                            If Workbooks(NomeF).Worksheets("Dati").Range("B" & RRM).Value = EanF Then
                                Workbooks(NomeF).Worksheets("Dati").Range("P" & RRM).Value = Range("H" & RRF).Value
                                GoTo SaltaRRF
                            End If
                        Next RRM
SaltaRRF:
                    Next RRF
                    Workbooks(NFile).Close savechanges:=False
                End If
            Next i
        End If
    End With

End Sub


Potrai avviare la macro con tasti scelta rapida, oggetti o comandi

ciao

Scusa Flash, ma son un pò na schiappa, ti spiego cosa ho fatto, ho copiato i tre file xls ovvero listino_madre.xls listino_figlio1.xls e listino_figlio2.xls in una cartella denominata "prova". Poi ho aperto il file listino_madre.xls e ho cliccato alt-F11 per inserire la macro. Adesso la macro dove la inserisco? c'è un tutorial che posso studiare per creare le macro.
Thanks
Maxpower2
Utente Junior
 
Post: 10
Iscritto il: 20/06/12 11:17

Re: Macro excel confonto listini tramite codice ean

Postdi Flash30005 » 24/06/12 11:20

dopo aver premuto Alt+F11
vai sul Menu Inserisci
selezioni Modulo
e sulla destra (dove trovi il cursore lampeggiante)
incolli l'intera macro che avrai copiato dal post

ciao

P.s. per creare le macro puoi cominciare a registrarne qualcuna facendo semplici operazioni e, poi in debug vedi l'azione di ogni codice
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: Macro excel confonto listini tramite codice ean

Postdi Maxpower2 » 24/06/12 11:48

Flash30005 ha scritto:dopo aver premuto Alt+F11
vai sul Menu Inserisci
selezioni Modulo
e sulla destra (dove trovi il cursore lampeggiante)
incolli l'intera macro che avrai copiato dal post

ciao

P.s. per creare le macro puoi cominciare a registrarne qualcuna facendo semplici operazioni e, poi in debug vedi l'azione di ogni codice

Scusa la macro la devo creare per tutti e tre i file o solo in quella del listino madre e poi la macro verifica i codici ean presenti nei files figli e mi copia il prezzo nella colonna I ?
thanks
Maxpower2
Utente Junior
 
Post: 10
Iscritto il: 20/06/12 11:17

Re: Macro excel confonto listini tramite codice ean

Postdi ricky53 » 24/06/12 12:19

Ciao,
parafrasando il famoso comico televisivo Corrado Guzzanti in una sua scenetta:
"La seconda che hai detto" !
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro excel confonto listini tramite codice ean

Postdi Maxpower2 » 24/06/12 16:33

Ciao Flash,

allora, ho copiato il codice nel listino madre, ho aperto anche i due file figli e ho mandato in esecuzione la macro e subito mi restituisce il seguente messaggio "errore di runtime '9' Indice non incluso nell'intervallo, poi cliccando su debug mi evidenzia in giallo questa parte di codice "Worksheets("Dati").Select"
sbaglio io in qualcosa?
thanks
Maxpower2
Utente Junior
 
Post: 10
Iscritto il: 20/06/12 11:17

Re: Macro excel confonto listini tramite codice ean

Postdi Maxpower2 » 24/06/12 16:53

ok non prendete in considerazione il messaggio di sopra.

Flash la macro funziona perfettamente, solo che mi restituisce il risultato sulla colonna P invece io vorrei che lo restituisse nella colonna I, ho provato a cambiare questa parte di codice da P ad I ma niente mi restituisce il risultato sempre nella colonna P. Mi puoi dire cosa devo cambiare. thanks
Range("P1").Select
Worksheets("Dati").Range("P1:P" & URM).ClearContents


La macro funziona perfettamente.
Sei un grande!!!
Maxpower2
Utente Junior
 
Post: 10
Iscritto il: 20/06/12 11:17

Re: Macro excel confonto listini tramite codice ean

Postdi Maxpower2 » 24/06/12 17:01

OK come non detto, ho trovato la colonna P e lo sostiuita con la I funziona perfettamente.
Grazie mille FLASH !!!!
La macro funziona alla grande.
Alla prossima.
Maxpower2
Utente Junior
 
Post: 10
Iscritto il: 20/06/12 11:17

Re: Macro excel confonto listini tramite codice ean

Postdi Maxpower2 » 25/06/12 15:50

Ciao Flash,

ho provato la macro con i file originali ma si blocca, forse i file sono troppo grossi? cmq ti ho mandato via mp i file orignali per capire dove sta il problema.
thanks
Maxpower2
Utente Junior
 
Post: 10
Iscritto il: 20/06/12 11:17

Re: Macro excel confonto listini tramite codice ean

Postdi Flash30005 » 25/06/12 16:27

Si con file così grandi non si blocca ma impiega molti minuti
sto cercando di applicare una funzione diversa e più veloce

Ma ho dei problemi

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: Macro excel confonto listini tramite codice ean

Postdi ricky53 » 25/06/12 16:41

Ciao,
in questi casi conviene lavorare in MEMORIA utilizzando delle MATRICI (Array).

Da quante righe sono costituiti i file?

Non ho seguito tutto e, vorrei poterti aiutare, ma il tempo ... ci provo ma non prometto nulla.

Partirei dalla macro di Flash che ti ha dato risultati esatti e la adatterei a lavorare con le matrici invece che con le celle ... ci provo a questa sera ... ma tardi.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro excel confonto listini tramite codice ean

Postdi Maxpower2 » 25/06/12 18:15

ricky53 ha scritto:Ciao,
in questi casi conviene lavorare in MEMORIA utilizzando delle MATRICI (Array).

Da quante righe sono costituiti i file?

Non ho seguito tutto e, vorrei poterti aiutare, ma il tempo ... ci provo ma non prometto nulla.

Partirei dalla macro di Flash che ti ha dato risultati esatti e la adatterei a lavorare con le matrici invece che con le celle ... ci provo a questa sera ... ma tardi.


Allora, il listino madre ha 7543 righe, il listino figlio 1 ha 8610 righe ed il listino figlio 2 ha 4650 righe.

Aspetto vostre news....
Maxpower2
Utente Junior
 
Post: 10
Iscritto il: 20/06/12 11:17

Re: Macro excel confonto listini tramite codice ean

Postdi ricky53 » 25/06/12 23:48

Ciao,
mi sono potuto collegare solo ora e ... vista l'ora non me la sento di iniziare a scrivere qualcosa ... rimanderei a domani.
Ho visto i dati che hai fornito ... si sono un po' tanti per essere elaborati direttamente sulle celle ... ci vuole una MATRICE
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro excel confonto listini tramite codice ean

Postdi Flash30005 » 26/06/12 00:09

Finalmente, grazie ai post di Anthony e a questo Forum che è sempre una miniera ho trovato quello che cercavo:
La funzione Match
Post di Anthony

e ho realizzato la macro che ti occorre
(sostituire alla precedente sul file "Madre" (non rinominare i file figlio1 e 2 altrimenti dovrai modificare i nomi all'interno della macro
Codice: Seleziona tutto
Sub ImportaDati()
Application.ScreenUpdating = False
Application.Calculation = xlManual
perc = ThisWorkbook.Path
NomeF = ThisWorkbook.Name
Dim Ws1, Ws4 As Worksheet
Set Ws1 = Worksheets("Dati")
URM = Workbooks(NomeF).Worksheets("Dati").Range("B" & Rows.Count).End(xlUp).Row
Worksheets("Dati").Range("P1:P" & URM).ClearContents
For NF = 1 To 2
    NFile = "listino_figlio" & NF & ".xls"
    ColF = 14
    ColP = 8
    If NF = 2 Then
        ColF = 12
        ColP = 13
    End If
    FileT = perc & "\" & NFile
    Workbooks.Open(FileT).Activate
    Set Ws4 = Workbooks(NFile).Worksheets("Foglio1")
    URF = Workbooks(NFile).Sheets("Foglio1").Range("N" & Rows.Count).End(xlUp).Row
    Workbooks(NomeF).Activate
    Ws1.Select
    For RRF = 2 To URF
        On Error Resume Next
        RRM = 0
        RRM = Application.WorksheetFunction.Match(Ws4.Cells(RRF, ColF), Ws1.Range("B1:B10000"), 0)
        If RRM <> 0 Then Ws1.Range("P" & RRM).Value = Ws4.Cells(RRF, ColP).Value
    Next RRF
    Workbooks(NFile).Close savechanges:=False
Next NF
On Error GoTo 0
End Sub


Spero che prima o poi vi abituerete a cercare anche voi nel Forum e risolvere da soli i quesiti, chissà!?
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: Macro excel confonto listini tramite codice ean

Postdi ricky53 » 26/06/12 09:16

Ciao,
il sempre attivo Flash ti ha già proposto una soluzione alternativa (ottima soluzione, buon sangue non mente) ... avevo scritto qualcosa ma non posso testarlo non avendo i tuoi file e preferisco non fornire la mia proposta se non l'ho testata.

Mi puoi inviare dei file di esempio sui quali fare le prove perchè penso che sia possibile abbassare i tempi elaborativi utilizzando le "MATRICI" al posto della funzione "Match".
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro excel confonto listini tramite codice ean

Postdi Flash30005 » 26/06/12 10:59

58 secondi per confrontare 13.264 record rispetto a 7542 record, trascrivere il dato trovato, aprire e chiudere due file excel non mi sembrano tanti ma ogni miglioria è sempre utile a tutti ;)

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-

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Macro excel confonto listini tramite codice ean":


Chi c’è in linea

Visitano il forum: Nessuno e 37 ospiti