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

Copia riga tante volte quante...

4,258 views
Skip to first unread message

DarkSide

unread,
Oct 29, 2009, 9:35:32 AM10/29/09
to
Ho la necessità di duplicare le righe di un foglio excel su un altro
tante volte quante sono le quantità presenti nel rigo stesso. Mi
spiego meglio:

Articolo.......................................Quantità
penna rossa.................................2
matita nera..................................3
.....................

devo ottenere

penna rossa
penna rossa
matita nera
matita nera
matita nera
...........................
ecc. ecc.


Mi date una mano?

Grazie

Scossa

unread,
Oct 29, 2009, 10:00:52 AM10/29/09
to
On 29 Ott, 14:35, DarkSide <massimo.donnaru...@gmail.com> wrote:
> Ho la necessità di duplicare le righe di un foglio excel su un altro
> tante volte quante sono le quantità presenti nel rigo stesso. Mi
> spiego meglio:
>

Non dai molti dettagli sulla destinazione, per cui ti do uno spunto
generico:


'====================
in un modulo standard:

Public Sub replica()

Dim shTo As Worksheet
Dim rng As Range
Dim cella As Range

Set cella = ActiveCell
Set shTo = Worksheets("Foglio2") 'da modificare col tuo
Set rng = shTo.Range("A1").Resize(cella.Offset(0, 1), 1)

rng = cella.Value

Set cella = Nothing
Set rng = Nothing

End Sub
'====================


Lanciare replica() con la cella delll'articolo voluto selezionata.


Fai sapere se hai risolto grazie.

Mauro Gamberini

unread,
Oct 29, 2009, 10:20:04 AM10/29/09
to
Ho la necessit� di duplicare le righe di un foglio excel su un altro
tante volte quante sono le quantit� presenti nel rigo stesso. Mi
spiego meglio:

Articolo.......................................Quantit�


penna rossa.................................2
matita nera..................................3
.....................

devo ottenere

penna rossa
penna rossa
*************************************

Sullo stesso rigo cosa vuol dire?
Excel ha delle *righe* che si
intersecano con delle *colonne*.
Il tuo testo � tutto nella stessa colonna?
O penne rosse e 2 sono in due colonne
diverse?

Grazie.

--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/officeit/threads

r

unread,
Oct 29, 2009, 11:49:02 AM10/29/09
to
"DarkSide" ha scritto:

> Ho la necessità di duplicare le righe di un foglio excel su un altro
> tante volte quante sono le quantità presenti nel rigo stesso. Mi
> spiego meglio:
>
> Articolo.......................................Quantità
> penna rossa.................................2
> matita nera..................................3

> ......................


>
> devo ottenere
>
> penna rossa
> penna rossa
> matita nera
> matita nera
> matita nera

> ............................


> ecc. ecc.
>
>
> Mi date una mano?

anche due :-)

Sub test()
Dim rng As Excel.Range
Dim rngD As Excel.Range
Dim i As Long, s As String, l As Long, t As Long
'[a1] cambia a seconda delle esigenze

Set rng = [a1].CurrentRegion
Debug.Print rng.Address
Set rngD = Nuovo_Range(rng.Parent.Parent, "Sviluppo_elenco")
On Error Resume Next
For i = 0 To rng.Rows.Count - 1
s = rng(1).Offset(i)
t = rng(1).Offset(i, 1).Value - 1
If t > 0 Then
For l = 0 To t
rngD.Offset(l).Value = s
Next
Set rngD = rngD.Offset(l)
End If
Next
End Sub


Function Nuovo_Range( _
Wb As Excel.Workbook, _
Optional Nome_base As _
String = "Foglio") As Excel.Range
'di Roberto Mensa - Nick r

'restituisce la cella A1 di un nuovo foglio
'il nuovo foglio viene rinominato in base
'all'argomento Nome_base

Dim b
Set Nuovo_Range = Wb.Worksheets.Add.Range("A1")

Application.ScreenUpdating = False
On Error Resume Next
Do
Err.Clear
Nuovo_Range.Parent.Name = Nome_base & b
b = b + 1
Loop While Err
Application.ScreenUpdating = True

End Function

saluti
r

