Condividi:        

Ricerca e elimina righe su diversi fogli di lavoro

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Ricerca e elimina righe su diversi fogli di lavoro

Postdi BG66 » 20/08/16 08:09

Ciao sono un nuovo iscritto,
nel cercare la soluzione ad un mio problema, ho trovato questo vs.thread : http://www.pc-facile.com/forum/viewtopic.php?t=82459
Ma la mia necessità è leggermente diversa.
Ossia cancellare tutta la riga riferita al lavoratore (selezionato dal form presente in Anagrafica) in qualsiasi foglio si trovino escluso i fogli Dashboard e Verifica presenza.
https://www.dropbox.com/s/qa30xp9vj5...2%2B.xlsm?dl=0

Con le mie conoscenze attuali sono arrivato a creare un tasto Elimina (sempre nel form) ed un macro per la pulizia della listbox e da due fogli di lavoro ma del solo nominativo infatti lascia "briciole" in giro ( RIF#):
Codice: Seleziona tutto
Private Sub Label38_Click()
Dim Silinecek_Satir, i As Long
Dim cevap As String

If TextBox1 = "" Or TextBox2 = "" Then
Call MsgBox("Selezionare il contatto da eliminare", vbInformation, "Avviso")
Exit Sub
End If
    If ListBox1.ListIndex >= 0 Then
        cevap = MsgBox("Il contatto verrö cancellato." _
        & vbCrLf & "Vuoi procedere?", vbYesNo, "Avviso")
        If cevap = vbYes Then
           Yeni_mi = True
           Silinecek_Satir = ListBox1.ListIndex + 3
           Sheets("Anagrafica").Rows(Silinecek_Satir).Delete
           Sheets("0_Nuovo assunto").Rows(Silinecek_Satir + 2).Delete
           ListBox1.RemoveItem ListBox1.ListIndex
        End If
    End If
 End Sub


Attendo vs. indicazioni

Grazie
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Sponsor
 

Re: Ricerca e elimina righe su diversi fogli di lavoro

Postdi Anthony47 » 20/08/16 19:21

Il link dropbox risponde
Errore 404
Non troviamo ciò che stai cercando


Hai forse rimosso il file?
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Ricerca e elimina righe su diversi fogli di lavoro

Postdi BG66 » 20/08/16 20:33

BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Re: Ricerca e elimina righe su diversi fogli di lavoro

Postdi Anthony47 » 22/08/16 16:54

Trovo pericoloso lavorare con Nome & Cognome: come gestirai le omonimie?

Comunque con questa macro potrai cancellare tutte le righe che contengono il nominativo al momento selezionato, in tutti i fogli eccetto i fogli elencati in una "keeplist" (elenco di fogli da non toccare)


Codice: Seleziona tutto
Sub Remover()
Dim keepList, Nominat As String, I As Long, myF As Range, stSh As String
'
keepList = Array("Dashboard", "Verifica presenza")      '<<< L'elenco dei fogli da non modificare
'
Nominat = Selection.Value
stSh = ActiveSheet.Name
rispo = MsgBox("Nominativo selezionato: " & Nominat & vbCrLf _
    & "Per cancellare il Nominativo premi SI, altrimenti premi NO", vbYesNo)
If rispo <> vbYes Then Exit Sub
'
For I = 1 To ThisWorkbook.Worksheets.Count
    Sheets(I).Select
    If IsError(Application.Match(ActiveSheet.Name, keepList, 0)) Then
        Set myF = Cells.Find(Nominat, ActiveSheet.Range("A1"), xlValues, xlWhole)
        If Not myF Is Nothing Then
            Do
            Debug.Print ActiveSheet.Name, myF.Address
                myF.EntireRow.Delete xlUp
                Set myF = Cells.FindNext(Range("A1"))
                If myF Is Nothing Then Exit Do
            Loop
        End If
    End If
Next I
Sheets(stSh).Select
End Sub

Quanto al #RIF questo e' dovuto alle formule sbagliate che usi; ad esempio, in Dashboard - F5 usi la formula
Codice: Seleziona tutto
=SCARTO(Anagrafica!C3;CONFRONTA(Dashboard!$C$7;Cognome_Nome;0)-1;8;1;1)

E' ovvio che se in Anagrafica elimini la riga 3 allora questa formula rincitrullisce perche' Anagrafica!C3 non esiste piu'.
Userai invece
Codice: Seleziona tutto
=SCARTO(INDIRETTO("Anagrafica!C3");CONFRONTA(Dashboard!$C$7;Cognome_Nome;0)-1;8;1;1)


Tutto da collaudare rigorosamente dopo aver fatto due copie di backup del tuo file originale...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Ricerca e elimina righe su diversi fogli di lavoro

Postdi BG66 » 23/08/16 20:10

Ciao Anthony,
Trovo pericoloso lavorare con Nome & Cognome: come gestirai le omonimie?

Purtroppo non vedo soluzione diversa da lavorare sul nominativo.

Comunque con questa macro potrai cancellare tutte le righe che contengono il nominativo al momento selezionato, in tutti i fogli eccetto i fogli elencati in una "keeplist" (elenco di fogli da non toccare)

Ho agganciato la macro al tasto "Elimina 2" ma dopo aver chiesto conferma dell'eliminazione si "impalla" con le colonne e le righe che vibrano.
Cosa sbaglio?
https://www.dropbox.com/s/5vcx1nt0a7sceit/GestForm_V8Anthony.xlsm?dl=0

Grazie in anticipo per la risposta.
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Re: Ricerca e elimina righe su diversi fogli di lavoro

Postdi Anthony47 » 24/08/16 23:22

Invece del nominativo non puoi usare il CodiceFiscale?

Quanto al collaudo, con l'esito erroneo, non ho capito come l'hai fatto; ma se usi XL2013/2016 allora sappi che queste versioni non tollerano che durante l'apertura di una userform in modalita' "Modal" la selezione dei fogli venga modificata: il foglio fa finta di cambiare, ma il focus rimane sul foglio di origine con risultati imprevedibili.
Se questo e' il tuo caso (per favore indica sempre la versione in uso, vedi viewtopic.php?f=26&t=97449) la macro va modificata; pero' dovresti anche spiegare come, durante la visualizzazione della userform l'utente va a scegliere il nominativo da eliminare (la macro originale lavora sulla selezione, che a userform attiva l'utente non puo' modificare).

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Ricerca e elimina righe su diversi fogli di lavoro

Postdi BG66 » 25/08/16 11:36

Ciao Anthony,
di seguito risposte:
Anthony47 ha scritto:Invece del nominativo non puoi usare il CodiceFiscale?

Francamente non ci avevo pensato!!

Anthony47 ha scritto:.........
Quanto al collaudo, con l'esito erroneo, non ho capito come l'hai fatto; ma se usi XL2013/2016 allora sappi che queste versioni non tollerano che durante l'apertura di una userform in modalita' "Modal" la selezione dei fogli venga modificata: il foglio fa finta di cambiare, ma il focus rimane sul foglio di origine con risultati imprevedibili.
Se questo e' il tuo caso (per favore indica sempre la versione in uso, vedi viewtopic.php?f=26&t=97449) la macro va modificata;
.....

In fase di iscrizione, ho seguito le indicazioni ed in calce alla firma ho scritto excel 2010. Devo citare anche office 2010?

Anthony47 ha scritto:.........
la macro va modificata; pero' dovresti anche spiegare come, durante la visualizzazione della userform l'utente va a scegliere il nominativo da eliminare (la macro originale lavora sulla selezione, che a userform attiva l'utente non puo' modificare).

Mi posiziono sul nominativo da eliminare presente nella listbox1, i singoli campi si popolano e poi schiaccio ELIMINA che esegue la routine.

Grazie per l'aiuto e spero di aver risposto con chiarezza.
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Re: Ricerca e elimina righe su diversi fogli di lavoro

Postdi Anthony47 » 26/08/16 00:50

E' corretto come hai indicato l'ambiente in uso, non capisco come mi era sfuggito...

Il codice che ti diedi, e che tu hai inserito all'interno della Sub Label42_Click (Elimina2), prende il nominativo da eliminare dalla cella selezionata sul foglio di partenza, non dal nominativo che tu selezioni nel listbox.
A parte questa incongruenza:
-apro il tuo file
-mi segnala all'apertura che ci sono dei corsi scaduti per Super2 Daniele2; rispondo che non voglio vedere i dettagli
-vado sul foglio Anagrafica
-seleziono C4 (De Paperoni3 Paperon3); premo il pulsante Form e compare una Userform
-la selezione eventuale di un nominativo all'interno della ListBox1 compila i Textbox di dettaglio di quel nominativo (che non ha niente a che vedere col nominativo che verra' cancellato)
-premo Elimina2
-mi viene chieso se voglio proprio cancellare il nominativo De Paperoni3 Paperon3; rispondo Si
-la Sub Label42_Click si completa e restituisce l'operativita' sulla userform
-chiudo la form, controllo e non trovo in nessun foglio De Paperoni3 Paperon3

