Copia in prima colonna libera



  • Copia in prima colonna libera
    di Valeria80 (utente non iscritto) data: 07/05/2013 12:24:00

    Buongiorno a tutti,
    vi spiego cosa dovrei fare: vorrei copiare una range di celle definito e incollarlo nella prima colonna libera di uno sheet di un'altra cartella di lavoro.
    Quindi:
    - devo copiare da I2 a I67 dello sheet "Forecast" del File "Pippo";
    - devo trovare la prima colonna libera (a partire dalla colonna I) nello sheet "Recap" del File "Pluto" e incollare valori e formato del range copiato al passaggio precedente;
    - salvare e chiudere il File "Pluto".

    Il file Pluto potrebbe trovarsi anche in un'altra directory rispetto a quella del file "Pippo".

    Spero di avervi fornito con chiarezza le informazioni necessarie.

    Grazie a tutti in anticipo.
    Buona giornata
    Valeria


  • Ordine fra i documenti
    di Luca (utente non iscritto) data: 07/05/2013 12:33:21

    Buongiorno, ho un quesito da proporvi nella speranza che qualcuno mi possa dare una mano.... ho un foglio che chiamerò "sorgente" nel quale io quotidianamente registro dei dati che mi forniscono. Ogni riga contiene una serie di dati che fanno riferimento a un singolo documento.
    Le colonne principali invece sono due; il mese nel quale è stato registrato e la tipologia di documento espressa con dei numeri ( es alla tipologia reclami so che corrisponde il codice 001 quindi tutti i reclami avranno come codice 001)
    Ora quello che serve a me è avere su di un foglio di lavoro due testbox che mi consentano:
    1. Di ricercare tutti i documenti registrati in un preciso mese o Ancora meglio in un lasso di tempo ( es da 01/01/2013 al 15/02/2013 )
    Sarebbe utile però, una volta visualizzati tutti i documenti di quel mese, che questi siano anche in ordine di codice ( ma se questa è una cosa difficile gli ordino successivamente io )

    2. Di poter ricercare per tipologia ( es tutti i reclami con codice 001)

    La cosa più importante per me è che una volta che io vado a modificare il file sorgente automaticamente le mie ricerche siano aggiornate a quelle modifiche.

    Se qualcuno ha un idea di come poter realizzare questo codice mi faccia sapere.

    Grazie



  • di totygno71 data: 07/05/2013 13:18:56

    @Valeria80

    Tu hai già scritto qualcosa di codice? se si puoi postare?

    @Luca

    devi aprire una nuova discussione e non continuarne una già aperta_
    Ciao



  • di Valeria80 data: 07/05/2013 14:04:32

    Grazie Totygno71 della rapidità di risposta.

    Questo è il codice, ma:
    1) mi copia i dati in tutte le colonne da colonna 9 a colonna 100;
    2) Il file "Pluto" deve essere nella stessa directory del file di origine;
    3) copia solo i valori e non il formato.

    Grazie ancora
    Valeria
     
    Sub Esporta_Report()
    
        Dim wk1 As Workbook
        Dim wk2 As Workbook
        Dim sh1 As Worksheet
        Dim sh2 As Worksheet
    Dim Intervallo As Range
    On Error GoTo RigaErrore
    Application.ScreenUpdating = False
        
        Set wk1 = ThisWorkbook
        Set wk2 = Workbooks.Open(wk1.Path & "/" & "Pluto.xlsx")
        Set sh1 = wk1.Worksheets("Forecast")
        Set sh2 = wk2.Worksheets("Report")
        Set Intervallo = sh1.Range("I2:i67")
        
    x = MsgBox("Sta per essere estratto il Report. Procedere?", vbYesNo)
    If x = vbYes Then
    
    Intervallo.Copy
    For colonna = 9 To 100 Step 1
            Cells(2, colonna).Select
            If Cells(2, colonna).Value = "" Then
               Cells(2, colonna).PasteSpecial xlPasteValues
         End If
         Next
    
        wk2.Save
        wk2.Close
        Application.CutCopyMode = False
    
       Worksheets("Input").Select
    MsgBox "Report con dati consuntivi creato correttamente", vbInformation
    
    RigaChiusura:
        
        Set sh2 = Nothing
        Set sh1 = Nothing
        Set wk1 = Nothing
        Set wk2 = Nothing
        Exit Sub
    
    RigaErrore:
        MsgBox Err.Number & vbNewLine & Err.Description
        Resume RigaChiusura
    End If
    End Sub
    



  • di totygno71 data: 07/05/2013 14:42:43

    cit" Questo è il codice, ma:
    1) mi copia i dati in tutte le colonne da colonna 9 a colonna 100;
    e tu vorresti che lo copiasse solo nella prima colonna libera?
    3) copia solo i valori e non il formato.
    e tu vorresti copiare tutto

    For colonna = 9 To 100 Step 1
    Cells(2, colonna).Select
    If Cells(2, colonna).Value = "" Then
    Intervallo.Copy Cells(2, colonna)
    Exit for
    End If
    Next

    2) Il file "Pluto" deve essere nella stessa directory del file di origine;
    Cosa intendi dire?




  • di Valeria80 (utente non iscritto) data: 07/05/2013 15:30:07

    cit" Questo è il codice, ma:
    1) mi copia i dati in tutte le colonne da colonna 9 a colonna 100;
    e tu vorresti che lo copiasse solo nella prima colonna libera? ESATTO
    3) copia solo i valori e non il formato.
    e tu vorresti copiare tutto ESATTO, VALORI E FORMATO (NON LE FORMULE)


    2) Il file "Pluto" deve essere nella stessa directory del file di origine;
    Cosa intendi dire? NEL CODICE CERCO IL FILE NELLO STESSO PATH DEL W1 (W1 IS THIS WORKBOOK) --> Set wk2 = Workbooks.Open(wk1.Path & "/" & "Pluto.xlsx"). SE IO VOLESSI SPOSTARE IL FILE PLUTO DI DESTINAZIONE IN UN'ALTRA CARTELLA, COSA DOVREI SCRIVERE?

    Grazie!




  • di totygno71 data: 07/05/2013 15:38:33

    il percorso per raggiungerlo tipo:

    Set wk2 = Workbooks.Open Filename:="\documentivaleria80Pluto.xlsx"

    ciao



  • di Valeria80 (utente non iscritto) data: 07/05/2013 15:55:56

    Esatto. Scusa non sono molto esperta di vba, il codice che ti ho inviato è frutto di ricerche su internet e modifiche da me apportate con n tentativi...

    Quindi direi che il punto 2 è risolto...



  • di Baz (utente non iscritto) data: 07/05/2013 16:17:25

    Ciao,
    provo intromettermi, sperando possa essere utile

    vedi se ti va bene
     
    'punto 1: trovo la prima colonna free della 2^ riga
    Colfree = Cells(2, 1).End(xlToRight).Column + 1
    
    
    
    'punto 2: 
    'copio i formati
    Cells(2, Colfree).PasteSpecial xlPasteFormats
    
    'copio i valori
    Cells(2, Colfree).PasteSpecial xlPasteValues



  • di Valeria80 data: 07/05/2013 16:49:40

    Risolto!

    Grazie mille Baz e totygno71.

    Allego il codice completo, per altri utenti interessati (ho inserito 9 nella riga Colfree = sh2.Cells(2, 9).End(xlToRight).Column + 1
    perchè nel mio caso le prime 9 colonne devono essere escluse).

    Grazie ancora e buona giornata
    Valeria
     
    Sub Esporta_Report()
    
        Dim wk1 As Workbook
        Dim wk2 As Workbook
        Dim sh1 As Worksheet
        Dim sh2 As Worksheet
    Dim Intervallo As Range
    On Error GoTo RigaErrore
    Application.ScreenUpdating = False
    SProteggi_File
       
        Set wk1 = ThisWorkbook
        Set wk2 = Workbooks.Open(wk1.Path & "/" & "Pluto.xlsx")
        Set sh1 = wk1.Worksheets("Forecast")
        Set sh2 = wk2.Worksheets("Report")
        Set Intervallo = sh1.Range("I2:i67")
        
    x = MsgBox("Sta per essere estratto il Report. Procedere?", vbYesNo)
    If x = vbYes Then
    
    Intervallo.Copy
    Colfree = sh2.Cells(2, 9).End(xlToRight).Column + 1
    Cells(2, Colfree).PasteSpecial xlPasteFormats
    Cells(2, Colfree).PasteSpecial xlPasteValues
    
        wk2.Save
        wk2.Close
        Application.CutCopyMode = False
    
      MsgBox "Report con dati consuntivi creato correttamente", vbInformation
    
    RigaChiusura:
        
        Set sh2 = Nothing
        Set sh1 = Nothing
        Set wk1 = Nothing
        Set wk2 = Nothing
        Exit Sub
    
    RigaErrore:
        MsgBox Err.Number & vbNewLine & Err.Description
        Resume RigaChiusura
    End If
    End Sub



  • di Valeria80 data: 07/05/2013 17:12:32

    Ancora una cosa: per adattare in automatico l'area di stampa ("allungandola" alla nuova colonna inserita) che comando devo inserire?

    Grazie, ciao
    Valeria



  • di totygno71 (utente non iscritto) data: 07/05/2013 18:10:14

    Prova così ...
     
    Intervallo.Copy
    Colfree = sh2.Cells(2, 9).End(xlToRight).Column + 1
    Cells(2, Colfree).PasteSpecial xlPasteFormats
    Cells(2, Colfree).PasteSpecial xlPasteValues
    
    'a questo punto Aggiungi
    sh2.PageSetup.PrintArea = Colfree



  • di Valeria80 (utente non iscritto) data: 08/05/2013 09:14:27

    Provato, ma mi dice "1004 Riferimento non valido". Mi apre il file Pluto, mi aggiunge la colonna, adegua l'area di stampa ma poi non riesce a salvare e chiudere il file Pluto...

    grazie, ciao
    Valeria



  • di Vecchio Frac data: 08/05/2013 10:16:19

    Non sono sicuro che davvero con quel codice ti "...adegua l'area di stampa" perchè PrintArea vuole un riferimento ad un range sottoforma di stringa (e non un numero come Colfree).
    Prova a riscrivere l'ultima riga come segue, che imposta l'area di stampa da riga 2 della colonna 9 fino a riga 67 della colonna "colfree".
     
    sh2.PageSetup.PrintArea = sh2.Range(sh2.Cells(2, 9), sh2.Cells(67, Colfree)).Address






  • di Valeria80 (utente non iscritto) data: 08/05/2013 10:29:10

    Perfetto, così funziona.

    Grazie Vecchio Frac, e ancora grazie e totygno71 e Baz per il prezioso supporto.

    Buona giornata a tutti
    Valeria



  • di Vecchio Frac data: 08/05/2013 10:49:17

    Bene.
    Se ritieni conclusa la discussione, puoi marcarla come "Risolta" spuntando la relativa casellina in una nuova risposta, grazie.





  • di Valeria80 data: 08/05/2013 10:58:24

    Mi sembrava di aver spuntato la casella, ma provvedo subito.

    Ciao