--
Come e dove incollare il codice:
http://www.rondebruin.nl/code.htm

Il mio ultimo lavoro ...
http://excelvba.altervista.org/blog/index.php/Excel-VBA/UsedRange-eccezioni-e-alternative.html


DarkSide

unread,
Oct 29, 2009, 2:08:20 PM10/29/09
to
On 29 Ott, 15:20, "Mauro Gamberini"
<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> Ho la necessità di duplicare le righe di un foglio excel su un altro
> tante volte quante sono le quantità presenti nel rigo stesso. Mi
> spiego meglio:
>
> Articolo.......................................Quantità

> penna rossa.................................2
> matita nera..................................3
> .....................
>
> devo ottenere
>
> penna rossa
> penna rossa
> *************************************
>
> Sullo stesso rigo cosa vuol dire?
> Excel ha delle *righe* che si
> intersecano con delle *colonne*.
> Il tuo testo è tutto nella stessa colonna?

> O penne rosse e 2 sono in due colonne
> diverse?
>
> Grazie.
>
> --
> ---------------------------
> Mauro Gamberinihttp://www.riolab.org/http://www.maurogsc.eu/http://social.microsoft.com/Forums/it-IT/officeit/threads

Ciao. Scusami, pensavo fosse chiaro. Ho una colonna "Articolo" (ed
altre che è inutile specificare, poi cambio io) ed una colonna
"Quantità".
Poichè devo passare il magazzino ad un programma che si occupa della
stampa dei codici a barre ho bisogno di avere tante righe articoli
quante sono le quantità reali così poi potrò stampare una etichetta
per ogni rigo (e quindi averne poi per ogni pezzo realmente presente a
magazzino).

Quindi devo prendere il foglio excel originale che ha "N" righe e
crearne uno nuovo con tutte le righe originali duplicate quante volte
serve in base alla relativa colonna "Quantità".

Spero che adesso sia più chiaro :)

Cmq nel frattempo vado a testare gli altri esempi giunti.

Grazie a tutti

DarkSide

unread,
Oct 29, 2009, 3:19:09 PM10/29/09
to
> Il mio ultimo lavoro ...http://excelvba.altervista.org/blog/index.php/Excel-VBA/UsedRange-ecc...

Ciao e grazie. A funzionare funzia... quasi :)

Mi spiego meglio:

Ho notato che se ho:

Articolo...................... Quantità
Matita Rossa...............2
Penna nera..................1
Matita Verde................3

Salta il rigo a quantità 1. Difatti ottengo:

Matita Rossa
Matita Rossa
Matita Verde
Matita Verde
Matita Verde

Altro problemino (colpa mia, prima mi sono espresso male). Le colonne
sono più di due. La quantità è l'ultima colonna piena. E' possibile
modificare il codice in tal senso? Non so ancora precisamente quale
colonna sarà quella con le quantità. So solo che è l'ultima

Quindi una cosa del tipo:

Articolo...........
Colore..............ecc........ecc................Quantità


Grazie ancora

r

unread,
Oct 29, 2009, 5:25:01 PM10/29/09
to
"DarkSide" ha scritto:

> Ciao e grazie. A funzionare funzia... quasi :)

hai ragione ... c'era un errore

> Altro problemino (colpa mia, prima mi sono espresso male). Le colonne
> sono più di due.

ok quindi adatta alle tue esigenze, col_base è la colonna
dove hai i numeri ... puoi usare la lettera o il numero
di colonna ... riporto tutto il codice:

Sub test()
Dim rng As Excel.Range
Dim rngD As Excel.Range
Dim i As Long, s As String, l As Long, t As Long

Const col_base As Variant = "B" '<< da adattare alle esigenze

Set rng = [a1].CurrentRegion '[a1] cambia a seconda delle esigenze

Debug.Print rng.Address
Set rngD = Nuovo_Range(rng.Parent.Parent, "Sviluppo_elenco")
On Error Resume Next
For i = 0 To rng.Rows.Count - 1
s = rng(1).Offset(i)

t = rng(1).Offset(i, Cells(1, col_base).Column - 1).Value
If t > 0 Then
For l = 0 To t - 1

End Function

