copia su altra colonna



  • copia su altra colonna
    di Traniwebdesign data: 02/08/2017 16:16:58

    Ciao a tutti e grazie anticipatamente.
    Sto lavorando su un foglio excel, nel foglio ci sono piu tab.
    ho una tab che si chiama ORDINI_DOPPI ed una tab che si chiama CARICO.
    Praticamente devo prendere tutte le celle che hanno contenuto e che stanno nella colonna AF di CARICO e copiarli ( incolonnandoli dopo l'ultima cella piena )
    nel tab ORDINI_DOPPI nella colonna A, che poi andro a metterci una formattazione condizionale per evidenziare duplicati.
    Ho modificato la query ma mi manca qualcosa.
     
    Sub WWWWWWWWW()
    ' WWWWWWWWW Macro
    
        Range("AF1:AF22").Select
        Selection.Copy
        Sheets("ORDINI_DOPPI").Select
        Range("A1").Select
        Selection.End(xlDown).Select
        Range("A4").Select
        ActiveSheet.Paste
    End Sub



  • di patel data: 02/08/2017 18:13:17

    eliminando un po' di select 
     
    Sub a()
    Sheets(1).Range("A1:A22").Copy Sheets(2).Range("A1").End(xlDown).Offset(1, 0)
    End Sub






  • di ciba data: 02/08/2017 18:18:23

    Ciao!
    Probabilmente quello è il risultato di una macro registrata.
    Infatti quel "Range("A4").Select" farà in modo che quella macro incollerà sempre a partire da quella cella indipendentemente da quante ne hai di occupate.
    Prova il codice che ti ho allegato e fammi sapere.
    Probabilmente i big del forum avranno soluzioni più precise, nel frattempo prova questa
     
    Sub Macro1()
    
    Range("AF1", Range("AF1").End(xlDown)).Copy
    Dim indice As Integer
    indice = Range("A1").End(xlDown).Row + 1
    Cells(indice, 1).PasteSpecial
    
    End Sub



  • di Traniwebdesign data: 02/08/2017 18:32:53

    HO MESSO QUESTO MA DA ERRORE RUNTIME..mah.
     
    Sheets(CARICO).Range("A1:A22").Copy Sheets(ORDINI_DOPPI).Range("A1").End(xlDown).Offset(1, 0)



  • di ciba data: 02/08/2017 18:35:44

    Prova questo
     
    Sheets("CARICO").Range("AF2", Range("AF2").End(xlDown)).Copy
    Sheets("ORDINI_DOPPI").Range("A1").End(xlDown).Offset(1, 0).PasteSpecial



  • di Traniwebdesign data: 02/08/2017 18:50:19

    allora ragazzi abbiamo ho quasi risolto.
    una cosa sola rimane....il range AF2 contiene valori che provengono da una formula, (=ANNULLA.SPAZI(DESTRA(H1;5)) che ho trascinato fino a 200 celle in basso.
    Quando la macro copia, ( giustamente ) copia anche le celle vuote che hanno una formula dentro che mi restituisce cella vuota.....
    quindi se ci sono 50 ordini e 150 celle vuote, mi copia 200 celle di cui 150 vuote.Quando vado a riesegure parte dalla cella 200....
    è possibile fare un controllo solo ad esempio se c'è piu di 1 carattare o qualcosa che indichi alla macro che deve copiare solo se effettivamente c0è valore e non cella vuote ?
    Grazie mille.



  • di ciba data: 03/08/2017 09:58:53

    Ecco allora, in questo modo copia ed incolla solo le celle non vuote.
     
    Sub ORDINIDOPPI()
    '
    ' ORDINIDOPPI Macro
    '
    Application.ScreenUpdating = False
    Dim i As Integer
    For i = 1 To 200
        If Sheets("CARICO").Cells(i, 32) <> "" Then
            Sheets("CARICO").Cells(i, 32).Copy
            Sheets("ORDINI_DOPPI").Range("A1").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
        End If
    Next i
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    End Sub



  • di Traniwebdesign (utente non iscritto) data: 03/08/2017 12:50:05


    Risolto grazie mille a tutti..ancora una volta siete stati insuperabili.
    Grazie di cuore.