Valori celle sincronizzate



  • Valori celle sincronizzate
    di Mimmo (utente non iscritto) data: 02/04/2017 10:32:59

    Salve a tutti, premetto che ho scoperto da poco il mondo del vba, e mi sto sempre più appassionando,
    cerco una soluzione per questo mio problema :
    ho un file di excel con 3 fogli, nella cella C10 di tutti e tre viene inserita manualmente una data,
    vorrei automatizzare, in modo che dopo l'inserimento del dato, a caso in una delle tre celle, anche le altre due celle, si aggiornino con lo stesso valore .
    grazie.



  • di alfrimpa data: 02/04/2017 12:13:39

    Mimmo allega un file di esempio inserendo a mano il risultato desiderato.

    Alfredo





  • di Minno (utente non iscritto) data: 02/04/2017 13:49:00

    Intanto grazie per la risposta alfrimpa,
    ti allego il file_esempio per meglio spiegare il problema.
    Leggendo nel Forum, penso di aver capito che devo sfruttare l'evento Worksheet_Change(ByVal Target As Range) di ogni foglio per lanciare una macro che legga la data scritta manualmente e la inserisca nelle altre due celle data,
    ma qui mi perdo ....



  • di Romano (utente non iscritto) data: 02/04/2017 15:03:33

    In effetti puoi fare come dici.
    All'interno dell'evento change di ogni foglio puoi inserire del codice che trascrive il valore che hai appena scritto nella cella C10 del foglio x nelle altre due celle C10 dei fogli y e z.

    Scritto al volo
    Romano
     
    55
    ' scrivi questo codice nell'evento Chang
    ' di ogni foglio
    Valore = Cells (10,3)
    If Valore <>"" Then
         Worksheets ("y").Cells (10,3)=Valore
         Worksheets ("x").Cells (10,3)=Valore
    End if     



  • di Romano (utente non iscritto) data: 02/04/2017 15:07:04

    Scusa
    Mi sono reso conto dopo che come suggerito il codice va in loop e non si ferma
    Occorre riflettere neglio



  • di alfrimpa data: 02/04/2017 17:18:16

    Mimmo non ho capito quello che vuoi fare.

    Se sul foglio1 in C10 inserisci la data cosa deve succedere sugli altri fogli?

    Alfredo





  • di Mimmo (utente non iscritto) data: 02/04/2017 18:55:44

    Grazie comunque Romano, o provato il suggerimento e come avevi previsto non funziona, anche se la strada penso sia giusta .

    Ciao alfrimpa, provo a spiegare:
    in pratica le celle C10 di tutti e tre i fogli devono essere valorizzate con la stessa data, che viene digitata indifferentemente in una delle tre celle C10
    Percui se inserisco 02/04/2015 nella cella C10 del foglio1, in automatico deve essere inserita la stessa data nelle celle C10 nel foglio2 e nel foglio3, lo stesso se inserisco la data nella cella C10 del foglio2.
    Riassumendo digitando una data in una delle tre celle C10 dei fogli 1-2-3 questa deve essere aggiornata su tutti e tre i fogli.



  • di alfrimpa data: 02/04/2017 19:40:10

    Allora è molto semplice

    Per ogni foglio devi scrivere una procedura Worksheet_Cange delimitata alla cella C10 che vada a valorizzare con il target le celle C10 degli altri due fogli.

    Dai anche uno sguardo al metodo Intersect.

    Fai attenzione a disabilitare/riabilitare gli eventi.

    Ti ho dato degli spunti; un piccolo sforzo e vedrai che ce la fai

    Alfredo





  • di romano (utente non iscritto) data: 02/04/2017 20:59:36

    Per evitare il loop dobbiamo agire diversamente;
    in ogni foglio all'interno dell'evento SelectionChange fai partire la una sub che ho chiamato "sincronizza" ma puoi cambiare;


     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    sincronizza
    End Sub
    
    Public Sub sincronizza()
    Dim i as Integer
    Dim Fgl As String
    Dim Valore As Date
    Foglio = ActiveSheet.Name
    Valore = Worksheets(Fgl).Cells(10, 3)
    For i = 1 To 3
     If Worksheets("Foglio" & i).Cells(10, 3) <> Valore Then
        Worksheets("Foglio" & i).Cells(10, 3) = Valore
    End If
    
    Next
    
    End Sub



  • di romano (utente non iscritto) data: 02/04/2017 21:03:23

    scusa ma oggi non ne azzecco una
    sostituisci la riga dove rilevo il foglio attivo con :
    fgl=Activesheet.Name



  • di Mimmo (utente non iscritto) data: 02/04/2017 22:44:31

    x Romano : sii questa volta il codice funziona alla grande ...,
    ti ringrazio per il tempo che mi hai dedicato. ciao.

    x alfrimpa ho apprezzato molto il tuo voler farmi arrivare da solo alla soluzione, infatti non ho abbandonato il tuo suggerimento anzi sto leggendo sul metodo suggerito e proverò ( ottimista ) a ottenere lo stesso automatismo con del codice diverso .
    grazie. ciao .

    saluti a tutto il forum