saluti
r

http://excelvba.altervista.org/blog/index.php/Excel-VBA/UsedRange-eccezioni-e-alternative.html


DarkSide

unread,
Oct 29, 2009, 10:35:06 PM10/29/09
to
> Il mio ultimo lavoro ...http://excelvba.altervista.org/blog/index.php/Excel-VBA/UsedRange-ecc...

Ciao. Grazie. Adesso l'errore delle quantità 1 non c'è più e posso
definire la colonna "Quantità". Perfetto.

Però io devo copiare tutto il rigo, non solo la prima cella. Prima per
fretta ho fatto un esempio stringato ma mi riferivo sempre (come
l'oggetto del thread) a tutto il rigo. Per essere più precisi
possibile, mi serve:

Articolo.......... Colore..............ecc................Quantità
Matita............ Rossa..............ecc.................2
Penna.............nera.................ecc.................1
Matita.............Verde...............ecc.................3

che diventi:
Matita............ Rossa..............ecc................
Matita............ Rossa..............ecc................
Penna.............nera.................ecc...............
Matita.............Verde...............ecc...............
Matita.............Verde...............ecc...............
Matita.............Verde...............ecc...............

Grazie ancora

Mauro Gamberini

unread,
Oct 30, 2009, 4:32:14 AM10/30/09
to
Per� io devo copiare tutto il rigo, non solo la prima cella. Prima per

fretta ho fatto un esempio stringato ma mi riferivo sempre (come
l'oggetto del thread) a tutto il rigo. Per essere pi� precisi
possibile, mi serve:

Articolo.......... Colore..............ecc................Quantit�
****************************************************

Un modo diverso per fare la stessa cosa.
In Foglio1 la tua tabella, in Foglio2 i dati
come li vuoi tu.

Questo il codice
da mettere in un modulo standard:

Public Sub m()

'gestione rrori
On Error GoTo RigaErrore

'dichiaro le variabili
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim lUltRiga1 As Long
Dim lUltRiga2 As Long
Dim lng1 As Long
Dim lng2 As Long
'Dim lRighe As Long

'impedisco il refresh del monitor
With Application
.ScreenUpdating = False
.CutCopyMode = False
End With

'metto il riferimento ai fogli
Set sh1 = Worksheets("Foglio1")
Set sh2 = Worksheets("Foglio2")

With sh1
'trovo l'ultima riga con
'valori della colonna A
'del Foglio1
lUltRiga1 = .Range("A" & _
.Rows.Count).End( _
xlUp).Row
'trovo la prima riga
'vuota della colonna A
'del Foglio2
lUltRiga2 = sh2.Range("A" & _
.Rows.Count).End( _
xlUp).Row
'pulisco tutte le celle del Foglio2
'a partire da A2, lasciando l'eventuale
'formattazione
sh2.Range("A2:D" & lUltRiga2).Value = ""
lUltRiga2 = 2
'ciclo le righe
For lng1 = 2 To lUltRiga1
'prendo il valore in D per il ciclo
For lng2 = 1 To .Range("D" & lng1).Value
'copio la riga dal Foglio1
'al Foglio2 in base al valore
'che ho in D
.Range("A" & lng1 & ":D" & lng1).Copy _
Destination:=sh2.Range( _
"A" & lUltRiga2)
lUltRiga2 = lUltRiga2 + 1
Next
Next
End With

'riga sempre eseguita
RigaChiusura:
'ripristino l'aggiornamento del monitor
With Application
.ScreenUpdating = True
.CutCopyMode = True
End With
'Set a Nothing delle variabili oggetto
Set sh2 = Nothing
Set sh1 = Nothing
Exit Sub

'in caso di errore
RigaErrore:
MsgBox Err.Number & vbNewLine & Err.Description
Resume RigaChiusura

End Sub


Note.

1)La mia tabella va da A a D ed il numero
di ripetizioni � in D. Modifica D con
la lettera della colonna che nella tua tabella
contiene le ripetizioni.

2)Nel caso la colonna con le ripetizioni
non sia l'ultima colonna, modifica qui:

.Range("A" & lng1 & ":D" & lng1).Copy _
Destination:=sh2.Range( _
"A" & lUltRiga2)

sostituendo a D la lettera corrispondente all'ultima colonna
(solo qui, mi raccomando!).

In pratica devo indicare in 1) *dove*(colonna) trovare le ripetizioni
e in 2) *quali* colonne copiare.

Puoi anche aggiungere nuove voci alla tabella e rilanciare la macro,
ti aggiorner� il Foglio2.

Fra pochi minuti metto l'esempio utilizzato per le prove
qui:
http://www.maurogsc.eu/esemping/databellamolterighe.zip

Grazie per l'attenzione.

--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/

http://social.microsoft.com/Forums/it-IT/excelit/threads


DarkSide

unread,
Oct 30, 2009, 5:03:38 AM10/30/09
to
On 30 Ott, 09:32, "Mauro Gamberini"
<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> Però io devo copiare tutto il rigo, non solo la prima cella. Prima per

> fretta ho fatto un esempio stringato ma mi riferivo sempre (come
> l'oggetto del thread) a tutto il rigo. Per essere più precisi
> possibile, mi serve:
>
> Articolo.......... Colore..............ecc................Quantità
> di ripetizioni è in D. Modifica D con

> la lettera della colonna che nella tua tabella
> contiene le ripetizioni.
>
> 2)Nel caso la colonna con le ripetizioni
> non sia l'ultima colonna, modifica qui:
>
>                .Range("A" & lng1 & ":D" & lng1).Copy _
>                     Destination:=sh2.Range( _
>                     "A" & lUltRiga2)
>
> sostituendo a D la lettera corrispondente all'ultima colonna
> (solo qui, mi raccomando!).
>
> In pratica devo indicare in 1) *dove*(colonna) trovare le ripetizioni
> e in 2) *quali* colonne copiare.
>
> Puoi anche aggiungere nuove voci alla tabella e rilanciare la macro,
> ti aggiornerà il Foglio2.

>
> Fra pochi minuti metto l'esempio utilizzato per le prove
> qui:http://www.maurogsc.eu/esemping/databellamolterighe.zip
>
> Grazie per l'attenzione.
>
> --
> ---------------------------
> Mauro Gamberinihttp://www.riolab.org/http://www.maurogsc.eu/http://social.microsoft.com/Forums/it-IT/excelit/threads

GRAZIEEEEEEE funziona alla grande.

Un grazie sentito anche a Roberto Mensa per il suo aiuto iniziale.

Adesso una piccola richiesta che non c'entra nulla con quanto sopra.
Ho rispolverato un pò le mie conoscenze di programmazione per tentare
di modificare il codice iniziale adattandolo alle mie esigenze ma.... :
( mi sono reso conto di essere troppo arrugginito. Mi dite dove potrei
trovare un pò di info per spraticarmi un pò? Spiegazioni comandi,
esempi, ecc.??
Così almeno poi rompo di meno :)
Grazie

r

unread,
Oct 30, 2009, 5:39:02 AM10/30/09
to
"DarkSide" ha scritto:

la tua fretta ... ??
la prossima volta usa la cortesia di perdere 10 minuti
in più te ... anzichè farli perdere inutilmente a chi ti sta
aiutando.

grazie
saluti
r

--
Come e dove incollare il codice:
http://www.rondebruin.nl/code.htm

Il mio ultimo lavoro ...

http://excelvba.altervista.org/blog/index.php/Excel-VBA/UsedRange-eccezioni-e-alternative.html

Mauro Gamberini

unread,
Oct 30, 2009, 5:41:50 AM10/30/09
to
GRAZIEEEEEEE funziona alla grande.

Un grazie sentito anche a Roberto Mensa per il suo aiuto iniziale.

************************************************

Grazie a te per il riscontro.


Mi dite dove potrei
trovare un p� di info per spraticarmi un p�? Spiegazioni comandi,
esempi, ecc.??
************************************************
Tu non rompi, anzi, aiuti noi
a *restare in allenamento* e i tuoi
post e le eventuali risposte resteranno
a disposizioni di tutti.

La guida del vb di Excel sia il tuo primo
aiuto e supporto(non sembro Mos�?... ;-))

