Ringrazio ancora TUTTI VOI.
(QUASI) ULTIMA FASE...
qui non ho idea di cosa fare ... dopo applicata la macro di lucky63 , Devo selezionare tutti i record il cui campo price sia diverso da un valore (ora ad esempio facciamo 9.9 - poi cambiero' io il valore a seconda delle necessità) , e cancellarli dal file.
Quindi di fatto mi devono rimanere solo i records con il campo price = 9.9
Importante è che da tale selezione sia esclusa la prima riga, quella che contiene release id - media condition - price ecc ecc
allegata ancora la macro di lucky63, che va perfettamente.
Ringrazio ancora chi mi aiuta, con le vostre macro sto capendo pian piano diverse istruzioni ... ma ancora sono un newbie pieno.
Grazie in anticipo
Gianni
[Risolto] Cancellare records con campo di valore diverso da
[Risolto] Cancellare records con campo di valore diverso da
- Allegati
-
- corto_ConNuovaMacro.ods
- (16.57 KiB) Scaricato 99 volte
Ultima modifica di cater58 il mercoledì 20 settembre 2017, 22:44, modificato 1 volta in totale.
Libreoffice 2.2.3 con MacOS 10.4
Re: Cancellare records con campo di valore diverso da
Fai test
Come da immagine soprastante.
Cliccando su pulsante arancione si avvia la macro che completa tutta la procedura.
Attenzione che quando viene richiesto l'inserimento "Price" deve essere effettuato utilizzando come separatore decimale il TASTO "PUNTO" della tastiera (NON quello del tastierino numerico).
[EDIT:]
A seguito riscontro errore ho ricaricato il file .ods
Cliccando su pulsante arancione si avvia la macro che completa tutta la procedura.
Attenzione che quando viene richiesto l'inserimento "Price" deve essere effettuato utilizzando come separatore decimale il TASTO "PUNTO" della tastiera (NON quello del tastierino numerico).
[EDIT:]
A seguito riscontro errore ho ricaricato il file .ods
- Allegati
-
- corto_ConMacroRiduzioneTabellaDati_e_CancellazioneRecordPrice.ods
- (17.1 KiB) Scaricato 98 volte
Re: Cancellare records con campo di valore diverso da
SICCOME NON SONO AVVEZZO A FAR FARE TUTTO E VOGLIO IMPARARE,
dopo la macro di lucky63 , che funziona egregiamente, vorrei cambiare in tutti i records (escluso il primo di intestazione) in valore del campo price (che ormai è tutto a 4.9) in "1.0"
ho aggiunto il ciclo for next che vedete in fondo al codice (SUB INSERISCI1)
perche non funziona ????
btw... non serve credo aprire un nuovo thread
grazie
gianni
dopo la macro di lucky63 , che funziona egregiamente, vorrei cambiare in tutti i records (escluso il primo di intestazione) in valore del campo price (che ormai è tutto a 4.9) in "1.0"
ho aggiunto il ciclo for next che vedete in fondo al codice (SUB INSERISCI1)
perche non funziona ????
btw... non serve credo aprire un nuovo thread
grazie
gianni
Codice: Seleziona tutto
Sub LaMacroCheMiServe
doc=thiscomponent
Sh1 = Doc.Sheets(0)
c = Sh1.createCursor
c.gotoEndOfUsedArea(false)
Rem ----- Trova ultima riga dati utili nel foglio di lavoro -----
UltimaRiga = c.RangeAddress.EndRow
REM ----- Rimozione delle colonne che inizialmente non servono -----
Sh1.Columns.removeByIndex(0, 6)
Sh1.Columns.removeByIndex(1, 1)
Sh1.Columns.removeByIndex(2, 1)
Sh1.Columns.removeByIndex(6, 4)
REM ----- Inserisci una colonna dopo la colonna "Media" (Quella che diventerà la nuova colonna "Comment") -----
Sh1.Columns.InsertByIndex(4, 1)
REM ----- Copia Intestazione da vecchia a nuova colona "Comment" ----
Sh1.getCellByPosition(4, 0).string = Sh1.getCellByPosition(2, 0).string
REM ----- Inizio Loop -----------
For Riga = 1 to UltimaRiga
REM ----- Il dato della Colonna C "Comments" Iniziale viene scritto nella Colonna "Location" (Ora colonna H) -----
Sh1.getCellByPosition(7, Riga).string = Sh1.getCellByPosition(2, Riga).string
REM ----- Nella nuova colonna "Comments" viene inserita la parola "PROVA" -----
Sh1.getCellByPosition(4, Riga).string = "PLEASE, TRY TO ORDER 4 RECORDS OR MORE, OR SHIPPING COSTS WILL BE TOO EXPENSIVE FOR YOU - REMEMBER THAT WE SHIP ONLY REGISTERED!"
Next Riga
REM ----- A trasferimento dati avvenuto Rimuovi la colonna "Comment" iniziale -----
Sh1.Columns.removeByIndex(2, 1)
REM ----- Richiama e manda in esecuzione altra macro esterna ----
CALL CancellazioneRecordPrice
CALL INSERISCI1
End Sub
Sub CancellazioneRecordPrice
doc=thiscomponent
Sh1 = Doc.Sheets(0)
c = Sh1.createCursor
c.gotoEndOfUsedArea(false)
Rem ----- Trova ultima riga dati utili nel foglio di lavoro -----
UltimaRiga = c.RangeAddress.EndRow
Rem ----- Richiesta inserimento del 'PRICE' di cui vuoi conservare i record.
RecordConPriceDaConservare = InputBox ("- Inserire il 'PRICE' di cui si vogliono conservare i record;" & CHR$(10) & "- Come separatore decimale utilizzare il PUNTO della tastiera (NON quello del Tastierino)." , "ATTENZIONE: GESTIONE RECORD PRICE")
Rem ----- In caso annullamento dell'inserimento esci dalla procedura ------
If RecordConPriceDaConservare ="" Then Exit Sub
Rem ----- Richiesta conferma di procedere ----- In caso contrario esci dalla procedura -----
If Msgbox ("- Tutti i record con 'PRICE' diverso da " & RecordConPriceDaConservare & " saranno cancellati" & CHR$(10) & "- Confermare con il tasto INVIO o il pulsante OK", 33, "ATTENZIONE: CANCELLAZIONE DATI") = 2 Then Exit Sub
Rem ----- Avvio loop per la cancellazione dei record previsti -----
For Riga = UltimaRiga To 1 Step -1
If Sh1.getCellByPosition(1, Riga).string <> RecordConPriceDaConservare then
Sh1.Rows.removeByIndex(Riga, 1)
End If
Next
End sub
Sub INSERISCI1
For Riga = 1 to UltimaRiga
Sh1.getCellByPosition(2, Riga).string = "1.0"
Next
End subLibreoffice 2.2.3 con MacOS 10.4
Re: Cancellare records con campo di valore diverso da
Ho capito di aver messo male la sub INSERISCI1...
ora funziona, pero' mi mette il valore 1.0 anche nei records precedentemente cancellati, come se ancora esistessero...
allegato il file con la modifica...
sapete dirmi qualcosa?
ora funziona, pero' mi mette il valore 1.0 anche nei records precedentemente cancellati, come se ancora esistessero...
allegato il file con la modifica...
sapete dirmi qualcosa?
Codice: Seleziona tutto
Sub LaMacroCheMiServe
doc=thiscomponent
Sh1 = Doc.Sheets(0)
c = Sh1.createCursor
c.gotoEndOfUsedArea(false)
Rem ----- Trova ultima riga dati utili nel foglio di lavoro -----
UltimaRiga = c.RangeAddress.EndRow
REM ----- Rimozione delle colonne che inizialmente non servono -----
Sh1.Columns.removeByIndex(0, 6)
Sh1.Columns.removeByIndex(1, 1)
Sh1.Columns.removeByIndex(2, 1)
Sh1.Columns.removeByIndex(6, 4)
REM ----- Inserisci una colonna dopo la colonna "Media" (Quella che diventerà la nuova colonna "Comment") -----
Sh1.Columns.InsertByIndex(4, 1)
REM ----- Copia Intestazione da vecchia a nuova colona "Comment" ----
Sh1.getCellByPosition(4, 0).string = Sh1.getCellByPosition(2, 0).string
REM ----- Inizio Loop -----------
For Riga = 1 to UltimaRiga
REM ----- Il dato della Colonna C "Comments" Iniziale viene scritto nella Colonna "Location" (Ora colonna H) -----
Sh1.getCellByPosition(7, Riga).string = Sh1.getCellByPosition(2, Riga).string
REM ----- Nella nuova colonna "Comments" viene inserita la parola "PROVA" -----
Sh1.getCellByPosition(4, Riga).string = "PLEASE, TRY TO ORDER 4 RECORDS OR MORE, OR SHIPPING COSTS WILL BE TOO EXPENSIVE FOR YOU - REMEMBER THAT WE SHIP ONLY REGISTERED!"
Next Riga
REM ----- A trasferimento dati avvenuto Rimuovi la colonna "Comment" iniziale -----
Sh1.Columns.removeByIndex(2, 1)
REM ----- Richiama e manda in esecuzione altra macro esterna ----
CALL CancellazioneRecordPrice
REM ----- INSERISCE1.0
For Riga = 1 to UltimaRiga
Sh1.getCellByPosition(1, Riga).string = "1.0"
Next Riga
End Sub
Sub CancellazioneRecordPrice
doc=thiscomponent
Sh1 = Doc.Sheets(0)
c = Sh1.createCursor
c.gotoEndOfUsedArea(false)
Rem ----- Trova ultima riga dati utili nel foglio di lavoro -----
UltimaRiga = c.RangeAddress.EndRow
Rem ----- Richiesta inserimento del 'PRICE' di cui vuoi conservare i record.
RecordConPriceDaConservare = InputBox ("- Inserire il 'PRICE' di cui si vogliono conservare i record;" & CHR$(10) & "- Come separatore decimale utilizzare il PUNTO della tastiera (NON quello del Tastierino)." , "ATTENZIONE: GESTIONE RECORD PRICE")
Rem ----- In caso annullamento dell'inserimento esci dalla procedura ------
If RecordConPriceDaConservare ="" Then Exit Sub
Rem ----- Richiesta conferma di procedere ----- In caso contrario esci dalla procedura -----
If Msgbox ("- Tutti i record con 'PRICE' diverso da " & RecordConPriceDaConservare & " saranno cancellati" & CHR$(10) & "- Confermare con il tasto INVIO o il pulsante OK", 33, "ATTENZIONE: CANCELLAZIONE DATI") = 2 Then Exit Sub
Rem ----- Avvio loop per la cancellazione dei record previsti -----
For Riga = UltimaRiga To 1 Step -1
If Sh1.getCellByPosition(1, Riga).string <> RecordConPriceDaConservare then
Sh1.Rows.removeByIndex(Riga, 1)
End If
Next
End sub- Allegati
-
- corto_ConMacroRiduzioneTabellaDati_e_CancellazioneRecordPrice (1).ods
- (17.1 KiB) Scaricato 90 volte
Libreoffice 2.2.3 con MacOS 10.4
Re: Cancellare records con campo di valore diverso da
autorisolto
la macro ancora pensava alla ultima riga settata a inizio procedura, quindi metteva 1.0 in piu fino alla vecchia ultima riga
sufficiente fargli ricalcolare la fine riga prima di sostituire price con 1.0
ok!
Gianni
la macro ancora pensava alla ultima riga settata a inizio procedura, quindi metteva 1.0 in piu fino alla vecchia ultima riga
sufficiente fargli ricalcolare la fine riga prima di sostituire price con 1.0
ok!
Gianni
Libreoffice 2.2.3 con MacOS 10.4
