VBA- Copia di un'unica riga da un foglio ad un altro foglio

Innanzitutto spero di non aver combinato ulteriori casini. Se ho sbagliato, ti prego di scusarmi.

Passo alla domanda.

Il codice del post linkato ( http://social.answers.microsoft.com/Forums/it-IT/officeexcelit/thread/b4a9755f-9e40-41d5-9dcc-0d27caac67ff ) è ok ma, volendo copiare solo una riga alla volta (cioè quella che "modifico" o evidenzio nel foglio1; in definitiva, quella che "voglio" io), come posso fare? Volendo modificare il codice in oggetto, come posso intervenire?

Grazie dell'attenzione.

Risposta
Risposta

Sì. È quello che vorrei, hai centrato il concetto.

Con il codice linkato (che, ripeto, è perfetto e mi è stato di molto aiuto) copio, sul foglio2, i dati e le righe filtrate. Vorrei, come hai detto tu, poter modificare una riga della tabella e quindi aggiungere solo quella riga all'altro foglio. Avrei, in questo modo, un elenco delle modifiche effettuate, e dei dati copiati, più vicino alle mie esigenze. L'ideale sarebbe che, una volta copiata la riga sul foglio2, la stessa sia cancellata dal foglio1.


Proviamo con un esempio. Nel Foglio1 ho dati che vanno da A a L. La colonna L può contenere solo(immagino con una convalida) Dimesso o In terapia. Voglio che, se modifico il dato in colonna N nel Foglio1, il contenuto della riga venga copia/incollato nella tabella del Foglio2 e contemporaneamente cancellato dal Foglio1. Questo il codice da inserire nel modulo di codice *del Foglio1*:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim sh As Worksheet
    Dim lRiga
    Set sh = ThisWorkbook.Worksheets("Foglio2")
    lRiga = sh.Range("A" & Rows.Count).End(xlUp).Row
    If Target.Cells.Count > 1 Then Exit Sub
    If Target.Column = 12 Then
        Select Case UCase(Target.Value)
            Case "DIMESSO", "IN TERAPIA"
                Me.Range(Cells(Target.Row, 1), Cells(Target.Row, 12)).Copy _
                    Destination:=sh.Range("A" & lRiga + 1)
                Me.Rows(Target.Row).EntireRow.Delete
        End Select
    End If
    Set sh = Nothing
End Sub

Ogni colta che selezionerai uno dei due valori in colonna N, avverrà quanto descritto.

NOTA. Io non controllo con questo codice se le altre celle della riga del Foglio1 contengono qualcosa, quindi se modifichi in colonna L porti comunque la riga dal Foglio1 al Foglio2. Posso controllare se tutte le celle della riga(lungo) o se determinate celle della riga sono piene. Fai sapere. Grazie.


--
La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.
--
Mauro Gamberini - Microsoft© MVP(Excel)
http://www.maurogsc.eu/
--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

1 persona ha trovato utile la risposta

·

La risposta è risultata utile?

Siamo spiacenti che questo non sia stato utile.

Ottimo. Grazie per il tuo feedback.

Quanto sei soddisfatto di questa risposta?

Grazie per il feedback, ci aiuta a migliorare il sito.

Quanto sei soddisfatto di questa risposta?

Grazie per il tuo feedback.

 
 

Informazioni domanda


Ultimo aggiornamento 18 gennaio 2024 Visualizzazioni 4.925 Si applica a: