eliminare righe da database



  • eliminare righe da database
    di volpeirrequieta (utente non iscritto) data: 21/09/2016 11:42:03

    buongiorno a tutti, avrei un quesito da porvi, mi vengo a spiegare:
    sto cercando di fare un progetto, il quale si possa lavorare tutto tramite una userform!
    ho un foglio con una tabella che uso come database
    questa tabella la carico in una listbox, da questa listbox dovrei poter eliminare le righe del database, ( più che eliminare sarebbe meglio, trasferire queste righe, in un foglio che chiamo "cestino", in modo tale da non perdere dati)

    il problema principale è un altro: dentro la userform ho messo pure una textbox e dei bottoni, per filtrare i dati!
    dopo che filtro i dati come faccio a eliminare una riga specifica di quelle selezionate?

    so di non essere stato molto chiaro, spero che qualcuno possa darmi una mano!



  • di patel data: 21/09/2016 14:27:52

    hai provato a caricare la listbox tramite rowsource ? eliminando le righe dal foglio dopo averle copiate in un altro automaticamente si eliminiano anche dalla listbox





  • di Albatros54 data: 21/09/2016 15:32:57

    prova a modificare il ciclo for come sotto.
     
    For i = C.Count To 1 Step -1
        rt = Sheets("cestino").Range("a" & Rows.Count).End(xlUp).Row + 1
            Worksheets("ELENCO").Range(Cells(C(i) + 2, "A"), Cells(C(i) + 2, "G")).Copy Worksheets("cestino").Cells(rt, 1) 
             Worksheets("ELENCO").Range(Cells(C(i) + 2, "A"), Cells(C(i) + 2, "G")).Delete xlShiftUp
        Next






  • di volpeirrequieta (utente non iscritto) data: 22/09/2016 12:08:12

    albatros54 con il tuo codice, sposto solo le righe che desidero nel "cestino" e già è un passo avanti!!
    cosi mi andrebbe bene se non dovessi effettuare le ricerche!

    patel, potresti spiegarmi meglio! :)




  • di volpeirrequieta data: 02/10/2016 10:39:41

    up



  • di patel data: 02/10/2016 11:03:12

    nelle proprietà della Listbox cerchi RowSource e inserisci il range dei dati, se non riesci allega il file
    La prossima volta stai attento al titolo, un foglio excel non è un database, per database si intende Access





  • di volpeirrequieta data: 02/10/2016 12:08:38

    ho allegato il file.. ero convinto di averlo già allegato



  • di patel data: 02/10/2016 14:00:19

    i file dopo qualche giorno vengono eliminati, quando ti ho consigliato di provare rowsource non avevo notato che vuoi anche filtrare i dati, in questo caso non credo si possa utilizzare





  • di volpeirrequieta data: 02/10/2016 17:20:45

    senza filtrare i dati mi funziona senza problemi... volevo trovare un modo che mi permetta di farlo, filtrando i dati!

    credi che esista un modo per farlo?



  • di patel data: 02/10/2016 17:45:17

    probabilmente sì, per questo ti ho consigliato di stare attento al titolo, deve rispecchiare in poche parole il problema in modo da attirare chi lo conosce, io aprirei un'altra discussione col titolo
    Eliminare righe da foglio excel tramite listbox filtrata

    P.S. l'unico modo che vedo io è di aggiungere una colonna col numero della riga (ottenuto tramite formula) ed utilizzare questo per la eliminazione.
    Dai un'occhiata anche qui h t t p://forum.masterdrive.it/excel-80/problema-filtro-listbox-85874/





  • di volpeirrequieta data: 04/10/2016 14:09:53

    e aggiungendo una colonna nel quale scrivo quale riga corrispondente è? come procedo?



  • di patel data: 04/10/2016 15:43:34

    prova il file allegato





  • di volpeirrequieta data: 04/10/2016 16:58:39

    cosi sembra che sia perfetto! :) grazie mille

    per capire! quale procedimento hai utilizzato?



  • di patel data: 04/10/2016 18:26:47

    ho inserito nella tabella una colonna con i numeri di riga, quando filtro la listbox e seleziono le righe da eliminare sulla listbox leggo i numeri di riga (che sono quelli della tabella), copio le righe nel foglio cestino e poi le elimino
     
    Private Sub CommandButtonELIMINA_Click()
    Dim I As Long, LR As Long
        Application.ScreenUpdating = False
        Dim iRisposta As Integer
    iRisposta = MsgBox("sicuro di ELIMINARE la riga selezionata ??", vbYesNo)
    If iRisposta = vbYes Then
        With Me.ListBoxELENCO
            For I = .ListCount - 1 To 0 Step -1
            If .Selected(I) Then
              LR = Sheets(3).Cells(Rows.Count, "B").End(xlUp).Row + 1 ' ultima riga del foglio cestino
              nriga = .List(I, 8) ' numero riga da eliminare che si trova nella colonna 8 della listbox
              sh2.Range("A" & nriga & ":H" & nriga).Cut Sheets(3).Cells(LR, 1) ' copio la riga nl cestino
              sh2.Rows(nriga).Delete ' la elimino dal foglio
              ListBoxELENCO.RemoveItem (I)' la elimino dalla listbox
            End If
        Next
        Application.ScreenUpdating = True
        End With
    End If
    End Sub






  • di volpeirrequieta data: 05/10/2016 15:33:32

    patel grazie mille.. sei stato fantastico come al solito.. sto provvedendo a completare la formula se ti può interessare... gli ho aggiunto che insieme alla riga spostata nel cestino, gli aggiungo, pure l'orario in cui faccio quest'operazione




  • di volpeirrequieta data: 05/10/2016 15:35:49

    mentre la formula RIF.RIGA(A92) di ogni rigo dell'elenco
    l'ho messa dentro un if, perchè mi era esteticamente brutta, ed entrava nel mio progetto originale, in conflitto per trovare la prima riga libera dell'elenco!
    =SE(B92="";"";RIF.RIGA(A92))



  • di patel data: 05/10/2016 16:17:14

    mi interessa, sarei lieto di vedere il progetto finito





  • di volpeirrequieta (utente non iscritto) data: 05/10/2016 19:58:41

    Qua non posso metterlo che é troppo pesante.. se mi mandi un e-mail te lo mando.. magari potresti dare una mano a migliorarlo!