Condividi:        

Macro Copia Incolla

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 Copia Incolla

Postdi Palpaba » 20/04/15 00:53

Buongiorno a tutti,mi servirebbe aiuto per una Macro che sto facendo. Un comando che faccia in modo tale che ogni volta che eseguo la Macro metta il risultato in una determinata casella. E' un pò complicato da spiegare, in poche parole:
-copio i dati che mi servono
-li copio in una determinata cella in Excel
-faccio partire la Macro
-la Macro fa quel che deve fare ( trasporre, modifica dati, formattazione caratteri ecc....)
-ora ho bisogno che mi incolli in B6

La volta successiva che eseguo il tutto con nuovi dati ho bisogno che li metta in B7, altri B8, successivi B9 e così via.....sono tanti

Spero di essere riuscito a spiegarmi e che mi possiate aiutare grazie.

Ora è così


Codice: Seleziona tutto
Sub Macro1()
'
' Macro1 Macro
'

'
    Range("H104:H112").Select
    Selection.Copy
    Range("I104").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
    Application.CutCopyMode = False
    Selection.Cut Destination:=Range("B96:J96")
    Range("J96").Select
    ActiveWindow.SmallScroll Down:=-9
    Selection.Cut Destination:=Range("Q96")
    Range("I96").Select
    Selection.Cut Destination:=Range("O96")
    Range("H96").Select
    Selection.Cut Destination:=Range("M96")
    Range("G96").Select
    Selection.Cut Destination:=Range("K96")
    Range("F96").Select
    Selection.Cut Destination:=Range("I96")
    Range("E96").Select
    Selection.Cut Destination:=Range("G96")
    Range("D96").Select
    Selection.Cut Destination:=Range("E96")
    Range("B96:R96").Select
    Selection.Copy
    ActiveWindow.SmallScroll Down:=-96
    Range("B6").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        True, Transpose:=False
    Range("N2").Select
End Sub



EDIT Flash: modificato titolo ("Aiuto per macro" non significava nulla)
N.B i codici macro e formule vanno iscritte nel tag Code (invece che grassetto)
Palpaba
Newbie
 
Post: 7
Iscritto il: 20/04/15 00:39

Sponsor
 

Re: Macro Copia Incolla

Postdi ricky53 » 20/04/15 16:13

Ciao,
non entro troppo nel codice (potrebbe essere ottimizzato) e vediamo subito come ottenere quello che ti occorre, in caso penseremo dopo al'ottimizzazione

Allora sostituisci
Codice: Seleziona tutto
    Range("B96:R96").Select
    Selection.Copy
    ActiveWindow.SmallScroll Down:=-96
    Range("B6").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        True, Transpose:=False
    Range("N2").Select


con le seguenti istruzioni
Codice: Seleziona tutto
    Range("B96:R96").Select
    Selection.Copy
    UR = Range("B" & Rows.Count).End(xlUp).Row + 1
    Range("B" & UR).Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        True, Transpose:=False
    Range("N2").Select
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 Copia Incolla

Postdi Palpaba » 20/04/15 18:06

Ciao, purtroppo non va, l'unica cosa che fa è che crea una doppia copiatura in B96 e B97. Vorrei inserire il nuovo allegato ma non trovo come si faccia
Palpaba
Newbie
 
Post: 7
Iscritto il: 20/04/15 00:39

Re: Macro Copia Incolla

Postdi Anthony47 » 20/04/15 23:31

Per capire bene come calcolare la "riga successiva" e' utile avere un esempio reali di file; vedi qui per come fare ad allegarlo: viewtopic.php?f=26&t=103893&p=605487#p605487

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19215
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro Copia Incolla

Postdi Palpaba » 20/04/15 23:49

Ecco uppato

http://www.filedropper.com/oeirasmacro

Copio i dati in H104, faccio partire la macro e me li mette in B6, poi ho i bisogno che coi dati successivi che copierò in H104 me li metta in B7 poi B8 B9 e così via. Invece come è adesso la macro copia sempre e solo in B6 :(
Palpaba
Newbie
 
Post: 7
Iscritto il: 20/04/15 00:39

Re: Macro Copia Incolla

Postdi Anthony47 » 21/04/15 00:16

Immagino che parli dei dati in Foglio2...
Purtroppo non e' tutto stato chiarito, in particolare con quel "ho bisogno che coi dati successivi che copierò in H104 me li metta in B7 poi B8 B9 e così via" si arrivera' (prima o poi) alla riga 89, che contiene qualcosa che forse deve essere preservato, e poi alla riga 96, che contiene i dati da copiare...
Nell' ipotesi che l'area da coprire vada da B6 a B87 massimo allora potresti sostituire, nella macro di Ricky, la riga
UR = Range("B" & Rows.Count).End(xlUp).Row + 1
con
Codice: Seleziona tutto
UR = Range("B88").End(xlUp).Row + 1 : if UR<6 the UR=6

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19215
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro Copia Incolla

Postdi Palpaba » 21/04/15 14:32

Sì scusate parlo del Foglio 2, e se ci sono più dati posso aggiungere righe ( in effetti dovrebbero essere un centinaio almeno )

Comunque ho provato anche sostituendo quella riga nella MAcro di Ricky ma ora esce "Errore di Compilazione Errore di Sintassi"
Palpaba
Newbie
 
Post: 7
Iscritto il: 20/04/15 00:39

Re: Macro Copia Incolla

Postdi Anthony47 » 21/04/15 19:56

ho provato anche sostituendo quella riga nella Macro di Ricky ma ora esce "Errore di Compilazione Errore di Sintassi"
Infatti dovevo scrivere THEN non THE...
Pero' quando arriverai a "un centinaio di righe" avrai invaso le >89, in cui al momento sono presenti /scrivi /copi dati; insomma e' lodevole procedere con una macro registrata, pero' forse e' meglio partire da cosa vuoi ottenere e riorganizzare l' area dei dati. Quindi ti aspettiamo con quel tipo di descrizione.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19215
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro Copia Incolla

Postdi Palpaba » 22/04/15 01:13

L'ho rifatto tutto "a mano" e questo è il risultato

http://www.filedropper.com/bucarestdoppio2

Ho dovuto ovviare facendo una Macro che prende in valori in G152 , li porta in B147 come desidero e li copia, e poi "a mano" li ho incollati saltando le celle vuote da B6 in giù :-? Di meglio da solo non sono riuscito :undecided:

L'ideale sarebbe per la prossima volta copiare una sfilza di dati come ho messo d'esempio nel Foglio 2 e me li formatta tutti come voglio nella tabella in Foglio 1 :)
Palpaba
Newbie
 
Post: 7
Iscritto il: 20/04/15 00:39

Re: Macro Copia Incolla

Postdi Anthony47 » 22/04/15 12:15

Non sono certo di aver compreso il tuo ultimo messaggio. Comunque se ti interessa copiare ogni blocco di Foglio2 in coda a quanto presente in Foglio1 allora ti potrebbe interessare una macro come questa:
Codice: Seleziona tutto
Sub NewLine()
Dim myArr, myNext As Long, I As Long, myComp As Long, myLB As Long
'
myArr = Selection.Value
With Sheets("Foglio 1")
    myNext = .Cells(130, 2).End(xlUp).Row + 1
    If myNext < 6 Then myNext = 6
    myLB = LBound(myArr, 1)
    For I = 0 To UBound(myArr, 1)
        If I + myLB > UBound(myArr, 1) Then Exit For
        If I > 0 Then myComp = 1
        .Cells(myNext, 2 + I * 2 - myComp).Value = myArr(I + myLB, 1)
    Next I
End With
End Sub
Seleziona in "Foglio 2" il blocco di dati da copiare in "Foglio 1", poi lancia la macro NewLine.
Presuppone che la tabella in Foglio 1 sia gia' impostata, e che tale tabella possa arrivare max a riga 129, e che le colonne di servizio abbiano gia' le formule.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19215
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro Copia Incolla

Postdi Palpaba » 23/04/15 18:54

Anthony47 ha scritto:Non sono certo di aver compreso il tuo ultimo messaggio. Comunque se ti interessa copiare ogni blocco di Foglio2 in coda a quanto presente in Foglio1 allora ti potrebbe interessare una macro come questa:
Codice: Seleziona tutto
Sub NewLine()
Dim myArr, myNext As Long, I As Long, myComp As Long, myLB As Long
'
myArr = Selection.Value
With Sheets("Foglio 1")
    myNext = .Cells(130, 2).End(xlUp).Row + 1
    If myNext < 6 Then myNext = 6
    myLB = LBound(myArr, 1)
    For I = 0 To UBound(myArr, 1)
        If I + myLB > UBound(myArr, 1) Then Exit For
        If I > 0 Then myComp = 1
        .Cells(myNext, 2 + I * 2 - myComp).Value = myArr(I + myLB, 1)
    Next I
End With
End Sub
Seleziona in "Foglio 2" il blocco di dati da copiare in "Foglio 1", poi lancia la macro NewLine.
Presuppone che la tabella in Foglio 1 sia gia' impostata, e che tale tabella possa arrivare max a riga 129, e che le colonne di servizio abbiano gia' le formule.

Ciao


Ciao, grazie è già qualcosa di molto utile ;) Però non so se è voluto o meno ma comincia dalla riga 113 a inserirmeli, praticamente dove ero arrivato ovvero la 112, ma ormai li ho già inseriti tutti per questa volta. Ma se dovessi farne uno nuovo come fare per iniziare dall'inizio ovvero riga 6 ?

Comunque il TOP sarebbe una Macro come quella che hai fatto ma che li inserisca tutti uno dietro l'altro, ovvero
Foglio2 K6 fino K14 in Foglio1 riga 6
Foglio2 da K17 a K24 in Foglio1 riga 7
Foglio2 da K28 a K36 in Foglio1 riga 8
e così via

questo sarebbe il massimo :idea: meglio di quello che volevo fare io nel foglio 1 inizialmente :P
Palpaba
Newbie
 
Post: 7
Iscritto il: 20/04/15 00:39

Re: Macro Copia Incolla

Postdi Anthony47 » 26/04/15 18:57

Quella macro "accoda" il nuovo record a quelli esistenti. Se vuoi inserire l' intero blocco di dati elencati in "Foglio 2" da K6 verso il basso, NELL' IPOTESI che ogni blocco sia rigorosamente composto da 11 righe (cosa che quell' elenco non rispetta, contenendo blocchi da 4, da 10 e da 12 righe, oltre che da 11) , allora userai la seguente macro:
Codice: Seleziona tutto
Sub newblock()
Dim myArr, myNext As Long, I As Long, myComp As Long, myLB As Long
'
myArr = Sheets("Foglio 2").Range(Sheets("Foglio 2").Range("K6"), Sheets("Foglio 2").Range("K6").End(xlDown)).Value
With Sheets("Foglio 1")
    myLB = LBound(myArr, 1)
    For J = 0 To UBound(myArr, 1)
    myNext = .Cells(130, 2).End(xlUp).Row + 1
    If myNext < 6 Then myNext = 6
    If myNext > 130 Then Exit For
        For I = 0 To 8
            If J + I + myLB > UBound(myArr, 1) Then Exit For
            If I > 0 Then myComp = 1 Else myComp = 0
            .Cells(myNext, 2 + I * 2 - myComp).Value = myArr(I + myLB + J, 1)
        Next I
        J = J + 10
    Next J
End With
End Sub

La macro volutamente non cancella record gia' presenti in Foglio 1, dovrai farlo a mano.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19215
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro Copia Incolla

Postdi Palpaba » 29/04/15 19:34

Anthony47 ha scritto:Quella macro "accoda" il nuovo record a quelli esistenti. Se vuoi inserire l' intero blocco di dati elencati in "Foglio 2" da K6 verso il basso, NELL' IPOTESI che ogni blocco sia rigorosamente composto da 11 righe (cosa che quell' elenco non rispetta, contenendo blocchi da 4, da 10 e da 12 righe, oltre che da 11) , allora userai la seguente macro:
Codice: Seleziona tutto
Sub newblock()
Dim myArr, myNext As Long, I As Long, myComp As Long, myLB As Long
'
myArr = Sheets("Foglio 2").Range(Sheets("Foglio 2").Range("K6"), Sheets("Foglio 2").Range("K6").End(xlDown)).Value
With Sheets("Foglio 1")
    myLB = LBound(myArr, 1)
    For J = 0 To UBound(myArr, 1)
    myNext = .Cells(130, 2).End(xlUp).Row + 1
    If myNext < 6 Then myNext = 6
    If myNext > 130 Then Exit For
        For I = 0 To 8
            If J + I + myLB > UBound(myArr, 1) Then Exit For
            If I > 0 Then myComp = 1 Else myComp = 0
            .Cells(myNext, 2 + I * 2 - myComp).Value = myArr(I + myLB + J, 1)
        Next I
        J = J + 10
    Next J
End With
End Sub

La macro volutamente non cancella record gia' presenti in Foglio 1, dovrai farlo a mano.

Ciao


Ho provato a modificare il numero delle righe (11) ma non ci sono riuscito. Cmq ora avevo un altro elenco da 111 dati e l'ho fatto usando questa Marcro, copiando tutti e 111 in Foglio2 e poi eliminando o aggiungendo righe in modo tale che fossero 11 per blocco per poi lanciare la Macro :) Sempre meglio che farlo blocco per blocco come Macro Newline :P Altre idee per velocizzare non me ne vengono in mente, intanto ti ringrazio enormemente :) :) :)
Palpaba
Newbie
 
Post: 7
Iscritto il: 20/04/15 00:39


Torna a Applicazioni Office Windows


Topic correlati a "Macro Copia Incolla":


Chi c’è in linea

Visitano il forum: Nessuno e 23 ospiti