Ti consiglio inoltre questo libro(in inglese),
vera bibbia per Excel ed il suo vb:
http://www.amazon.com/Excel-Power-Programming-Spreadsheets-Bookshelf/dp/0470044012

e questi siti
http://www.cpearson.com/Excel/MainPage.aspx
http://www.contextures.com/index.html
http://erlandsendata.no/
http://www.prodomosua.eu/
http://www.rondebruin.nl/
http://www.riolab.org/

--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/

http://social.microsoft.com/Forums/it-IT/officeit/threads

DarkSide

unread,
Oct 30, 2009, 5:52:33 AM10/30/09
to
> Il mio ultimo lavoro ...http://excelvba.altervista.org/blog/index.php/Excel-VBA/UsedRange-ecc...

???? Fretta?

Perdonami. Non volevo essere nè offensivo, nè altro. Ti ho ringraziato
per il tuo aiuto. Ho provato a modificare anche il tuo codice ma (mia
colpa) non ci ho capito nulla sulla gestione del comando range per
copiare il rigo intero. Ho cercato in giro ma mi sento vecchio oramai
per queste cose.

Te sei stato gentilissimo e ti ho pubblicamente già ringraziato. A me
serviva un pezzo di codice per un problema aziendale interno. Io ho
studiato il tuo programma modificando i cicli cercando di adattarli
(il baco delle quantità ad 1 alla fine lo avevo superato in altro
modo) ma non ci sono riuscito. Una altra persona (che ringrazio alla
stessa maniera) posta un codice che per me funge. Mi spiace che tu te
la prenda ma non era intenzionale.
Anzi ho richiesto un aiuto su dove reperire info per il futuro onde
rompere quanto meno possibile voi mostri sacri.

Spero di risentirci in toni assolutamente sereni. Io mi sento in
debito almeno di una birra (pur se virtuale) che spero tu accetterai.
Cordialissimi saluti

r

unread,
Oct 30, 2009, 6:54:01 AM10/30/09
to
"DarkSide" ha scritto:

nessuna rottura ... non era mia intenzione postare ulteriori
modifiche ... quindi fosse stato per me il discorso era già
chiuso. Mauro ha risposto ... ben per te.

nessuna polemica ... forse sono stato un po' brusco ...
preferirei dire diretto ... leggici cosa preferisci ... rimane il
consiglio ... l'analisi di un problema richiede sempre ancora
un po' di tempo dal momento in cui si è sicuri di averlo ben
inquadrato ... questo tempo è di chi fa l'analisi ... non di chi
tenta la soluzione ... il codice che ho postato risulterebbe
difficilmente adattabile alla tua esigenza di mantenimento
della formattazione ... è bene affrontarlo in modo differente
vedi soluzione postata da Mauro ... il tempo che ti ho dedicato
è stato tempo perso ... poco male ... viste le circostanze ...
ma tornando al consiglio ... in altre ti avrebbe fatto risparmiare
quattrini ...

>
> Spero di risentirci in toni assolutamente sereni. Io mi sento in
> debito almeno di una birra (pur se virtuale) che spero tu accetterai.
> Cordialissimi saluti

salute ... glu glu glu
ciao
r

--
Come e dove incollare il codice:
http://www.rondebruin.nl/code.htm

Il mio ultimo lavoro ...

http://excelvba.altervista.org/blog/index.php/Excel-VBA/UsedRange-eccezioni-e-alternative.html

Mauro Gamberini

unread,
Oct 30, 2009, 7:35:39 AM10/30/09
to
<cut>

Robby, ciao.

Quoto il fatto che l'analisi dovrebbe
farla chi domanda. E invece, di solito,
la fa chi risponde, molte volte cercando
di *interpretare* la richiesta.

Ma tieni sempre presente *dove siamo*
e il compito che avrebbe l'ng.

E cosa dovrei dire poi io!?!?
Ha usato la mia routine e la birra
l'ha offerta a te!!! 8-)

DarkSide

unread,
Oct 30, 2009, 8:40:09 AM10/30/09
to
On 30 Ott, 12:35, "Mauro Gamberini"

Alt. Hai ragione :) A te oltre la birra ci va anche una cena :) e
grazie anche per le info su dove cominciare a studiare. Gentilissimo.

