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
[Risolto] Aiuto per una macro copia righe tra 2 fogli
[Risolto] Aiuto per una macro copia righe tra 2 fogli
- 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
Re: Aiuto per una macro copia righe tra 2 fogli
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
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
Re: Aiuto per una macro copia righe tra 2 fogli
Nuovo file, con aggiunta foglio "situazione desiderata" per spiegare il risultato finale volutopatel ha scritto:allega un file con pochi dati con la situazione di partenza e quella desiderata
- Allegati
-
- Esempio.ods
- (12 KiB) Scaricato 153 volte
OpenOffice 4.3.1 su Windows 10
Re: Aiuto per una macro copia righe tra 2 fogli
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
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
Re: Aiuto per una macro copia righe tra 2 fogli
Ciao Patel, ti ringrazio per l'aiuto.patel ha scritto:prova questa
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
Re: Aiuto per una macro copia righe tra 2 fogli
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
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
Re: Aiuto per una macro copia righe tra 2 fogli
Grazie mille per l'aiuto Patel, adesso va benissimo!patel ha scritto:Non avevo letto bene
Buona giornata a tutti
OpenOffice 4.3.1 su Windows 10