Prima copia riga poi la cancella

Anonimo
2025-03-27T08:24:26+00:00

Ciao a tutti,

Ho bisogno del vostro aiuto, per capire come riuscire ad eseguire quanto segue:

Nel Foglio1, compilo le righe dalla colonna A, alla colonna F. Possono essere centinaia le righe da compilare. Quando nella colonna E viene inserito la data, mi deve copiare la riga e incollare solo i valori nel Foglio2 a partire dalla riga 2 dalla colonna A. Una volta eseguita questa operazione, mi deve cancellare la riga copiata, dalla colonna B alla colonna F del Foglio1. Naturalmente ogni volta che copia una riga e la riporta nel Foglio2, deve aggiungerle a quelle già copiate. Mi serve come archivio. Spero di essere stato chiaro e di ricevere il vostro aiuto. Grazie di tutto.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2025-03-29T07:20:32+00:00

Ritorno ancora per dire che se la tabella archivia è posizionata in un foglio che precede quello della tabella di inserimento dati l'aggiornamento, tramite "Aggiorna tutti", viene effettuato prima per la tabella archivio, andando a prendere i dati dalla tabella inserimento prima che questa venga aggiornata con la cancellazione dei dati.

Evidentemente Excel, nel caso di tabelle presenti in diversi fogli esegue l'aggiornamento delle tabelle in base alla posizione dei fogli.

File senza macro ma con la tabella archivio un un foglio posizionato prima del foglio inserimento dati: File esempio 4 (senza macro)

ciao

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Eleuterio Tedeschi 18,590 Punti di reputazione Moderatore volontario
2025-03-27T15:52:36+00:00

Ciao Eleuterio,

Ho provato il codice. Potrebbe pure andare bene anche senza le checkbox.

Tuttavia, non deve spostare la riga ma deve copiarla.

Avevo capito copiare e poi cancellare la riga, vedo che invece vuoi solo cancellare dalla 2ª colonna in poi.

Cosa che neanche avviene.

Certo che copia:
.Range("A" & lngRow & ":F" & lngRow).Value = Target.Offset(, -4).Resize(, 6).Value

copia nel 2° foglio i dati del primo.

Sul file che hai condiviso, sempre mettendo il codice nel modulo del primo foglio e considerando la data nella colonna D come attivatore della copia, potresti usare:

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim lngRow As Long 

    If Target.Column = 4 And Target.Row > 1 And IsDate(Target.Value) Then 

        If MsgBox("Sicuro di voler copiare il codice " & Target.Offset(, -3).Value & "?", vbYesNo, "Attenzione!") = 6 Then 

            Application.EnableEvents = False 

            With Foglio2 

                lngRow = .Cells(Rows.Count, 4).End(xlUp).Row + 1 

                .Range("A" & lngRow & ":E" & lngRow).Value = Target.Offset(, -3).Resize(, 5).Value 

            End With 

            Target.Offset(, -2).Resize(, 4).ClearContents 

            Application.EnableEvents = True 

        End If 

    End If 

End Sub

Ho modificato anche la msgbox per evidenziare il numero di codice, e non la riga, da copiare,

ciao.

edit

aggiungo le prove sui codici 2 e 3:

Foglio1

Foglio2

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

19 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2025-03-27T10:28:55+00:00

    Premesso che non comprendo perché la riga da eliminare sia solo dalla colonna B e non anche dalla colonna A.

    Così rimarrebbe una riga con il solo dato di colonna A e con le altre celle vuote.

    Ho voluto provare, ma con eliminazione dell'intera riga, tramite power query cosa si potesse fare.

    Qui un file esempio: File esempio

    È presente una prima tabella vuota che mi serve come partenza e che non va compilata.

    Poi una seconda tabella "INSERIMENTO DATI" dove inserire i dati.

    Infine una seconda tabella "ARCHIVIO".

    Si compila la tabella di "INSERIMENTO DATI".

    Se non viene compilata la colonna della data (Colonna 5) e si esegue l'aggiorna tutto la tabella "ARCHIVIO" non viene popolata.

    Se nella tabella di inserimento dati viene inserita una data, la tabella archivio viene popolata dalle righe per le quali è stata inserita la data e nella tabella di inserimento dati quelle righe vengono eliminate.

    Per fare questo ci sono tre due query con richiami "ricorsivi".

    Vedi tu se ti può essere di spunto.

    ciao

    edit: in realtà le query necessarie sono solo due (una terza mi è servita solo per avere la "stringa" di origine dati utilizzata direttamente nella seconda query)

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2025-03-27T09:42:42+00:00

    Ciao Eleuterio,

    Innanzitutto grazie per per la considerazione. Me la cavo abbastanza bene con il vba. Hai ragione quando dici, che potrebbe essere rischiosa come operazione, nel momento in cui inserisco la data, e si attiva la macro. Stavo pensando di aggiungere nella colonna G delle checkbox, quando inserisco la spunta, allora viene eseguita l'operazione. Credo che questa potrebbe essere una buona soluzione.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Eleuterio Tedeschi 18,590 Punti di reputazione Moderatore volontario
    2025-03-27T09:26:18+00:00

    Ciao a tutti,

    Ho bisogno del vostro aiuto, per capire come riuscire ad eseguire quanto segue:

    Nel Foglio1, compilo le righe dalla colonna A, alla colonna F. Possono essere centinaia le righe da compilare. Quando nella colonna E viene inserito la data, mi deve copiare la riga e incollare solo i valori nel Foglio2 a partire dalla riga 2 dalla colonna A. Una volta eseguita questa operazione, mi deve cancellare la riga copiata, dalla colonna B alla colonna F del Foglio1. Naturalmente ogni volta che copia una riga e la riporta nel Foglio2, deve aggiungerle a quelle già copiate. Mi serve come archivio. Spero di essere stato chiaro e di ricevere il vostro aiuto. Grazie di tutto.

    Quello che chiedi necessita di una macro in VBA, prima di procedere con l'aiuto, devo sapere che livello di conoscenza hai di programmazione, considerando che è un'attività con qualche rischio, visto che appena inserisci un dato in E sposta la riga di dati e questo potrebbe essere un problema se viene inserita erroneamente.

    Se non hai molta dimestichezza ti consiglio di condividere un file di esempio pr calibrare il codice sulla tua realtà e non costringerti ad impegnativi adattamenti.

    Ciao.

    La risposta è stata utile?

    0 commenti Nessun commento