Sviluppo macro confronto



  • Sviluppo macro confronto
    di alex687 (utente non iscritto) data: 09/03/2016 13:13:05

    Buongiorno, sto registrando un foglio di lavoro per alcune operazioni di lavoro. Ho creato già della macro base in questo foglio allegato ma mi servirebbe aiuto per una macro di riepilogo. La spiegazione dettagliata è all'interno del file allegato. vorrei anche capire come realizzarla in caso qualcuno riesca a crearmela.

    grazie per l'aiuto



  • di Raffaele_53 data: 09/03/2016 16:20:58

    Visto allegato e chiuso.
    Se Vuoi dimmi cosa fare in modo semplice? Le Tue spiegazioni non le ho capite per nulla.
    Senza scrivere la "Divina Commedia", dimmi solo EX voglio il foglio1 nel foglio50, oppure righe del foglio1 nel foglio50


  • Sviluppo macro confronto
    di alex687 (utente non iscritto) data: 09/03/2016 16:31:15

    ho due database (foglio 1 e foglio 2), nel riepilogo (terzo foglio) vorrei che fossero riportati
    1) i dati del foglio 1
    2) se nel foglio 2 in una determinata colonna cè un dato uguale a quello del foglio 1 voglio che i dati del foglio 2 siano aggiunti in parte a quelli del foglio 1 per quel dato nel riepilogo
    3) i dati del foglio 2 restanti



  • di Raffaele_53 data: 10/03/2016 09:05:03

    Se ho capito, vorresti che premendo il tasto
    I record presenti in "Produzione" fossero scritti in "Imballaggio"
    Alla condizione che se in una riga fosse già presente, le modifiche vanno in quella. Casomai altri record solo aggiunti.
    Per fare questo bisogna un codice univoco, ex la data ci possono essere doppioni. Esiste un dato dipo Ordine, tipo spedizione che sia univoco?



  • di Alex687 (utente non iscritto) data: 10/03/2016 10:12:56

    No, sia i record della produzione che dell imballaggio scritti nel riepilogo. Però se un valore di impasto nei record dell imballaggio è' presente in quelli della produzione nel riepilogo i dati dell imballaggio vanno scritti sulla stessa riga di quelli della produzione per quell impasto sotto le apposite caselle. L unico dato che può essere univoco è' quello dell' impasto



  • di Raffaele_53 data: 10/03/2016 20:51:30

    Il codice sotto non è completto.
    Devi inserire le righe da dove prende il dato e dove va messo.
    Adesso cancella le righe 5/8 di riepilogo, avvii il codice noterai che appaiono i numeri d'Impasto. Quando completto avrai tutto 
    Da mettere in un MODULO
     
    Option Explicit
    Sub carica()
    Dim sh1 As Worksheet: Set sh1 = Worksheets("PRODUZIONE") ' da cambiare casomai
    Dim sh2 As Worksheet: Set sh2 = Worksheets("IMBALLAGGIO") ' da cambiare casomai
    Dim sh3 As Worksheet: Set sh3 = Worksheets("Riepilogo") ' da cambiare casomai
    Dim Ur1, Ur2, Ur3, X, R, Rg As Object
    Ur1 = sh1.Range("E" & Rows.Count).End(xlUp).Row
    Ur2 = sh2.Range("E" & Rows.Count).End(xlUp).Row
    Ur3 = sh3.Range("I" & Rows.Count).End(xlUp).Row
    If Ur3 < 4 Then Ur3 = 4
    Application.EnableEvents = False
        For X = 4 To Ur1
            Set Rg = sh3.Range(sh3.Cells(4, 9), sh3.Cells(Ur3, 9)).Find(sh1.Cells(X, 5), LookIn:=xlValues, LookAt:=xlWhole)
            If Rg Is Nothing Then
                R = Ur3 + 1
                Ur3 = Ur3 + 1
                sh3.Cells(R, 9) = sh1.Cells(X, 5) 'esempio sh3.Cells(R, 1) = sh1.Cells(X, 1)
                'ex sh3.Cells(R, 1) cella di destinazione sul foglio riepilogo (colonna A)
                'segue = sh1.Cells(X, 1)cella del foglio di produzione dove prende il dato (colonna A)
    'qui sopra metti tutte le celle che vuoi copiare, modifica solo il numero
        Else
            R = Rg.Row
            sh3.Cells(R, 9) = sh1.Cells(X, 5) 'esempio
    'qui sopra metti tutte le celle che vuoi copiare, modifica solo il numero
        End If
        Next X
        For X = 4 To Ur2
            Set Rg = sh3.Range(sh3.Cells(4, 9), sh3.Cells(Ur3, 9)).Find(sh2.Cells(X, 5), LookIn:=xlValues, LookAt:=xlWhole)
            If Rg Is Nothing Then
                R = Ur3 + 1
                Ur3 = Ur3 + 1
                sh3.Cells(R, 9) = sh2.Cells(X, 5) 'esempio sh3.Cells(R, 1) = sh1.Cells(X, 1)
                'ex sh3.Cells(R, 1) cella di destinazione sul foglio riepilogo (colonna A)
                'segue = sh1.Cells(X, 1)cella del foglio di imballaggio dove prende il dato (colonna A)
    'qui sopra metti tutte le celle che vuoi copiare, modifica solo il numero
        Else
            R = Rg.Row
            sh3.Cells(R, 9) = sh2.Cells(X, 5) 'esempio
    'qui sopra metti tutte le celle che vuoi copiare, modifica solo il numero
        End If
        Next X
    Application.EnableEvents = True
    Set sh1 = Nothing
    Set sh2 = Nothing
    Set sh3 = Nothing
    MsgBox "fatto"
    End Sub



  • di alfrimpa data: 10/03/2016 22:07:42

    Ciao Raffaele

    Mi spieghi perchè le variabili Ur1, Ur2, Ur3, X, R e Rg le hai dichiarate Object e non Long?

    Alfredo





  • di Raffaele_53 data: 10/03/2016 23:21:24

    @alfrimpa
    Quando non si mette nulla sono sempre Long, solo l'ultima è dichiarata Object



  • di gaetanopr data: 11/03/2016 00:46:09

    Ciao Raffaele, se non specificato le variabili sono di tipo Variant non Long.
    @Alfrimpa come dice Raffaele solo l'ultima è di tipo Object



  • di alfrimpa data: 11/03/2016 10:44:30

    Grazie a Raffaele e a Gaetano per i chiarimenti.

    Alfredo