Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    42

    Copiare un'intera riga in excel in un altro foglio

    Buonasera,devo risolvere un problema e non conoscendo vb credo di non riuscirò a risolvere.
    In un foglio Excel n 1 ho una lista di lavori eseguiti,in una voce di ogni riga c'è la possibilità di scegliere la fase di lavorazione attraverso un elenco a tendina.se scelgo la voce chiuso mi dovrei copiare l'intera riga del foglio 1 nel foglio2 e cancellarla dal foglio 1.nel foglio 2 devono essere messe in ordine come in un elenco.si può fate?
    Grazie fin da adesso dell'aiuto

  2. #2
    Vuoi che selezionando Chiuso dal menù a tendina, faccia tutto da solo, cioè taglia e incolla della riga da un foglio all'altro?

    Qualora avessi capito male, ti suggerisco di selezionare la riga da chiudere dal foglio 1 (clic sul numero di riga nella cornice del foglio), tasto destro, Taglia, vai su foglio 2, vai nella posizione d'inserimento, clic destro sempre sulla cornice del foglio, Inserisci.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    42
    si vorrei che facesse tutto da solo
    è possibile?

  4. #4
    Ti posto una possibile soluzione che, anche se ancora da affinare, potrebbe essere un primo passo.
    Visto che vengono fatte delle cancellazioni mi raccomando di fare le prove su una copia del tuo excel per non danneggiare l’originale.

    Vai sul Foglio1, premi ALT+F11 e incolla questo codice nello spazio bianco che ti si presenta:

    codice:
    Private Sub Worksheet_Change(ByVal Target As Range)
        Colonna_Tendine = 5
        Stringa_Chiuso = "Chiuso"
        If Target.Count = 1 Then
           If Target.Column = Colonna_Tendine And Target.Value = Stringa_Chiuso Then
              Ultima = Sheets("Foglio2").Columns(Colonna_Tendine).End(xlDown).Row
              If Ultima = xlMissingItemsMax2 Then
                 Ultima = 1
              End If
              Rows(Target.Row).Copy Destination:=Sheets("Foglio2").Cells((Ultima + 1), 1)
              Rows(Target.Row).Clear
           End If
        End If
    End Sub
    In questo codice per ora devi modificare solo due cose: devi indicare nella seconda riga il numero della colonna in cui sono presenti le tendine (quelle da cui selezioni lo stato chiuso), io per far le prove ho messo la colonna 5, tu metti quella del tuo foglio. Occhio che devi impostare il numero, non la lettera quindi se le tendine sono in colonna A scrivi 1, se sono in B scrivi 2 ecc… Le mie sono in colonna E quindi ho messo 5.
    E poi devi indicare la parola esatta che indica lo stato chiuso, cioè quella che c’è nella tendina, io ho usato Chiuso ma da te protrebbe essere Finito, Concluso, Evaso o altro, non posso saperlo.

    Fatto questo dovrebbe già funzionare.

    Quello che fa è di copiare la riga su cui imposti lo stato chiuso al fondo del foglio2 e cancellarla dal foglio 1.
    Non vengono fatti ordinamenti, quelli poi li vediamo in seguito.

    C’è ancora una cosa a cui prestare attenzione:
    - Il foglio2 deve contenere qualcosa nella prima cella della colonna delle tendine (nel mio caso la E1), scrivici qualunque cosa, anche paperino se vuoi, perché se la colonna è tutta vuota lo script non riesce a determinare dove scrivere la riga che deve trasferire. Si tratta di un piccolo bug che poi magari mettiamo a posto in seguito. Per determinare la posizione in cui scrivere la riga sul secondo foglio, infatti, il procedimento è di partire dalla prima casella della colonna delle tendine e di scendere fino alla prima casella vuota. Lì viene scritta la riga.

    Non è detto che tutto funzioni subito, dipende da vari fattori fra cui per esempio la versione di Excel che usi, comunque cominciamo a provare e vediamo che succede.

    Ora vado a casa, ne riparliamo domani.

    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    42
    grazie
    la provo e poi ti faccio sapere

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    42
    Ciao ,ho provato ed è prorpio quello che cercavo io.Ora ho un solo problema,io vorrei che cancellasse oltre al cotenuto della riga anche la riga stessa cioè la deve proprio eliminare dal foglio 1 e copiarla nel foglio 2.L'ordinamento è ok così.Grazie

  7. #7
    Dovrebbe essere sufficiente sostituire Clear con Delete

    codice:
    Rows(Target.Row).Clear--> cancella la riga senza eliminarla
    Rows(Target.Row).Delete--> elimina la riga
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    42
    provato
    è tutto ok
    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.