Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

vba copia riga e incolla in altro foglio

1,589 views
Skip to first unread message

Final Job

unread,
Sep 20, 2015, 1:03:46 PM9/20/15
to
Gentilissimi;
devo fare quanto segue:
eseguire una operazione di estrazione di dati a seguito della quale si
crea un foglio dopodichè devo poter utilizzare una macro per:

1) copiare solo le righe del foglio (nominato "articoli") nelle quali la
cella BE è piena.
2) andare nel foglio "magazzino" e incollare alla colonna C dalla prima
riga libera (che al primo incolla è la riga 5) solo i valori delle righe
individuate.

Fatto questo, potrei dover eseguire una nuova operazione di estrazione
dati e dover eseguire nuovamente la macro per la loro raccolta che poi
andranno incollati sotto ai precedenti.

mi sono arenato, da grande "esperto" quale sono, naturalmente.

Se potete ........

Grazie
Ale

Final Job

unread,
Sep 20, 2015, 1:20:25 PM9/20/15
to
dimenticavo e forse può essere utile; in entrambi i fogli, l'estensione
massima delle colonne si sviluppa per 1500 righe.
di nuovo
Buonasera

Bruno Campanini

unread,
Sep 20, 2015, 4:07:25 PM9/20/15
to
It happens that Final Job formulated :
Volere è potere!

Leggo nel foglio "Articoli" tutte le righe che hanno la
cella BE non-blank e le copio in "Magazzino".

Successivamente in "Articoli" vengono aggiunte nuove righe, quindi:
leggo in "Magazzino" quante righe sono state scritte, ottenendo
per esempio k. Poi, partendo dalla riga k+1 di "Articoli",
copio tutte le nuove righe con cella BE non-blank in "Magazzino".
Se è tutto qui è un gioco da ragazzi.

Se invece in "Articoli" è previsto che oltre all'aggiunta di
nuove righe si possano modificare ed eliminare righe già
copiate in "Magazzino", la cosa si fa ancora più semplice
eliminando tutte le volte tutte le righe scritte in "Magazzino"
e copiandovi da "Articoli" tutte le righe, dalla prima
all'ultima, aventi la cella BE non-blank.

What do you want to do?

Bruno

Final Job

unread,
Sep 20, 2015, 9:41:44 PM9/20/15
to
Grazie per la risposta:
non devo cancellare nessuna riga dal foglio "Articoli" ma solo lanciare
una macro ad ogni risultato di una ricerca.

Da questo risultato devo:
- individuare le celle BE piene
- copiare le relative righe
- incollarle in "Magazzino" ripetendo, eventualmente, l'operazione a
seguito di ricerca successiva.

Se è il primo incollaggio (passami il termine) il comando parte dalla
cella C5 mentre, se è un successivo, va fatto partire dalla prima riga
libera sempre alla colonna C.

Alla fine del tutto, la cancellazione nel foglio Magazzino delle righe
copiate avviene con altro comando (quella l'ho risolta) quindi non mi
interessa in questo momento.

Ho provato con il registratore di macro a tracciare questo benedetto
passaggio
"trova-evidenzia-trova altro-evidenzia-cerca riga dove incollare-incolla"
ma mi sono bloccato in vari passaggi, ad esempio, arrivo ad identificare
ed evidenziare la prima riga con la cella BE non blank ma poi non riesco
a mantenerla evidenziata nella ricerca della successiva. Insomma, per
farla breve.....mi servirebbe un suggerimento per buttare giù qualche
riga di codice che funzioni....

Ringrazio nuovamente per l'attenzione
Ale

Nando

unread,
Sep 21, 2015, 6:00:50 AM9/21/15
to

<<2) andare nel foglio "magazzino" e incollare alla colonna C dalla prima


Cioè vuoi incollare una riga dal foglio articoli DENTRO nella cella C5 del
foglio magazzino? O a partire dalla cella C5?

Questa sub la incolla a partire dalla cella A1 ( foglio1 è articoli ,
foglio2 è magazzino , BE = 57 ) :



Private Sub copiaarticoli()

Dim RowCount As Long
RowCount = 1

For Each Rw In Foglio1.Rows


If Not IsEmpty(Foglio1.Cells(Rw.Row, 57)) Then

Foglio1.Cells(RowCount, 1).EntireRow.Copy
Foglio2.Cells(Foglio2.Range("A1").End(xlDown).Row + 1, "A")
End If
RowCount = RowCount + 1

If RowCount > 20000 Then Exit Sub

Next

End Sub

Nando

unread,
Sep 21, 2015, 7:14:48 AM9/21/15
to


Nel caso si debba incollare nel foglio2 a partire dalla cella C5 ,
sostituisci la riga :

Foglio1.Cells(RowCount, 1).EntireRow.Copy
Foglio2.Cells(Foglio2.Range("A1").End(xlDown).Row + 1, "A")

con questa :

Foglio1.Range("A" & RowCount & ":" & "Z" & RowCount).Copy
Foglio2.Cells(Foglio2.Range("C1").End(xlDown).Row + 1, 3)




Final Job

unread,
Sep 21, 2015, 10:08:13 AM9/21/15
to
mi da errore di compilazione in più punti
ho provato a modificare ma non funziona
ciao
Alex

Nando

unread,
Sep 21, 2015, 2:09:19 PM9/21/15
to


"Final Job" ha scritto nel messaggio news:mtp309$678$1...@speranza.aioe.org...

<mi da errore di compilazione in più punti
<ho provato a modificare ma non funziona

vuoi dire che posto il codice senza averlo prima provato?

Final Job

unread,
Sep 21, 2015, 4:18:31 PM9/21/15
to
Il 21/09/2015 20:08, Nando ha scritto:
giammai!
dico che a me non funge....e il perchè dipenderà sicuramente da me ma
copiato/incollato non mi funziona!
a breve nuove notizie
Grazie
Alex

IvanDaBologna

unread,
Sep 21, 2015, 5:57:26 PM9/21/15
to
direi che copincollarlo non fa bene in questo caso.
Devi sicuramente sostituire i nomi dei due fogli (origine e copia) con i nomi reali che utilizzi....

Nando

unread,
Sep 21, 2015, 6:32:29 PM9/21/15
to


"Final Job" ha scritto nel messaggio news:mtpomi$tul$1...@speranza.aioe.org...

Il 21/09/2015 20:08, Nando ha scritto:
<giammai!
<dico che a me non funge....e il perchè dipenderà sicuramente da me ma
<copiato/incollato non mi funziona!

basta mandare a capo una istruzione (che deve rimanere su una linea intera)
per avere errore.

Esiste la toolbar debug , che esegue una istuzione alla volta, e ti dice la
riga con l'errore .

Final Job

unread,
Sep 21, 2015, 6:54:02 PM9/21/15
to
avevo sostituito il tutto ma poi ho dovuto necessariamente adattare la
mia ignoranza alla ineluttabilità dei "codici"....non so per quale
congiunzione astrale è andata.

Con l'occasione vi informo che apro una nuova discussione con oggetto
"macro per cancellare contenuto celle lentissima (ma funziona)".

Sempre se potete....siete i benvenuti.
Grazie di nuovo
Alex
0 new messages