Risultati da 1 a 23 di 23

Discussione: ciclo controlla date elimina riga



  1. #1
    L'avatar di nessi
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Milano
    Età
    53
    Messaggi
    159
    Versione Office
    2013/2016
    Likes ricevuti
    3
    Likes dati
    35

    ciclo controlla date elimina riga

    Ciao buona sera a tutti,
    ho costruito la routine del file allegato che secondo le mie aspettative dovrebbe controllare con un ciclo su tutte le celle contenute nella colonna D che contiene una data se è inferiore a quella indicata nella cella V1 dovrebbe cancellarmi tutta la riga.
    Inutile dire che non mi funziona.

    potete dargli un occhio e dirmi dove ho sbagliato?

    come sempre, grazie in anticipo.
    File Allegati File Allegati

  2. #2
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3212
    Versione Office
    Excel2010
    Likes ricevuti
    625
    Likes dati
    155

    Re: ciclo controlla date elimina riga

    Ciao
    cambia il ciclo in questo modo e ti accorgerai tu stesso perchè "sembra" non funzionare. La macro funziona, solo che dopo aver eliminato una riga, passa alla successiva che, essendone stata eliminata una non è la successiva di 1 bensì di 2 righe.
    Secondo me dovresti cambiare il ciclo all'incontrario (partendo dal basso) oppure mettere le date in ordine inverso (dalla più recente alla meno recente).

    Codice: 
    For Each cell In rng
       If cell.Value <= Range("V1").Value Then
            cell.Select
            Stop
            cell.EntireRow.Delete
        End If
    Next
    Ciao,
    Mario

  3. #3

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6798
    Versione Office
    2013
    Likes ricevuti
    720
    Likes dati
    164

    Re: ciclo controlla date elimina riga

    Mario ma per partire dal basso occorre usare un ciclo For Next e non For Each è corretto?

    Alfredo

  4. #4
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3340
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49

    Re: ciclo controlla date elimina riga

    ciao a tutti

    questo è il "codice" :

    Codice: 
    
    Sub Annullati()
    
    
    Dim rng As Long
    Dim i As Integer
    
    
    Sheets("Riepilogo").Select
    rng = Range("D" & Rows.Count).End(xlUp).Row
    For i = rng To 2 Step -1
        If Range("D" & i).Value <= Range("V1").Value Then
            Range("D" & i).EntireRow.Delete
        End If
    Next
    
    
    MsgBox "Fatto"
    
    
    End Sub

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  5. #5
    L'avatar di nessi
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Milano
    Età
    53
    Messaggi
    159
    Versione Office
    2013/2016
    Likes ricevuti
    3
    Likes dati
    35

    Re: ciclo controlla date elimina riga

    grazie a tutti per le risposte.
    Ma se cancello una riga nondovrebbe riprendere da quell che si trova subito dopo?
    comunque credo di aver appreso la lezione.

    grazie mille per gli aiuti!

  6. #6
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3340
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49

    Re: ciclo controlla date elimina riga

    Citazione Originariamente Scritto da nessi Visualizza Messaggio
    grazie a tutti per le risposte.
    Ma se cancello una riga nondovrebbe riprendere da quell che si trova subito dopo?
    comunque credo di aver appreso la lezione.

    grazie mille per gli aiuti!

    for each cella in rng
    una volta che ha eseguito l'operazione su quella cella, il for va alla riga successiva (next) mentre in effetti si rimane sulla stessa riga in quanto (come ha detto Mario) quella esaminata è stata eliminata

    Infatti usando la tua routine vengono eliminate la metà delle righe che dovrebbero esser eliminate

    esempio :

    for each cella in rng
    siamo sulla cella 6 e si verifica la condizione quindi viene eliminata la riga 6
    next (cella diventa 7 ma in realtà sei sempre sulla riga 6)

    spero di essere riuscito a spiegarmi

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  7. #7
    L'avatar di nessi
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Milano
    Età
    53
    Messaggi
    159
    Versione Office
    2013/2016
    Likes ricevuti
    3
    Likes dati
    35

    Re: ciclo controlla date elimina riga

    Citazione Originariamente Scritto da Baloon_50 Visualizza Messaggio
    for each cella in rng
    una volta che ha eseguito l'operazione su quella cella, il for va alla riga successiva (next) mentre in effetti si rimane sulla stessa riga in quanto (come ha detto Mario) quella esaminata è stata eliminata

    Infatti usando la tua routine vengono eliminate la metà delle righe che dovrebbero esser eliminate

    esempio :

    for each cella in rng
    siamo sulla cella 6 e si verifica la condizione quindi viene eliminata la riga 6
    next (cella diventa 7 ma in realtà sei sempre sulla riga 6)

    spero di essere riuscito a spiegarmi
    assolutamente si, grazie mille Baloon per la prcisazione. in effetti è anche logico. svista.

    solo un'ultima domanda se mi è permesso:
    se invece di cancellare la riga intera volessi cancellare solo il range sulla stessa riga compreso da colonna A a R?
    come faccio a selezionare solo il range di quella riga?
    sto tentando con gli activecell e offset ma credo siaun tentativo marchiano

  8. #8
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: ciclo controlla date elimina riga

    Citazione Originariamente Scritto da nessi Visualizza Messaggio
    se invece di cancellare la riga intera volessi cancellare solo il range sulla stessa riga compreso da colonna A a R?
    come faccio a selezionare solo il range di quella riga?
    Codice: 
    Range("A" & i & ":R" & i).Value = ""

  9. #9
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3340
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49

    Re: ciclo controlla date elimina riga

    Citazione Originariamente Scritto da nessi Visualizza Messaggio
    assolutamente si, grazie mille Baloon per la prcisazione. in effetti è anche logico. svista.

    solo un'ultima domanda se mi è permesso:
    se invece di cancellare la riga intera volessi cancellare solo il range sulla stessa riga compreso da colonna A a R?
    come faccio a selezionare solo il range di quella riga?
    sto tentando con gli activecell e offset ma credo siaun tentativo marchiano
    devi sostituire : Range("D" & i).EntireRow.Delete

    con : Range("A" & i & ":R" & i).Value = ""

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  10. #10
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3340
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49

    Re: ciclo controlla date elimina riga

    ops scusa ggratis non avevo visto la tua risposta (non avevo fatto il refresh)

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  11. #11
    L'avatar di nessi
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Milano
    Età
    53
    Messaggi
    159
    Versione Office
    2013/2016
    Likes ricevuti
    3
    Likes dati
    35

    Re: ciclo controlla date elimina riga

    grazie mille ad entrambi ggratis e Baloon!

  12. #12
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: ciclo controlla date elimina riga

    figurati Balon_50...
    anzi ne approfitto perché mi sto incartando con questa:

    Codice: 
    SSub Macro2()    Application.ScreenUpdating = False
        ActiveSheet.Range(Range("A1"), Range("$A$1").End(xlToRight)).AutoFilter Field:=4, Criteria1:="<" & Range("V1").Value, Operator:=xlAnd
        ActiveSheet.Range(Range("D2"), Range("$D$2").End(xlDown)).SpecialCells(xlCellTypeVisible).EntireRow.Delete
        ActiveSheet.Range(Range("A1"), Range("$A$1").End(xlToRight)).AutoFilter
        Application.ScreenUpdating = True
    End Sub
    il concetto è filtro i valori con data minore di quella riportata in V1, li seleziono li cancello e tolgo il filtro...

    questo perché è sicuramente più veloce

    saluti
    gg
    Ultima modifica fatta da:ggratis; 11/08/16 alle 00:23 Motivo: modificata la macro per generalizzare la selezione delle celle visibili

  13. #13
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: ciclo controlla date elimina riga

    trovata la soluzione, era un problema di formato della data:

    quindi per eliminare le righe:
    Codice: 
    Sub Macro2()
        Application.ScreenUpdating = False
        ActiveSheet.Range(Range("A1"), Range("$A$1").End(xlToRight)).AutoFilter Field:=4, Criteria1:= _
        "<" & Format(Range("V1").Value, "mm/dd/yy"), Operator:=xlAnd
        ActiveSheet.Range(Range("D2"), Range("$D$2").End(xlDown)).SpecialCells(xlCellTypeVisible).EntireRow.Delete
        ActiveSheet.Range(Range("A1"), Range("$A$1").End(xlToRight)).AutoFilter
        Application.ScreenUpdating = True
    End Sub
    mentre questa per eliminare soltanto le celle delle colonne A-R:

    Codice: 
    Sub Macro2()
        Application.ScreenUpdating = False
        ActiveSheet.Range(Range("A1"), Range("$A$1").End(xlToRight)).AutoFilter Field:=4, Criteria1:= _
        "<" & Format(Range("V1").Value, "mm/dd/yy"), Operator:=xlAnd
    '    ActiveSheet.Range(Range("D2"), Range("$D$2").End(xlDown)).SpecialCells(xlCellTypeVisible).EntireRow.Delete
        Intersect(Range("A:R"), ActiveSheet.Range(Range("D2"), Range("$D$2").End(xlDown)).SpecialCells(xlCellTypeVisible).EntireRow).Delete shift:=xlUp
        ActiveSheet.Range(Range("A1"), Range("$A$1").End(xlToRight)).AutoFilter
        Application.ScreenUpdating = True
    End Sub
    saluti
    gg

  14. #14
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3340
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49

    Re: ciclo controlla date elimina riga

    Citazione Originariamente Scritto da ggratis Visualizza Messaggio
    figurati Balon_50...
    anzi ne approfitto perché mi sto incartando con questa:

    Codice: 
    SSub Macro2()    Application.ScreenUpdating = False
        ActiveSheet.Range(Range("A1"), Range("$A$1").End(xlToRight)).AutoFilter Field:=4, Criteria1:="<" & Range("V1").Value, Operator:=xlAnd
        ActiveSheet.Range(Range("D2"), Range("$D$2").End(xlDown)).SpecialCells(xlCellTypeVisible).EntireRow.Delete
        ActiveSheet.Range(Range("A1"), Range("$A$1").End(xlToRight)).AutoFilter
        Application.ScreenUpdating = True
    End Sub
    il concetto è filtro i valori con data minore di quella riportata in V1, li seleziono li cancello e tolgo il filtro...

    questo perché è sicuramente più veloce

    saluti
    gg
    non gli piace questa riga :

    ActiveSheet.Range(Range("A1"), Range("$A$1").End(xlToRight)).AutoFilter Field:=4, Criteria1:="<" & Range("V1").Value, Operator:=xlAnd

    è come se non trovasse il criterio anche se guardando nel filtro è impostato

    domani sono fuori ma domani sera vedo di capire com'è la cosa (se prima non si fa vivo qualcun altro eheehhe)

    adesso vado a nanna - buonanotte

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  15. #15
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3340
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49

    Re: ciclo controlla date elimina riga

    più che non piacergli, non trova il criterio perchè usando altri valori funziona. Molto probabilmente bisogna verificare il formato data.

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  16. #16
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: ciclo controlla date elimina riga

    ciao Balon prova con il codice che ho aggiornato nello stesso messaggio. Funziona! Funziona meno quello che opera solo sulle celle A-R; continua a cancellare l'intera riga.
    Comunque si, era un problema di formato della data.

    Saluti
    GG

    Inviato dal mio GT-I9105P utilizzando Tapatalk

  17. #17
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3340
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49

    Re: ciclo controlla date elimina riga

    Citazione Originariamente Scritto da ggratis Visualizza Messaggio
    ciao Balon prova con il codice che ho aggiornato nello stesso messaggio. Funziona! Funziona meno quello che opera solo sulle celle A-R; continua a cancellare l'intera riga.
    Comunque si, era un problema di formato della data.

    Saluti
    GG

    Inviato dal mio GT-I9105P utilizzando Tapatalk
    Ciao gg non posso fare prove sono da cellulare
    Prova a togliere entire.row

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  18. #18
    L'avatar di nessi
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Milano
    Età
    53
    Messaggi
    159
    Versione Office
    2013/2016
    Likes ricevuti
    3
    Likes dati
    35

    Re: ciclo controlla date elimina riga

    anch'io ho sempre dei problemi con i formati data, e non solo nei filtri. cerco di cavarmela gestendo le estrazioni delle tabelle dai vari database in formato testo perchè se trasformo i valori in data poi finisce sempre con l'invertirmi dd e mm tra loro.
    ho, per esempio, un sistemino che mi serve per inviare solleciti via mail di outlook che finisco sempre con editarlo a mano nella mail prodotta perchè non ne vengo a capo.
    qui sono stato costretto a trasformare le date in tali perchè, ovviamente, in formato testo non funzionerebbe.

  19. #19
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: ciclo controlla date elimina riga

    @nessi (saluti)
    qui per la tua prima domanda (cancellazione intera riga) fa quello che deve, per la seconda (cancellazione celle e traslazione in su delle rimanenti, posto che siano ordinate, altrimenti non è possibile) funziona un po meno

    @baloon_50
    non credo sia quello il problema, quel .EntireRow mi serve per l'intersezione riga colonna, poi c'è un .Delete shift:=xlUp
    Intersect(Range("A:R"), ActiveSheet.Range(Range("D2"), Range("$D$2").End(xlDown)).SpecialCells(xlCellTypeVisible).EntireRow).Delete shift:=xlUp
    saluti
    gg


  20. #20
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: ciclo controlla date elimina riga

    Citazione Originariamente Scritto da ggratis Visualizza Messaggio
    mentre questa per eliminare soltanto le celle delle colonne A-R:
    Codice: 
    Sub Macro2()
        Application.ScreenUpdating = False
        ActiveSheet.Range(Range("A1"), Range("$A$1").End(xlToRight)).AutoFilter Field:=4, Criteria1:= _
        "<" & Format(Range("V1").Value, "mm/dd/yy"), Operator:=xlAnd
    '    ActiveSheet.Range(Range("D2"), Range("$D$2").End(xlDown)).SpecialCells(xlCellTypeVisible).EntireRow.Delete
        Intersect(Range("A:R"), ActiveSheet.Range(Range("D2"), Range("$D$2").End(xlDown)).SpecialCells(xlCellTypeVisible).EntireRow).Delete shift:=xlUp
        ActiveSheet.Range(Range("A1"), Range("$A$1").End(xlToRight)).AutoFilter
        Application.ScreenUpdating = True
    End Sub
    saluti
    gg
    Per cancellare solo le celle delle colonne A-R che rispettano i criteri di filtraggio, la macro va scritta così:
    Codice: 
    Sub Macro2()
        Application.ScreenUpdating = False
        ActiveSheet.Range(Range("A1"), Range("$A$1").End(xlToRight)).AutoFilter Field:=4, Criteria1:= _
        "<" & Format(Range("V1").Value, "mm/dd/yy"), Operator:=xlAnd
        Intersect(Range("A:R"), ActiveSheet.Range(Range("D2"), Range("$D$2").End(xlDown)).SpecialCells(xlCellTypeVisible).EntireRow).Select
        ActiveSheet.Range(Range("A1"), Range("$A$1").End(xlToRight)).AutoFilter
        Selection.Delete Shift:=xlUp
        Application.ScreenUpdating = True
    End Sub
    saluti
    GG

  21. I seguenti 2 utenti hanno dato un "Like" a ggratis per questo post:


  22. #21
    L'avatar di nessi
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Milano
    Età
    53
    Messaggi
    159
    Versione Office
    2013/2016
    Likes ricevuti
    3
    Likes dati
    35

    Re: ciclo controlla date elimina riga

    grazie mille ggratis!

  23. #22
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: ciclo controlla date elimina riga

    Hai testo funzionano?
    Io ho fatto qualche prova e mi pare che siano velocissime...
    Saluti
    GG

    Inviato dal mio GT-I9105P utilizzando Tapatalk

  24. #23
    L'avatar di nessi
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Milano
    Età
    53
    Messaggi
    159
    Versione Office
    2013/2016
    Likes ricevuti
    3
    Likes dati
    35

    Re: ciclo controlla date elimina riga

    Citazione Originariamente Scritto da ggratis Visualizza Messaggio
    Hai testo funzionano?
    Io ho fatto qualche prova e mi pare che siano velocissime...
    Saluti
    GG

    Inviato dal mio GT-I9105P utilizzando Tapatalk
    Ciao GG scusa ma leggo solo ora. Funzionano benissimo!
    ancora grazie mille!

Discussioni Simili

  1. [Risolto] Ciclo For e Quesry Web è possibile?
    Di paciola nel forum Domande su Excel VBA e MACRO
    Risposte: 14
    Ultimo Messaggio: 27/10/16, 12:49
  2. [Risolto] Controlla nelle celle via via sovrastanti ad una certa cella finché trovi una data, e riportala
    Di Pahadimas nel forum Domande su Excel in generale
    Risposte: 22
    Ultimo Messaggio: 17/10/16, 20:40
  3. Velocizzare un ciclo FOR
    Di follaro nel forum Domande su Excel VBA e MACRO
    Risposte: 19
    Ultimo Messaggio: 12/01/16, 10:29
  4. Risposte: 6
    Ultimo Messaggio: 11/12/15, 12:07
  5. VBA elimina i duplicati
    Di Gerardo Zuccalà nel forum Domande su Excel VBA e MACRO
    Risposte: 17
    Ultimo Messaggio: 17/07/15, 20:32

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •