[Risolto] Aiuto per una macro copia righe tra 2 fogli

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
DanLau
Messaggi: 45
Iscritto il: lunedì 14 novembre 2016, 9:52

[Risolto] Aiuto per una macro copia righe tra 2 fogli

Messaggio da DanLau »

Ciao a tutti, vorrei chiedere un'aiuto per una macro, premetto che non sono in grado di svilupparla.
Avrei bisogno di copiare la righe delle colonne A e B dal foglio2 ed accodarle alla fine dei dati presenti nel foglio1, in modo automatizzato con una macro, ecco i dettagli:
Nel foglio2 chiamato "product.supplierinfo" ho la colonna A (Codice prodotto fornitore), colonna B (ID) e colonna C (Da copiare).
Le righe contrassegnate dalla X nella colonna C sono quelle interessate nella copia. Le colonne A e B, sono quelle che contengono i valori da copiare.
Ho quindi bisogno di copiare colonna A e B foglio product.supplierinfo, e incollarli nel foglio1 "LISTINO" in coda alla fine dei dati già presenti.
Le posizioni sono:
da product.supplierinfo colonna A, a LISTINO colonna B
da product.supplierinfo colonna B, a LISTINO colonna A
Allego file esempio.
la quantità di record presenti nei fogli sono sempre variabili, quindi anche la lunghezza delle righe con dati varia a seconda del listino pubblicato.
Gentilmente qualcuno potrebbe scrivermi il codice da poter inserire nella macro.
Grazie mille a tutti
Daniele
Allegati
Esempio.ods
(208.05 KiB) Scaricato 146 volte
Ultima modifica di DanLau il domenica 29 marzo 2020, 16:23, modificato 1 volta in totale.
OpenOffice 4.3.1 su Windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Aiuto per una macro copia righe tra 2 fogli

Messaggio da patel »

allega un file con pochi dati con la situazione di partenza e quella desiderata
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
DanLau
Messaggi: 45
Iscritto il: lunedì 14 novembre 2016, 9:52

Re: Aiuto per una macro copia righe tra 2 fogli

Messaggio da DanLau »

patel ha scritto:allega un file con pochi dati con la situazione di partenza e quella desiderata
Nuovo file, con aggiunta foglio "situazione desiderata" per spiegare il risultato finale voluto
Allegati
Esempio.ods
(12 KiB) Scaricato 152 volte
OpenOffice 4.3.1 su Windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Aiuto per una macro copia righe tra 2 fogli

Messaggio da patel »

prova questa

Codice: Seleziona tutto

sub copia

Doc = ThisComponent
Sheet1 = Doc.Sheets.GetByName("LISTINO")
Sheet = Doc.Sheets.GetByName("product.supplierinfo")
c = Sheet.createCursor
c.gotoEndOfUsedArea(false)
LastRow = c.RangeAddress.EndRow+1

c = Sheet1.createCursor
c.gotoEndOfUsedArea(false)
LastRow1 = c.RangeAddress.EndRow + 2

Range = Sheet.getCellRangeByName("A2:A" & LastRow).getDataArray
nrighe = UBound(Range()) - LBound(Range())
dRange  = Sheet1.getCellRangeByName("B" & Lastrow1 & ":B" & Lastrow1 + nrighe)
dRange.setDataArray(Range)

Range = Sheet.getCellRangeByName("B2:B" & LastRow).getDataArray
nrighe = UBound(Range()) - LBound(Range())
dRange  = Sheet1.getCellRangeByName("A" & Lastrow1 & ":A" & Lastrow1 + nrighe)
dRange.setDataArray(Range)

End Sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
DanLau
Messaggi: 45
Iscritto il: lunedì 14 novembre 2016, 9:52

Re: Aiuto per una macro copia righe tra 2 fogli

Messaggio da DanLau »

patel ha scritto:prova questa
Ciao Patel, ti ringrazio per l'aiuto.
Oggi ho provato la macro, va quasi bene.
Il funzionamento è quello voluto, però vengono copiati tutti i dati. Invece ho bisogno di copiare solamente i dati, delle righe che contengono "x" nella colonna C (foglio product.supplierinfo).
Grazie
OpenOffice 4.3.1 su Windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Aiuto per una macro copia righe tra 2 fogli

Messaggio da patel »

Non avevo letto bene

Codice: Seleziona tutto

sub copia

Doc = ThisComponent
Sheet1 = Doc.Sheets.GetByName("LISTINO")
Sheet = Doc.Sheets.GetByName("product.supplierinfo")
c = Sheet.createCursor
c.gotoEndOfUsedArea(false)
LastRow = c.RangeAddress.EndRow+1
c = Sheet1.createCursor
c.gotoEndOfUsedArea(false)
LastRow1 = c.RangeAddress.EndRow + 2
for r = 2 to LastRow
  If Sheet.getCellRangeByName("C" & r).String = "X" then
    Sheet1.getCellRangeByName("B" & Lastrow1).String = Sheet.getCellRangeByName("A" & r).String
    Sheet1.getCellRangeByName("A" & Lastrow1).String = Sheet.getCellRangeByName("B" & r).String
    Lastrow1=Lastrow1+1
  End if
next
End Sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
DanLau
Messaggi: 45
Iscritto il: lunedì 14 novembre 2016, 9:52

Re: Aiuto per una macro copia righe tra 2 fogli

Messaggio da DanLau »

patel ha scritto:Non avevo letto bene
Grazie mille per l'aiuto Patel, adesso va benissimo!
Buona giornata a tutti
OpenOffice 4.3.1 su Windows 10
Rispondi