Aiutamici Forum
Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

copia condizionale tra celle Opzioni
bobo779256
Inviato: Friday, April 20, 2012 1:36:46 AM

Rank: AiutAmico

Iscritto dal : 4/8/2011
Posts: 4,089
Ho un problema che nasce perchè stò modificando un foglio elettronico protetto e posso modificare solo le celle previste per l'inserimento dati; i dati da inserire provengono da un file CSV esterno. Uso Calc di OpenOffice

Ho due fogli
devo copiare il contenuto di una cella in un'altra ma in modo condizionale, esempio:

Foglio1.D1 in Foglio2.C1 se il contenuto di Foglio2.D1 è vero

Il tutto utilizzando riferimenti numerici di righe e colonne.

Ho creato una funzione personale:
Code:
Function CopiaDato (foglioor, colonnaor, rigaor, fogliode, colonnade, rigade)
' or stà per origine de stà per destinazione
dim Doc, Sheet, Cell, oVal
Doc=ThisComponent
Sheet=Doc.Sheets(foglioor)
Cell=Sheet.getCellByPosition(colonnaor, rigaor)
oVal=Cell.string

Doc=ThisComponent
Sheet=Doc.Sheets(fogliode)
Cell=Sheet.getCellByPosition(colonnade, rigade)

Cell.string=oVal
End function

e la metto in una cella del foglio 2, ad esempio:
Code:
= SE ( CONDIZIONE D1 VERA ; COPIADATO(0;3;0;1;2;0) ; "" )

che mi copia il contenuto della cella Foglio1.D1 in Foglio2.C1
però non funziona molto bene, probabilmente ho sbagliato qualcosa ma non sò cosa.
Mi ricopia il dato, ma:
° lo fà solo all'apertura del file, se vario il dato di origine la destinazione non varia, nemmeno 'ricalcolando'
° se il dato è una stringa tutto ok, ma se è ad esempio un'ora 7.05 me la riporta copiata '7.05, cioè mi metta un apice che mi sballa tutto.

C'è qualche altro modo per fare questa copia condizionale?

Dengh'iu muc mor
Sponsor
Inviato: Friday, April 20, 2012 1:36:46 AM

 
a10n11
Inviato: Friday, April 20, 2012 12:24:47 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
bobo779256 ha scritto:


e la metto in una cella del foglio 2, ad esempio:
Code:
= SE ( CONDIZIONE D1 VERA ; COPIADATO(0;3;0;1;2;0) ; "" )

che mi copia il contenuto della cella Foglio1.D1 in Foglio2.C1



salve
non conosco la sintassi di VBA di OO

Stando a quanto affermi: "metto in una cella qualsiasi la formula sopra indicata , il risultato lo pone non nella cella della formula ma nella cella indicata dala funzione CopiaDato" in Excel non funzionerebbe (almeno per le mie conoscenze).
Se la formula fosse inserita nella cella in cui voglio il risultato, sarebbe inutile ricorrere alla UDF.
saluti
Giap

bobo779256
Inviato: Friday, April 20, 2012 12:43:42 PM

Rank: AiutAmico

Iscritto dal : 4/8/2011
Posts: 4,089
Esatto, la formula è messa in una cella qualunque, ma la formula COPIADATO prende e copia da/su altre due celle
In Excel come si potrebbe fare? Anche solo per avere uno spunto da cui partire...
Dovrei in pratica far fare la copia tra celle solo 'a comando' (pulsante o messagebox) o 'a condizione' (se VERO copia le celle)
Grazie dell'aiuto che ci dai, god bless the forums, and you too
bobo779256
Inviato: Friday, April 20, 2012 12:53:31 PM

Rank: AiutAmico

Iscritto dal : 4/8/2011
Posts: 4,089
Ad esempio:
Code:
- - Copia/incolla la cella A1 del Foglio1 nella cella A1 del Foglio2(valore).
Viene copiato solo il valore (non la funzione/formula o le formattazioni). Codice da copia/incollare in un modulo standard.

Public Sub m()
   
    'dichiaro le variabili
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
   
    'metto un riferimento ai due fogli
    With ThisWorkbook
        Set sh1 = .Worksheets("Foglio1")
        Set sh2 = .Worksheets("Foglio2")
    End With
   
    With sh1
        'copio da un foglio all'altro
        sh2.Range("A1").Value = .Range("A1").Value
    End With
   
    'Set a Nothing delle variabili oggetto
    Set sh2 = Nothing
    Set sh1 = Nothing
   
End Sub
presa dalla rete, potrebbe andare? Provo a convertirla da Excel a OOoCalc (se ci riesco...)
a10n11
Inviato: Friday, April 20, 2012 2:40:05 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
un esempio semplice semplice questo:

Sub copia()
With Sheets("Foglio1")
.Range("A1").Copy Destination:=Sheets("foglio2").Range("A1")
End With
End Sub

saluti
Giap

Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.