Cmq. avete entrambi ragione. Rileggendo la richiesta mi sono reso
conto che dovevo essere ancora più preciso nella esposizione. Chi è
dall'altra parte deve interpretare quello che per me è scontato. Se
mai ci saranno altre necessità sarò quanto più preciso e meticoloso
possibile.

Grazie ancora di cuore a tutti.

Mauro Gamberini

unread,
Oct 30, 2009, 8:52:34 AM10/30/09
to

r

unread,
Oct 30, 2009, 10:08:06 AM10/30/09
to
"Mauro Gamberini" ha scritto:

> <cut>
>
> Robby, ciao.
>
> Quoto il fatto che l'analisi dovrebbe
> farla chi domanda. E invece, di solito,
> la fa chi risponde, molte volte cercando
> di *interpretare* la richiesta.

sarà l'effetto della birra ...
veramente ottima ... aaaaah

a dirla tutta ... rileggendo i post
DarkSide non si è spiegato poi così
male ... ho un concorso di colpa ... :-)

>
> Ma tieni sempre presente *dove siamo*
> e il compito che avrebbe l'ng.

personalmente ... nell'NG scrivo perchè
mi fa comodo ... mi tiene allenato ... ogni
tanto imparo qualcosa ... do libero sfogo
all'esibizionista che c'è in me ...

poi se fa comodo anche a chi rispondo ...
meglio così ...

del compito dell'NG non mi sono mai
preoccupato ... e non idea di quale
che sia

cerco di rispettare le regole ... sono
ospite ... saluto ... chiacchero ...
discuto ... a volte animatamente...
spesso bevo birra ... :-)

>
> E cosa dovrei dire poi io!?!?
> Ha usato la mia routine e la birra
> l'ha offerta a te!!! 8-)

piangi ... piangi ... e hai rimediato
anche una cena ... scandaloso ... :-)
saluti
r

--
Come e dove incollare il codice:
http://www.rondebruin.nl/code.htm

Il mio ultimo lavoro ...

http://excelvba.altervista.org/blog/index.php/Excel-VBA/UsedRange-eccezioni-e-alternative.html

Mauro Gamberini

unread,
Oct 30, 2009, 10:15:00 AM10/30/09
to
> del compito dell'NG non mi sono mai
> preoccupato ... e non idea di quale
> che sia
>

Neppure io, era per far scena,
per fare il figo......;-)

Ciao e buon fine settimana.

liffo...@gmail.com

unread,
Dec 3, 2015, 9:26:07 AM12/3/15
to
Salve e scusate l'ignoranza...anch'io avrei bisogno dello stesso programma, ma non ho proprio idea di dove e come realizzarlo. Potreste aiutarmi? Grazie

Vittorio

unread,
Dec 3, 2015, 2:26:58 PM12/3/15
to


ha scritto nel messaggio
news:770bc344-844b-4c2f...@googlegroups.com...

Il giorno giovedì 29 ottobre 2009 14:35:32 UTC+1, DarkSide ha scritto:
> Ho la necessità di duplicare le righe di un foglio excel su un altro
<Salve e scusate l'ignoranza...anch'io avrei bisogno dello stesso programma,
ma non ho proprio idea di dove e <come realizzarlo. Potreste aiutarmi?
Grazie

qui c'è il thread originale del 2009 con tutte le risposte e la soluzione:

https://groups.google.com/forum/#!topic/microsoft.public.it.office.excel/QO6lI7RCY68

Bruno

unread,
Dec 3, 2015, 8:03:01 PM12/3/15
to
liffo...@gmail.com submitted this idea :

> Salve e scusate l'ignoranza...anch'io avrei bisogno dello stesso programma,
> ma non ho proprio idea di dove e come realizzarlo. Potreste aiutarmi? Grazie

=====================================
Public Sub DupRows()
Dim SR As Range, TR As Range, i
Dim j As Long, k As Long
Set SR = [Q1!C1] ' Prima cella foglio sorgente
Set TR = [Q2!C1] ' prima cella foglio destinazione
Set SR = Range(SR, SR.End(xlDown))
For Each i In SR
For j = 1 To i(1, 2)
k = k + 1
TR(k) = i
Next
Next
End Sub
======================================

Bruno

liffo...@gmail.com

unread,
Dec 4, 2015, 6:08:33 AM12/4/15
to
gRAZIE A TUTTI. SONO RIUSCITA AD IMPOSTARE LA MACRO, MA HO ADESSO UN PROBLEMA CHE NON RIESCO A RISOLVERE. lA MACRO FUNZIONA E DUPLICA CORRETTAMENTE LE RIGHE NEL FOGLIO 2, MA DOVREBBE MODIFICARMI IL DATO PER LA STAMPA DELLE QUANTITà. mI SPIEGO MEGLIO:
NEL FOGLIO 1 HO NELLA COLONNA "E" UN INDICATORE CHE MI DICE SE LE QUANTITà DI QUELL'ARTICOLO ANDRANNO CONFEZIONATE SINGOLARMENTE (E QUINDI DEVO STAMPARE TANTE ETICHETTE UGUALI QUANTE SONO SONO LE QUANTITà ORDINATE, MA DOVREBBE ANCHE A QUESTO PUNTO MODIFICARE IN 1 LA QUANTITà DA STAMPARE SULL'ETICHETTA= 1 ARTICOLO PER OGNI CONFEZIONE, QUANTIOTà "X" IN UNA SOLA ETICHETTA SE IL RIFERIMENTO DICE CHE QUELLE DETERMINATE QUANTITà DI QUEL DETERMINATO ARTICOLO ANDRANNO INSERITI IN UN UNICO SACCHETTO, CON UNA SOLA ETICHETTA INDICANTE CODICE, DESCRIZIONE E Q.Tà TOTALI IN QUEL SACCO


LA MACRO IMPOSTATA è LA SEGUENTE:
For lng2 = 1 To .Range("E" & lng1).Value
'copio la riga dal Foglio1
'al Foglio2 in base al valore
'che ho in D
.Range("A" & lng1 & ":E" & lng1).Copy _
Destination:=sh2.Range( _
"A" & lUltRiga2)
lUltRiga2 = lUltRiga2 + 1
Next
Next
End With

'riga sempre eseguita
RigaChiusura:
'ripristino l'aggiornamento del monitor
With Application
.ScreenUpdating = True
.CutCopyMode = True
End With
'Set a Nothing delle variabili oggetto
Set sh2 = Nothing
Set sh1 = Nothing
Exit Sub

'in caso di errore
RigaErrore:
MsgBox Err.Number & vbNewLine & Err.Description
Resume RigaChiusura

End Sub


LA RIGA CHE MI CONFERMA LE QUANTITà PER BUSTA NEL FOGLIO 1 è LA E


SE QUALCUNO RIESCE AD AIUTARMI SAREBBE FANTASTICO

liffo...@gmail.com