Quindi per me il comportamento e' simile alle attese; nel senso che la macro cancella il nominativo selezionato inizialmente sul foglio di partenza da tutti i fogli di lavoro (eccetto quelli in keepList)
Se tu hai un comportamento diverso devi dettagliare le prove che fai, lavorando comunque sul file pubblicato.

Se vuoi usare la selezione nella listbox invece che sul foglio, allora devi sostituire la riga Nominat = Selection.Value con
Codice: Seleziona tutto
If ListBox1.ListIndex < 0 Then Exit Sub
Nominat = Trim(ListBox1.List(ListBox1.ListIndex, 0) & " " & ListBox1.List(ListBox1.ListIndex, 1))


Quanto all'uso del CF, questo presuppone che il CF sia utilizzato sui vari fogli, mentre adesso manca.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Ricerca e elimina righe su diversi fogli di lavoro

Postdi BG66 » 26/08/16 09:24

[RISOLTO]

Con l'ultima integrazione indicatami, ti confermo che l'obiettivo è stato raggiunto. :lol:

Grazie per la disponibilità e competenza.

Alla prossima.
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Re: Ricerca e elimina righe su diversi fogli di lavoro

Postdi BG66 » 29/08/16 17:21

Ciao,
riprendo questo thread per un'integrazione.
Per aggiornare la videata nella listbox, dopo l'eliminazione di un nominativo ho usato l'espressione:
Codice: Seleziona tutto
Call. aggiorna

