inviare a foglio1 contenuto foglio2



  • inviare a foglio1 contenuto foglio2
    di lalabay (utente non iscritto) data: 07/04/2013 11:46:43

    Ciao,
    ho bisogno di inviare in una determinata cella del foglio1 il contenuto di una cella del foglio2.
    Non avrei difficoltà a farlo, ma ho l'esigenza che il valore inviato al foglio 1 si affianchi al contenuto della cella e non lo sovrascriva. Inoltre, mi sarebbe molto utile poter inviare dal foglio 2 il contenuto di diverse celle, ad una del foglio 1 e non una del foglio2 ad una del foglio1.
    Spero di essere stata abbastanza chiara.
    Allego un esempio
    grazie



  • di Textomb data: 07/04/2013 12:20:30

    ciao lalabay.
    riporto il codice estratto dal file che hai allegato...
    Sub VAAF1()
    Sheets("Foflio1").Select
    Range("b29").Select
    ActiveCell = ActiveCell & Sheets("foglio2").[f8]
    End Sub

    guardalo bene e dimmi tu perchè non funziona...
    Ti dico solo che hai commesso un minuscolo errore di "ortografia".



  • di totygno71 data: 07/04/2013 15:52:26

    Sheets("Foflio1").Select
    è mejo
    Sheets("Foglio1").Select

    ^_^



  • di totygno71 data: 07/04/2013 18:46:20

    che poi...
    potresti anche scrivere solo:

     
    Sub VAAF1()
    
    Sheets("Foglio1").[B29].Value = Sheets("Foglio1").[B29].Value & Sheets("Foglio2").[F8].Value
    
    End Sub



  • di lalabay (utente non iscritto) data: 11/04/2013 15:30:18

    ho corretto, e funziona, che sbadata!
    ma come posso correggere la macro in modo che se aggiungo una riga, ad esempio tra la 8 e la 9 del foglio2, svolge la stessa funzione senza andare a modificare la cella di provenienza?
    pensavo ad una macro che dica, "qualunque cosa scrivo, in qualunque parte del foglio2, aggiungilo al contenuto di questa determinata cella del foglio 1". secondo voi è possibile? Io non ci riesco.



  • di lalabay (utente non iscritto) data: 11/04/2013 15:32:05

    ho allegato il file corretto



  • di totygno71 data: 11/04/2013 15:56:13

    cit" : se aggiungo una riga, ad esempio tra la 8 e la 9 del foglio2, svolge la stessa funzione senza andare a modificare la cella di provenienza?

    risp: Che vordì?

    cit": pensavo ad una macro che dica, "qualunque cosa scrivo, in qualunque parte del foglio2, aggiungilo al contenuto di questa determinata cella del foglio 1". secondo voi è possibile?

    Risp: se è quel che penso la risposta è si, come? intercettando l'evento change del foglio2!



  • di lalabay (utente non iscritto) data: 11/04/2013 16:00:22

    scusami, non sono molto pratica, potresti farmi un esempio?



  • di Vecchio Frac data: 12/04/2013 17:37:53

    cit": pensavo ad una macro che dica, "qualunque cosa scrivo, in qualunque parte del foglio2, aggiungilo al contenuto di questa determinata cella del foglio 1".
    ---> Come dice totygno, intercettando l'evento Change del foglio2.
    L'esempio che segue va incollato nell'area codice del foglio2; la cella A1 del foglio1 viene riempita, man mano, con qualsiasi cosa si scriva in qualsiasi cella del foglio2.
    L'If iniziale è necessario per evitare un messaggio di errore nel caso si selezionino nel foglio2 più celle e si prema Canc o si scriva qualcosa; in tale caso si esce senza fare nulla.
     
    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Cells.Count > 1 Then Exit Sub
        Foglio1.[A1] = Foglio1.[A1] & Target
    End Sub






  • di lalabay (utente non iscritto) data: 13/04/2013 08:43:32

    dove trovo l'area codice del foglio 2?
    ma in questo modo, viene trasferito in foglio 1 tutto, proprio tutto, quello che scrivo in foglio2.
    Io vorrei poter decidere, il contenuto di quale cella del foglio2, inviare nella cella a1 del foglio1.
    per questo avevo pensato ad un bottoncino.



  • di Vecchio Frac data: 13/04/2013 10:21:00

    cit. " dove trovo l'area codice del foglio 2? "
    ---> Premi Alt-F11 per l'editor, Ctrl-R per la finestra progetti, cerca nell'elenco il tuo foglio2 quindi fai doppio clic su esso.
    La finestra bianca che si apre è l'area codice di quell'oggetto.

    cit. " Io vorrei poter decidere, il contenuto di quale cella del foglio2, inviare nella cella a1 del foglio1. "
    ---> Certo lo puoi fare benissimo.
    L'esempio che allego di seguito ricopia in A1 del foglio1 solo il cambiamento della cella C5 del foglio2.
    L'istruzione If Application.Intersect... dice che se il Target non coincide con la cella C5 allora esci senza fare niente.
     
    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Cells.Count > 1 Then Exit Sub
        If Application.Intersect(Target, [C5]) Is Nothing Then Exit Sub
        Foglio1.[A1] = Foglio1.[A1] & Target
    End Sub






  • di lalabay (utente non iscritto) data: 13/04/2013 12:11:58

    vediamo un pò se ho capito.
    con l'istruzione che mi hai dato:
    Option Explicit

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Application.Intersect(Target, [C5]) Is Nothing Then Exit Sub
    Foglio1.[A1] = Foglio1.[A1] & Target
    End Sub

    otterrei lo stesso risultato che con questa:

    Sub VAAF1()
    Sheets("Foglio1").Select
    Range("b29").Select
    ActiveCell = ActiveCell & Sheets("foglio2").[f8]
    End Sub


    Io avrei bisogno di eliminare quell'[f8], per capirci.




  • di Vecchio Frac data: 13/04/2013 13:27:13

    cit. " otterrei lo stesso risultato che con questa: "
    ---> Ma lalabay, no, non ottieni lo stesso risultato. Con il pezzo di codice che scrivi tu inserisci nella cella B29 del foglio1 il contenuto della cella F8 del foglio2.
    Devi cambiare il target di controllo nell'Intersect, per intenderci, e inserire il range (la cella) che intendi trasferire dal foglio2 al foglio1.






  • di lalabay (utente non iscritto) data: 13/04/2013 13:32:42

    "inserire il range (la cella) che intendi trasferire dal foglio2 al foglio1"

    Il mio problema è esattamente questo, io non vorrei essere vincolata ad un range nel foglio2



  • di lalabay (utente non iscritto) data: 13/04/2013 13:49:20

    allora, ho appena provato l'istruzione che mi hai mandato e mi ritrovo con 2 problemi a questo punto:
    1- sono sempre vincolata ad un range specifico nel foglio2
    2- quello che inserisco nel range del foglio2, si sostituisce a quello che è già inserito nel range del foglio1

    questa macro:

    Sub VAAF1()
    Sheets("Foglio1").Select
    Range("b29").Select
    ActiveCell = ActiveCell & Sheets("foglio2").[f8]
    End Sub

    fa esattamente quello che mi occorre, ha solo il difetto di vincolarmi ad un range preciso del foglio2.

    Vorrei poter inserire un dato in una cella del foglio2 e, se decido di inviare quel dato in una specifica cella del foglio1, clikko sul mio pulsantino e il gioco è fatto.
    ...sembra magia, non so se sia possibile.



  • di Vecchio Frac data: 13/04/2013 20:00:26

    C'è un po' di confusione :)

    Prima dicevi:
    cit.: "pensavo ad una macro che dica, "qualunque cosa scrivo, in qualunque parte del foglio2, aggiungilo al contenuto di questa determinata cella del foglio 1".
    Poi dicevi:
    cit. " ma in questo modo, viene trasferito in foglio 1 tutto, proprio tutto, quello che scrivo in foglio2. "

    Da qui il mio codice iniziale.

    Quindi dici:
    cit. " Io vorrei poter decidere, il contenuto di quale cella del foglio2, inviare nella cella a1 del foglio1. "

    Ed ecco il codice cambiato di conseguenza; solo quello che viene scritto in una certa cella viene trasferito nel foglio1. Nel mio esempio era C5, ma può essere benissimo F8, basta che invece che C5 scrivi F8.

    Tra parentesi, il punto 2:
    cit. " 2- quello che inserisco nel range del foglio2, si sostituisce a quello che è già inserito nel range del foglio1 "
    ---> no, col mio codice non si sostituisce ma si concatena al valore già inserito nel foglio1

    Io adesso capisco che tu non sai a priori quale cella del foglio2 deve essere ricopiata al foglio1.
    Perciò quello che chiedi si può fare solo in un modo: chiedendo all'utente se trasferire la cella del foglio2, appena cambiata, nel foglio1.

    Puoi farlo col codice che allego.
    Però è un po' noioso :)

     
    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Cells.Count > 1 Then Exit Sub
        If MsgBox("Riportare questo valore nel foglio1?", vbInformation + vbYesNo, "Conferma") = vbYes Then
            Foglio1.[A1] = Foglio1.[A1] & Target
        End If
    End Sub






  • di Vecchio Frac data: 13/04/2013 20:02:24

    In alternativa: creare uno userform modeless con il quale decidere quale dato ricopiare e dove.





  • di lalabay (utente non iscritto) data: 14/04/2013 19:15:51

    ok, hai capito esattamente cosa mi serve, ma non si potrebbe collegare ad un bottoncino? così potrei inviare il dato che mi interessa a più celle di destinazione, ovviamente ognuna collegata ad un bottoncino.



  • di Vecchio Frac data: 14/04/2013 19:59:46

    Cioè:
    - selezioni una cella qualunque del foglio2 e ci inserisci un valore
    - premi "un bottoncino"
    - il valore appena inserito si aggiunge al valore della cella A1 del foglio1

    se è così, prova il pezzo di codice che allego.
    Lo puoi associare a un "bottoncino" oppure lanciarlo con Alt-F8 e sceglierlo dall'elenco delle macro.
    In pratica siamo tornati all'idea iniziale di Textomb e totygno ^_^
     
    sub inserisci_aggiungi()
        Foglio1.[A1] = Foglio1.[A1] & Trim(ActiveCell)
    end sub






  • di lalabay (utente non iscritto) data: 15/04/2013 08:46:54

    esattamente quello che mi serviva.
    grazie mille, mi hai risolto un bel problema.