Copia automatica



  • Copia automatica
    di Alessio (utente non iscritto) data: 10/02/2010

    Salve,
    grazie a quanti ogni giorno contribuiscono ad aiutare gli altri.
    ho un piccolo (ma per me insormontabile) problemuccio.

    praticamente ho un file totali.exe all'interno di questo file ho collegamenti ad una periferica usb dove ho un file vendite.exe

    sto usando il cerca verticale e funziona benissimo il problema è che mi visualizza i dati e a quel punto devo andarci sopra e digitare la cifra in questo modo sparisce il collegamento e rimane permanente il dato.

    domanda: avendo molti dati da trascrivere esiste la possibilità di creare una macro che quando il dato è <> da 0 in qualche maniera trasforma quel dato visivo e trovato tramite la funzione cerca verticale, in dato reale come se lo trascrivessi io?

    spero di essere stato chiaro.


    grazie



  • di Mabolsie data: 10/02/2010

    Ciao alessio
    scusa ma non ho capito perchè devi sovrascrivere la cella se il cerca.vert ti ha già insrito i valori
    una soluzione possibile sarebbe di mettere la formula in una cella nascosta e far perlevare solo il dato numerico alla cella destinataria.
    però dovrei vedere come è impostato il foglio
    per essere più preciso

    ciao max


  • ...
    di Rp71 (utente non iscritto) data: 11/02/2010

    ... mi sembra troppo stupida come soluzione ... ma a volte le cose semplici ...
    usa il "copia" e poi "incolla valori"

    bye r


  • Copia automatica
    di Alessio (utente non iscritto) data: 11/02/2010

    Praticamente sembra semplice ( e potrebbe anche esserlo), il problema è che se tolgo la chiavetta il dato "pouf" magicamente sparisce.
    quindi per farlo rimanere permanente devo andare sulla cella e scrivere il dato manualmente.

    spero di essere stato un pò più chiaro


    grazie



  • di Rp71 (utente non iscritto) data: 12/02/2010

    Allora forse ho capito male ...
    se copi il range con i risultati del cerca.vert (ctrl+c) e poi menù modifica > incolla speciale > valori > ok
    ti incolla solo il risultato del cerca.vert (cioè come se tu scrivessi a mano gli importi
    non è possibile che sparisca tutto


  • Copia automatica
    di Alessio (utente non iscritto) data: 13/02/2010

    Grazie rp71, ok funziona.
    sotto ho postato il codice che funziona su tutto il range ed è ok, solo che vorrei fare in modo che se il dato che si trova nel range è maggiore di 0 allora la esegua altrimenti no.

    sto provando ma mhhhhhhh...............

    sono sempre un pò acerbo.

    grazie






     
    Sub copia_automatica()
    
    '
        Range("J10:J39").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("A10").Select
        Application.CutCopyMode = False
    
    End Sub


  • Copia automatica
    di Alessio (utente non iscritto) data: 13/02/2010

    Ho buttato giù una bozza, ma non funziona come dovrebbe.



    grazie
     
    Sub copia_automatica()
    
    Dim i As Long
     
     For i = 10 To 39
     
     
     If Range("J" & i).Value <> 0 Then
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("A10").Select
        Application.CutCopyMode = False
    
    End If
    
    Next i
    
    End Sub
    



  • di Locate (utente non iscritto) data: 14/02/2010

    Ciao
    ho visto le tue due macro e alla prima manca il parametro di destinazione dopo selection.copy,vedi macro sotto.
    alla seconda manca sempre il parametro o la cella di destinazione e in un ciclo for i dati non vengono mai copiati e strascritti in questo modo ma prima devono essere copiati in una variabile con arrai vedi seconda macro.
    spero di essermi spiagato ma non sapendo da dove prendi i dati e dove vai a scriverli non posso fare piu' di tanto
    ciao locate
     
    Sub Macro1()
        Range("A1:A10").Select
        Selection.Copy
        Range("D1").Select
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
        Range("A1").Select
        Application.CutCopyMode = False
    End Sub
    macro copia con ciclo for
    Sub CopiaIncolla()
    Dim cella(3), I, TRig
    I = 1
    TRig = Cells(Rows.Count, I).End(xlUp).Offset(0, 0).Row
    For I = 1 To 3 Step 1
     Cells(TRig, I).Select
       Selection.Copy
     Cells(TRig + 1, I).Select
       ActiveSheet.Paste
    Next I
    End Sub


  • Copia automatica
    di Alessio (utente non iscritto) data: 14/02/2010

    Ciao locate.

    praticamente nel range j10:j39 ho la formula cerca.verticale dove mi visualizza i dati.
    nello stesso range una volta utilizzato la macro che sto cercando di creare, al posto della visualizzazione dei dati (tramite la formula cerca.verticale), devono essere visualizzati come valori i dati maggiori di 0.

    spero di essere stato chiaro.



  • Copia automatica
    di Alessio (utente non iscritto) data: 14/02/2010

    Praticamente utilizzando la formula qua sotto riesco a fare quello che voglio, la differenza è che qualsiasi valore (che come ripeto è il risultato della formula cerca.verticale nel range j10:j39) trovi nel range lo rende valore puro cancellando il riferimento al cerca.vert , quindi ciò accade anche se trova un valore uguale a zero, cosa che a me invece non serve xchè se trova il valore zero dovrebbe ignorarlo in quanto in un secondo momento potrebbe quel cerca.vert avere un valore.

    spero di essere stato chiaro adesso.
    scusate, ma come ripeto la macro sotto funziona ma non mi esclude dalla trasformazione i valori uguali a zero, tutto qua.

    in poche parole dovrebbe controllare il contenuto della cella dove c'è il cerca.vert (range j10:j39) e se è maggiore di zero trasformarlo in dato puro (come valore) eliminando il cerca.verticale.
     
    Sub copia_automatica()
    
    '
        Range("J10:J39").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("A10").Select
        Application.CutCopyMode = False
    
    End Sub



  • di Locate (utente non iscritto) data: 14/02/2010

    Ciao
    tu dici ------
    praticamente nel range j10:j39 ho la formula cerca.verticale dove mi visualizza i dati.
    nello stesso range una volta utilizzato la macro che sto cercando di creare, al posto della visualizzazione dei dati (tramite la formula cerca.verticale), devono essere visualizzati come valori i dati maggiori di 0.
    -----
    quindi cerco ti capire la tua funzione j10 cerca.vert()
    =cerca.vert(valorex;range(a:z);colonna di ritorno;vero o falso) e ritorna un determinato valore, tu vorresti visualizzare solo i valori maggiori di 0 e se e' 0 o minore cella vuota.
    ti servirebbe una funzione di questo genere
    =se(cerca.vert($f$1;$a$1:$b$10;2;falso)=0;"";cerca.vert($f$1;$a$1:$b$10;2;falso))
    ps questa e' solo una prova per farti vedere l'impostazione dove i dati sono da a1:b10 in f1 metto cosa cerco , mi ritorna la colonna 2 e se e' zero mi mette dato nullo
    questo sommariamente deve essere il tuo cerca verticale
    ps se ai dei problemi a comporre tale funzione posta il tuo che ai in j10 cosi vedo di sistemartelo dopo gli altri saranno similari
    ciao locate




  • di Rp71 (utente non iscritto) data: 15/02/2010

    Ciao ad entrambi,
    credo che alessio voglia che :
    * dove la formula cerca.vert da un valore <> zero venga incollato il valore
    * dove la formula cerca.vert da zero lasciare la formula x la volta successiva (quando riconnette la chiavetta
    giusto ?
    non do la soluzione xchè non sono ferratissimo nei cicli for ma mi pare che ormai siete sulla buona strada
    bye
    r


  • Copia automatica
    di Alessio (utente non iscritto) data: 15/02/2010

    Perfetto rp71 quello che mi servirebbe.




  • Copia automatica
    di Alessio (utente non iscritto) data: 15/02/2010

    Rp71 ha capito che cosa voglio fare.

    bisogna considerare, per rispondere a locate che
    una cosa è la visualizzazione dei dati con il cerca.vert, ed un'altra è una volta valutato i risulati fare l'operazione, non può essere contemporanea.
    ecco xchè rp71 secondo me ha colto quello che volevo fare.
    il cerca.vert funziona, è la fase succesiva ed indipendente che mi manca.

    grazie


  • Forse
    di Rp71 (utente non iscritto) data: 16/02/2010

    Ciao alessio,
    guarda che la tua macro era quasi giusta !!
    avevi sbagliato solo il riferimento al range x incollare che era fissato in un unica cella
    io ho provato lo script sotto e funziona
    incolla i valori se diversi da 0 altrimenti lascia la formula

     
    Sub copia_automatica()
    
    Dim i As Long
     
     For i = 10 To 39
     
     
     If Range("j" & i).Value <> 0 Then
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("j" & i).Select
        Application.CutCopyMode = False
    
    End If
    
    Next i
    
    End Sub
    


  • Copia automatica
    di Alessio (utente non iscritto) data: 19/02/2010

    Hai ragione ero vicinissimo alla soluzione.

    grazie tanto rp71 funziona