quindi lo script diventa:
Codice: Seleziona tutto
Private Sub Label45_Click() 'Elimina2
Dim keepList, Nominat As String, I As Long, myF As Range, stSh As String
    '
    keepList = Array("Dashboard", "Verifica presenza")      '<<< L'elenco dei fogli da non modificare
    '
    If ListBox1.ListIndex < 0 Then Exit Sub
    Nominat = Trim(ListBox1.List(ListBox1.ListIndex, 0) & " " & ListBox1.List(ListBox1.ListIndex, 1))
    stSh = ActiveSheet.Name
    rispo = MsgBox("Nominativo selezionato: " & Nominat & vbCrLf _
        & "Per cancellare il Nominativo premi SI, altrimenti premi NO", vbYesNo)
    If rispo <> vbYes Then Exit Sub
    '
    For I = 1 To ThisWorkbook.Worksheets.Count
        Sheets(I).Select
        If IsError(Application.Match(ActiveSheet.Name, keepList, 0)) Then
            Set myF = Cells.Find(Nominat, ActiveSheet.Range("A1"), xlValues, xlWhole)
            If Not myF Is Nothing Then
                Do
                Debug.Print ActiveSheet.Name, myF.Address
                    myF.EntireRow.Delete xlUp
                    Set myF = Cells.FindNext(Range("A1"))
                    If myF Is Nothing Then Exit Do
                Loop
            End If
        End If
    Next I
    Sheets(stSh).Select
  [color=#FF0000]Call .Aggiorna[/color]
   
End Sub

Ma il debug NON ha gradito. Cosa ho sbagliato?

Grazie in anticipo.
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Re: Ricerca e elimina righe su diversi fogli di lavoro

Postdi Marius44 » 29/08/16 18:44

Ciao Gene
e ci credo che non ha gradito. C'è un punto in più che gli va per traverso.
Scrivi solamente Call Aggiorna

Ciao,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: Ricerca e elimina righe su diversi fogli di lavoro

Postdi BG66 » 30/08/16 13:23

Ciao Mario,
sei onnipresente e onnisciente.:P

Grazie e alla prossima.
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44


Torna a Applicazioni Office Windows


Topic correlati a "Ricerca e elimina righe su diversi fogli di lavoro":


Chi c’è in linea

Visitano il forum: Gianca532011, Marius44 e 55 ospiti