unread,
Dec 4, 2015, 6:48:28 AM12/4/15
to
Il giorno giovedì 29 ottobre 2009 14:35:32 UTC+1, DarkSide ha scritto:
aLLORA, FORSE NON ERA MOLTO CHIARO IL MIO DISCORSO.
Avrei bisogno di un file excel che mi permetta di duplicare in un secondo foglio le righe "codici e le descrizioni" degli articoli in ordine in base a due criteri: le q.tà ordinate e se trattasi di articoli "s" ossia singola etichetta per singolo codice, oppure "p" unica etichetta per le quantità complessive di quel dato articolo (per intenderci, la confezione unica, quindi l'etichetta unica, conterrà tutte le quantità in ordine di quel dato codice.

pLEASE NECESSITO DI AIUTO....E GRAZIE PER LA TANTA PAZIENZA

Daniela

Vittorio

unread,
Dec 4, 2015, 11:55:41 AM12/4/15
to


ha scritto nel messaggio
news:8d003c01-b623-4ca0...@googlegroups.com...
<<pLEASE NECESSITO DI AIUTO....E GRAZIE PER LA TANTA PAZIENZA

fai un test preliminare sul valore della colonna E (se contiene "s" creo più
righe, se contiene "p" copio una sola volta la riga) , per cui il ciclo
diventa:

..............
For lng1 = 1 To lUltRiga1

If cells(lng1, 5) = "s" Then
'prendo il valore in D per il ciclo
For lng2 = 1 To Foglio1.Range("D" & lng1).Value
'copio la riga dal Foglio1 al Foglio2 in base al valore che
ho in D
Foglio1.Range("A" & lng1 & ":E" & lng1).Copy
Destination:=sh2.Range("A" & lUltRiga2)
lUltRiga2 = lUltRiga2 + 1
Next

End If
If cells(lng1, 5) = "p" Then
Foglio1.Range("A" & lng1 & ":E" & lng1).Copy
Destination:=sh2.Range("A" & lUltRiga2)
MsgBox (lUltRiga2)
lUltRiga2 = lUltRiga2 + 1
End If

Next

.................

liffo...@gmail.com

unread,
Dec 7, 2015, 10:27:17 AM12/7/15
to
Ciao Vittorio...grazie mille, ma proprio non sono capace....ho provato a modificare la macro...ma risultati errori su errori. Lo so che sto chiedendo troppo, ma potresti inviarmi la macro completa e corretta, così la devo solo salvare nel mio file...sono proprio incapace. Le colonne definitive del mio file sono le seguenti:

codice - descrizione - q.tà in ordine - tipo stampa (S oppure P)

mentre il foglio 2 dovrebbe darmi

codice descrizione q.tà in ordine q.tà nella confezione

ti prego di darmi una mano...ti sarei infinitamente grata....se preferisci potresti inviarmi il file excel direttamente sullA MIA E-MAIL: danyp...@yahoo.it.

GRAZIE GRAZIE GRAZIE

Vittorio

unread,
Dec 7, 2015, 11:52:47 AM12/7/15
to
<Ciao Vittorio...grazie mille, ma proprio non sono capace....

<codice - descrizione - q.tà in ordine - tipo stampa (S oppure P)

<mentre il foglio 2 dovrebbe darmi

<codice descrizione q.tà in ordine q.tà nella confezione



La macro è la seguente:



Public Sub m()

Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim lUltRiga1 As Long
Dim lUltRiga2 As Long
Dim lng1 As Long
Dim lng2 As Long



With Application
.ScreenUpdating = False
.CutCopyMode = False
End With


Set sh1 = Worksheets("Foglio1")
Set sh2 = Worksheets("Foglio2")

'trovo ultima riga presente nel foglio1
lUltRiga1 = Foglio1.cells(Foglio1.Rows.Count, "A").End(xlUp).Row

'pulisco tutte le celle del Foglio2 a partire da A2 fino all'ultima
riga presente, lasciando l'eventuale formattazione
sh2.Range("A2:D" & Foglio2.cells(Foglio2.Rows.Count,
"A").End(xlUp).Row).Value = ""
lUltRiga2 = 2
'ciclo le righe del foglio1
For lng1 = 1 To lUltRiga1
'verifico la quarta colonna tipo stampa
If cells(lng1, 4) = "s" Then
'prendo il valore in colonna C per il ciclo
For lng2 = 1 To Foglio1.Range("C" & lng1).Value
'copio la riga dal Foglio1 al Foglio2 in base al valore che
ho in C
Foglio1.Range("A" & lng1 & ":C" & lng1).Copy
Destination:=sh2.Range("A" & lUltRiga2)
'la quantita nella confez è pari sempre a 1 se il tipo
stampa è "s"

Foglio2.Range("D" & lUltRiga2).Value = 1
lUltRiga2 = lUltRiga2 + 1
Next

End If
If cells(lng1, 4) = "p" Then
Foglio1.Range("A" & lng1 & ":C" & lng1).Copy
Destination:=sh2.Range("A" & lUltRiga2)
'la quantita nella confez è pari alla qta in ordine se il tipo
stampa è "p"
Foglio2.Range("D" & lUltRiga2).Value = Foglio1.Range("C" &
lng1).Value
lUltRiga2 = lUltRiga2 + 1
End If

Next


RigaChiusura:
With Application
.ScreenUpdating = True
.CutCopyMode = True
End With
Set sh2 = Nothing
Set sh1 = Nothing
Exit Sub

0 new messages