Macro Excell copia cella libera



  • Macro Excell copia cella libera
    di just (utente non iscritto) data: 05/08/2016 08:46:19

    ciao a tutti vi allego il mio caso per spiegarmi meglio.

    come vedete io devo caricare da due file e incollare alcuni dati nelle colonne specifiche...

    il problema adesso è come faccio a far mettere i dati del foglio due sottosotto quelli del foglio 1?

    non so se mi sono spiegato...
     
    Sub Macro1()
    Dim i As Integer
    Dim j As Integer
    Dim Ps As Workbook
    Dim PL As Workbook
    Dim Path  As String
    Sheet1.Cells.Clear
    Path = "z:PONTECCHIO-MARCONI\_Technical_DepartementManutenzione-MeccaniciP&SP&S20168)PS agosto2016  .xlsm"
    Set Ps = Workbooks.Open(Path)
    
    Ps.Sheets(" P&S").Activate
    i = 1
    j = 1
    Do While Cells(i, 5) <> "" Or Cells(i, 8) <> 0
        If (i = 1 And j = 1) Or (Cells(i, 13) <= Date And Cells(i, 14) >= Date) Then
            
            ThisWorkbook.Sheets(1).Cells(j, 1) = Cells(i, 5)
            ThisWorkbook.Sheets(1).Cells(j, 2) = Cells(i, 8)
            ThisWorkbook.Sheets(1).Cells(j, 3) = Cells(i, 9)
            ThisWorkbook.Sheets(1).Cells(j, 4) = Cells(i, 11)
            ThisWorkbook.Sheets(1).Cells(j, 5) = Cells(i, 13)
            ThisWorkbook.Sheets(1).Cells(j, 6) = Cells(i, 14)
            
            ThisWorkbook.Sheets(1).Cells(j, 5).NumberFormat = "m/d/yyyy"
            ThisWorkbook.Sheets(1).Cells(j, 6).NumberFormat = "m/d/yyyy"
            
            ThisWorkbook.Sheets(1).Cells(j, 7) = Cells(i, 16)
            ThisWorkbook.Sheets(1).Cells(j, 8) = Cells(i, 18)
            ThisWorkbook.Sheets(1).Cells(j, 9) = "MTZ"
            ThisWorkbook.Sheets(1).Cells(1, 9) = "MTZ-MTG"
            
            j = j + 1
        
        End If
        
        i = i + 1
    Loop
    
    
    Ps.Close
    
    Path = "C:UsersGiustiS1Desktopmtg_prova.xlsx"
    Set PL = Workbooks.Open(Path)
    
    'PL.Sheets("NPL").Activate
    
    i = 1
    j = 1
    Do While Cells(i, 2) <> "" Or Cells(i, 1) <> 0
         If (Cells(i, 10) = Date) Then
    
             ThisWorkbook.Sheets(1).Cells(j, 1) = Cells(i, 7)
             ThisWorkbook.Sheets(1).Cells(j, 2) = Cells(i, 3)
             ThisWorkbook.Sheets(1).Cells(j, 3) = Cells(i, 9)
             ThisWorkbook.Sheets(1).Cells(j, 4) = Cells(i, 5)
             ThisWorkbook.Sheets(1).Cells(j, 5) = Cells(i, 1)
             ThisWorkbook.Sheets(1).Cells(j, 6) = Cells(i, 10)
    
             ThisWorkbook.Sheets(1).Cells(j, 5).NumberFormat = "m/d/yyyy"
             ThisWorkbook.Sheets(1).Cells(j, 6).NumberFormat = "m/d/yyyy"
    
             ThisWorkbook.Sheets(1).Cells(j, 7) = Cells(i, 4)
             ThisWorkbook.Sheets(1).Cells(j, 8) = Cells(i, 2)
             ThisWorkbook.Sheets(1).Cells(j, 9) = "MTG"
    
             j = j + 1
        
       End If
        
       i = i + 1
    Loop
    
    PL.Close
    
    End Sub
    



  • di Vecchio Frac data: 05/08/2016 10:38:50

    In linea generale serve immagazzinare in una variabile il valore della riga dell'ultima riga riempita, aumentarlo di uno e partire da lì con l'inserimento dei valori.
    Ma il codice che hai postato, oltre ad essere un po' confuso, non dice molto sullo scenario.
    Se puoi allega due file di esempio e il risultato desiderato.





  • di just (utente non iscritto) data: 05/08/2016 13:32:06

    ho creato tre file esempio per spiegare la situazione e come vorrei venisse...spero così sia più chiaro

    grazie per la risposta ma non ho capito....



  • di Vecchio Frac data: 05/08/2016 14:28:41

    Ok, hai allegato (un file compresso contenente) due file (non tre), ma non mi è chiaro cosa viene copiato da dove a dove, nè quale sia il risultato atteso.
    Abbi pazienza ma non siamo nella tua testa e devi sforzarti di descrivere meglio lo scenario.





  • di just (utente non iscritto) data: 05/08/2016 15:18:14

    ho aggiunto il file desiderato...
    mi dispiace non riuscire a spiegarmi...spero che con questo file il problema sia più chiaro...

    nel caso provo a rispiegare il problema:
    prendere alcune colonne specifiche dal file A e incollarli nel file desiderato.
    prendere altre colonne conteneti però gli stessi dati dal file B sotto ai dati precedentemente copiati nel file finale.
    ovviamente il tutto fatto da una macro.
    spero che così sia più chiaro...



  • di Albatros54 data: 05/08/2016 17:43:50







  • di Vecchio Frac data: 05/08/2016 18:16:32

    LOL almeno Albatros vede qualcosa... la mia palla di vetro è vuota :)
    Sì just sei stato un filo avaro di spiegazioni, diciamo... vedremo cosa si riuscirà a fare.
    Anche perchè tu hai postato del codice, ma del file che contiene quel codice neanche l'ombra :)






  • di just (utente non iscritto) data: 07/08/2016 02:31:43

    Ho dovuto rifare i file per via dei dati sensibili...scusate...martedì torno a lavoro e sposto il codice sui nuovi fai e poi riposto...scusate davvero nn so come spiegarmi...fate domande e vi rispondo....



  • di just (utente non iscritto) data: 09/08/2016 09:19:18

    ho risolto il problema insendo un ciclo do while prima della scrittura del secondo foglio.

    Grazie comunque per l'attenzione



  • di Vecchio Frac data: 09/08/2016 10:35:59

    Riporta almeno il codice "che risolve il problema" qui sotto, perchè francamente la soluzione è più oscura del problema :)