Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Cancella dati

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

Cancella dati

Postdi ale42 » 19/05/14 17:27

Salve a tutti,
sono una neoiscritta in questo Forum e ho un paio di problemi che non riesco a risolvere (uno già chiesto su altro forum).
Premetto che non sono molto pratica di VBA, ed è solo da pochi mesi che lo sto usando.Quindi, non me ne volete.
Ora cerco di spiegarmi al meglio (cosa non facile). Allora, io ho un file chiamato Fatturazione Occasionali ed è così composto:
Il prmo foglio AB0 (foglio vuoto, i successivi 3 fogli sono Dati e l'ultimo AB999 (foglio vuoto).
Nello specifico così: Ab0, Archivio Fatture, Dati Fattura, Matrice, 1,2,3 ecc..., e l'ultimo AB999. (1,2,3 ecc sono Fatture)
In questo file ho un codice che a lavoro finito (cioè dopo aver inserito i dati) mi registra i dati delle Fatture, sul foglio chiamato "Archivio Fatture"
del file principale e su un file esterno chiuso chiamato "Fatturazione" foglio "Archivio Generale"..
Funziona così: il codice conta tutti i fogli (che sono Fatture) meno i primi 5 che sono dati, legge i valori contenute dalle celle specificate e registra
sul foglio principale chiamato "Archivio Fatture" e sul file esterno "Fatturazione" foglio "Archivio Generale".
In due parole, se ho nel file 15 fogli, i primi 5 sono dati e i restanti 10 sono fatture, mi registra negli archivi 10 righe con relativi dati.
Quindi, una riga per ogni fattura trovata all'interno del file.
Il problema vero e proprio è questo: se io dovessi erroneamente registrare i dati negli archivi, devo avere la possibilità
di cancellare. Es. se nel file ci sono 10 fatture, il codice deve cancellarmi 10 righe nell'Archivio Fatture del file principale e
10 righe nel file esterno chiamato "Fatturazione" foglio "Archivio Generale".
Con il codice sotto riportato sono riuscita (non so se è corretto) a cancellare le 10 righe nell'Archivio Fatture del file principale,
mentre nel file esterno "Fatturazione" foglio "Archivio Generale" me ne cancella 14 di righe invece di 10.
Sono riuscita con dei cambiamenti (e la mia scarsa conoscenza) al codice a far cancellare sul file esterno 5,14 e 15 righe ma non 10.
Non capisco cosa sbaglio e se non è troppo impegnativo, vi chiedo di darmi una mano. Non è così facile come sembra almeno per me.
Per il secondo problema, invece, non riesco a registrare la singola Fattura scelta dalla Combobox1, sul file esterno "Fatturazione"
Foglio "Archivio Generale".
Vi allego i 2 file dove è riportato nella userform1 di Fatturazione Occasionali i pulsanti in questone con spiegazione.
http://www.filedropper.com/fatturazione
http://www.filedropper.com/fattureoccasionali
Uso Excel 2010
Grazie anticipatamente a tutti coloro che vorranno aiutarmi.
Inserisco il codice di cui sopra per il primo problema.

Codice: Seleziona tutto

Dim wk1 As ThisWorkbook: Set wk1 = ThisWorkbook
On Error Resume Next
Workbooks.Open Filename:=ActiveWorkbook.Path & "\fatturazione.xlsm"
Dim wk2 As Workbook: Set wk2 = Workbooks("fatturazione.xlsm")
Dim sh2 As Worksheet: Set sh2 = wk2.Worksheets("Archivio Generale")

wk1.Activate

Dim msg, Style, title, response, MyString 'rr As Long
msg = "Vuoi eliminare dall'Archivio Fatture e da quello esterno -Archivio Generale- le ultime Fatture registrate ? "
Style = vbYesNo + vbExclamation + vbDefaultButton2
title = "ATTENZIONE !"
response = MsgBox(msg, Style, title)
If response = vbYes Then
MyString = "Yes"

Application.ScreenUpdating = False

For Each sh In wk1.Sheets

numfatt = Sheets.Count - 5
LR = Cells(Rows.Count, "A").End(xlUp).Row
If LR > 2 Then
Rows(LR - numfatt + 1 & ":" & LR).Delete
wk2.Activate
End If
wk2.Activate
Next

Application.ScreenUpdating = True 'Riaccendo lo schermo
MsgBox "Tutte le Fatture sono state eliminate...", vbInformation, ("Fatture eliminate...")
 Else
MyString = "No"
End If
wk2.Save
wk2.Close
Set wk1 = Nothing
Set wk2 = Nothing
Set sh2 = Nothing
On Error GoTo 0

ale42
Utente Junior
 
Post: 16
Iscritto il: 19/05/14 17:18

Sponsor
 

Re: Cancella dati

Postdi Anthony47 » 20/05/14 12:46

Ciao ale42, benvenuta nel forum.
Immagino che il codice che hai allegato sia scritto sul file Fatturazione Occasionali (se e' lui quello che poi chiami "file principale").
Immagino pure che in Fatturazione Occasionali hai tanti fogli quante sono le fatture compilate, piu' 5 fogli di servizio.
Se e' cosi', il loop For Each sh In wk1.Sheets /Next non ha senso (ed e' un miracolo che non ti cancella mooolte piu' righe di quanto vorresti, in posizione casuale).
Potresti sostituire tutto il suddetto ciclo con
Codice: Seleziona tutto
numfatt = wk1.Sheets.Count - 5
lr = wk1.Sheets("Archivio Fatture").Cells(Rows.Count, "A").End(xlUp).Row   'n° righe foglio attivo
If lr > (1 + numfatt) Then wk1.Sheets("Archivio Fatture").Rows(lr - numfatt + 1 & ":" & lr).Delete
lr = wk2.Sheets("Archivio Generale").Cells(Rows.Count, "A").End(xlUp).Row   'n° righe foglio attivo
If lr > (1 + numfatt) Then wk2.Sheets("Archivio Generale").Rows(lr - numfatt + 1 & ":" & lr).Delete

Ti consiglio inoltre di eliminare la riga "On Error Resume Next"

Quanto al secondo problema, non ho capito che uso dovrei fare dei due file allegati.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Cancella dati

Postdi ale42 » 21/05/14 11:20

Grazie Anthony per avermi accolta nel forum.
In riferiimento al tema di cui sopra, hai risolto un gran problema che con la mia scarsissima conoscenza, non sarei mai riuscita a risolvere. Grazie,,,

Cit.>>>Ti consiglio inoltre di eliminare la riga "On Error Resume Next"
Ho letto attentamente le tue indicazioni, perchè voglio imparare e ti chiedo, se puoi, spiegarmi il perchè (se hai tempo chiaramente).
Io pensavo che fosse importante mettere all'inizio: On Error Resume Next e alla fine On Error Goto 0. Questo perchè
ad esempio: se non si dovesse trovare all'interno della cartella il 2° file non deve andare in erroreVBA.

Cit. >>>Quanto al secondo problema, non ho capito che uso dovrei fare dei due file allegati.
I due file gli ho allegati, perchè ho visto molti post in questo forum, che li contenevano. Quindi, ho pensato di allegarli anch'io.
Tutto qui. Si vede benissimo che sei una persona molto preparata. Ti è bastato leggere il codice per capire il tutto.
1° Problema risolto!
Ps. Scusami Anthony, per il secondo problema è il caso che io apra un nuovo post? Oppure sempre qui?
Grazie
Bye alessia
ale42
Utente Junior
 
Post: 16
Iscritto il: 19/05/14 17:18

Re: Cancella dati

Postdi Anthony47 » 22/05/14 00:06

On Error Resume Next va usato solo quando sai che un certo pezzo di codice potrebbe andare in errore ma va bene lo stesso; es: vuoi eliminare il foglio "Pippo", se c' e'; invece di fare If (verifica che il foglio esiste) Then Cancella Foglio("Pippo"), fai: On Error Resume Next /Cancella Foglio("Pippo") /On Error Goto 0 Infatti la macro puo' continuare anche se il foglio Pippo gia' mancava.

Tu dici "se non si dovesse trovare all'interno della cartella il 2° file non deve andare in erroreVBA", pero' On Error Resume Next fa procedere la macro come se il file esistesse e fosse stato aperto: ti sembra che il risultato possa essere lo stesso "buono"?
Devi invece imparare a controllare prima se certe cose possono fallire (es controllare che il file esista prima di provare ad aprirlo) oppure a inserire una routine di gestione errore (On Error Goto XYZ); cose che farai con un po' di pratica e tanto uso dell' help on line del vba (una vera miniera di informazioni e di esempi).

Quando al "secondo problema" la cosa piu' semplice e' che apri una nuova discussione ad hoc.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Cancella dati

Postdi ale42 » 22/05/14 16:43

Grazie Anthony,
sei stato molto gentile.
Infatti, quel pochino che ho imparato è stato frutto della guida di excel, ricerche in rete. Non immaginavo di poter arrivare a combinare qualcosa in pochissimo tempo. Questo dovuto alla mia non conoscenza,oltre, lavoro e impegni familiari. La strada è lunga ma l'importante e, aver incominciato. Sono entusiasta è motivata ad andare avanti.
Questo post è stato risolto.
Grazie di tutto Anthony...
ale42
Utente Junior
 
Post: 16
Iscritto il: 19/05/14 17:18


Torna a Applicazioni Office Windows


Topic correlati a "Cancella dati":


Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti

cron