Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Macro copiare cella in altro foglio di lavoro

897 views
Skip to first unread message

Paolo

unread,
Aug 24, 2006, 2:34:28 PM8/24/06
to
Mi servirebbe una macro di questo tipo:
ho una tabella in cui sono riportati determinati valori (si tratta di valori
fissi, non formule) nella colonna A e altri valori (anche in questo caso
valori fissi) nella colonna B. La macro dovrebbe copiare il valore che è
presente in una cella della colonna A (e dovrei indicare io di volta in
volta quale cella copiare, ad esempio A1 o A2 o A3, ecc.) e inserirlo nella
cella A1 di un'altro foglio Excel. Lo stesso per i valori della colonna B
che andranno copiati nella cella B1 dell'altro foglio Excel.
Come ho già detto, la cella da copiare cambia di volta in volta, può essere
A1, A2, A3, ecc... come faccio a dire ad Excel quale cella deve copiare
nell'altro foglio Excel? Grazie


giovanna

unread,
Aug 24, 2006, 5:18:31 PM8/24/06
to
Scriveva Paolo nel <44edf135$0$30247$4faf...@reader1.news.tin.it>, del
24/08/2006:

> Mi servirebbe una macro di questo tipo:
> ho una tabella in cui sono riportati determinati valori (si tratta di valori
> fissi, non formule) nella colonna A e altri valori (anche in questo caso
> valori fissi) nella colonna B. La macro dovrebbe copiare il valore che è
> presente in una cella della colonna A (e dovrei indicare io di volta in
> volta quale cella copiare, ad esempio A1 o A2 o A3, ecc.) e inserirlo nella
> cella A1 di un'altro foglio Excel. Lo stesso per i valori della colonna B
> che andranno copiati nella cella B1 dell'altro foglio Excel.

ciao,
senza macro?
propongo questa soluz:
Nel foglio di destinazione, in cella A1:
=SE(SINISTRA(C1;1)="A";INDIRETTO("Foglio1!"&C1);"")
in cella B1:
=SE(SINISTRA(C1;1)="B";INDIRETTO("Foglio1!"&C1);"")
Non dovrai far altro che digitare in cella C1 il riferimento cella da
copiare (da Foglio1).

--
ciao
giovanna
..........................................
http://www.riolab.org
..........................................


eliano

unread,
Aug 24, 2006, 5:27:11 PM8/24/06
to

"Paolo" ha scritto:

Ciao Paolo.
Cerca su questo NG: doppiocli dovresti trovare una macro che utilizzando
il doppioclicsx su una cella, la copia in un foglio diverso.
Comunque ci dovrebbe essere una logica qualsiasi secondo la quale effetti la
copia di quella cella
Eliano

elby

unread,
Aug 24, 2006, 5:42:03 PM8/24/06
to
Utilizza l'evento doppio click del foglio di lavoro sfruttando il range
restituito dal metodo
Intersect dell'oggetto Application:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)
Dim isect As Range
Set isect = Intersect(Range("A:A"), Target)
If isect Is Nothing Then
' non fare nulla
Else
MsgBox "La cella da copiare è: " & Target.Address 'sostituire con
proprio codice
Exit Sub
End If
Set isect = Intersect(Range("B:B"), Target)
If isect Is Nothing Then
' non fare nulla
Else
MsgBox "La cella da copiare è: " & Target.Address 'sostituire con
proprio codice
Exit Sub
End If
End Sub

Elby

Paolo ha scritto:

eliano

unread,
Aug 24, 2006, 8:17:02 PM8/24/06
to

"Paolo" ha scritto:

Ciao Paolo.
Innanzi tutto chiedo scusa ad Elio [ciao] per l'intromissione, ma a
giudicare dalla parte finale del tuo post mi sembra di capire che non hai una
grande dimestichezza con il Vba; mi sono permesso quindi di sostituire i
MsgBox con le istruzioni per la copia delle celle da Foglio1 a Foglio2.

Con Alt+F11 accedi al Vbe e copiala nel modulo del Foglio1.

'<------------------------------
Option Explicit
' Macro By Elio, persona di buon cuore.:-))

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Dim isect As Range

Dim cel As Range

Set isect = Intersect(Range("A:A"), Target)

If isect Is Nothing Then
' non fare nulla
Else

For Each cel In Sheets(2).Range("A:A")
If cel.Value = "" Then
cel.Value = Target.Value
Exit Sub
End If
Next
End If

Set isect = Intersect(Range("B:B"), Target)

If isect Is Nothing Then
' non fare nulla
Else

For Each cel In Sheets(2).Range("B:B")
If cel.Value = "" Then
cel.Value = Target.Value
Exit Sub
End If
Next
End If
End Sub
'--------------------------->

Esci dal Vbe e torna al foglio1 di excel.

Per utilizzarla fai doppio clic sx su una qualsiasi cella delle colonne A o
B del foglio1 e queste verranno copiate nella prime cella disponibili del
foglio2, colonne A o B.
Non l'ho provata perchè su questa carriola non ho excel, per cui verifica il
funzionamento e facci sapere.
Eliano

Paolo

unread,
Aug 25, 2006, 5:02:19 AM8/25/06
to
giovanna ha scritto:
> ciao,
> senza macro?

eh, no, per le mie esigenze mi ci vuole proprio una macro

Comunque ti ringrazio, ciao


Paolo

unread,
Aug 25, 2006, 5:04:10 AM8/25/06
to
elby ha scritto:

> Utilizza l'evento doppio click del foglio di lavoro sfruttando il
> range restituito dal metodo
> Intersect dell'oggetto Application:
> Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
> As Boolean)
> Dim isect As Range
> Set isect = Intersect(Range("A:A"), Target)
> If isect Is Nothing Then
> ' non fare nulla
> Else
> MsgBox "La cella da copiare č: " & Target.Address 'sostituire con

> proprio codice
> Exit Sub
> End If
> Set isect = Intersect(Range("B:B"), Target)
> If isect Is Nothing Then
> ' non fare nulla
> Else
> MsgBox "La cella da copiare č: " & Target.Address 'sostituire con

> proprio codice
> Exit Sub
> End If
> End Sub
>
> Elby

dove č scritto "sostituire con proprio codice" che devo scrivere? Scusami,
ma sono un po' a digiuno di vba


Paolo

unread,
Aug 25, 2006, 5:06:23 AM8/25/06
to
eliano ha scritto:

> Ciao Paolo.
> Innanzi tutto chiedo scusa ad Elio [ciao] per l'intromissione, ma a
> giudicare dalla parte finale del tuo post mi sembra di capire che non
> hai una grande dimestichezza con il Vba

esatto ;-)

> Per utilizzarla fai doppio clic sx su una qualsiasi cella delle
> colonne A o B del foglio1 e queste verranno copiate nella prime cella
> disponibili del foglio2, colonne A o B.

la tua macro funziona, però la cella di destinazione non deve essere la
prima cella disponibile nella colonna A (o B) del foglio2, ma deve essere
sempre la stessa cella del foglio 2 (rispettivamente cella A1 e cella B1).
Inoltre il foglio di destinazione nel mio caso è presente in un altro file
.xls, quindi ho inserito la stringa:

Windows("Cartel2.xls").Activate


Norman Jones

unread,
Aug 25, 2006, 6:37:57 AM8/25/06
to
Ciao Paolo,

'---------------------


la tua macro funziona, però la cella di destinazione non deve essere la
prima cella disponibile nella colonna A (o B) del foglio2, ma deve essere
sempre la stessa cella del foglio 2 (rispettivamente cella A1 e cella B1).
Inoltre il foglio di destinazione nel mio caso è presente in un altro file
.xls, quindi ho inserito la stringa:

Windows("Cartel2.xls").Activate

'---------------------


Prova:
'=============>>
Private Sub Worksheet_BeforeDoubleClick _


(ByVal Target As Range, Cancel As Boolean)

Dim iSect As Range
Dim destWb As Workbook
Dim destSH As Worksheet

Set destWb = Workbooks("Cartel2.xls") '<<=== da CAMBIARE
Set destSH = destWb.Sheets("Foglio2") '<<=== da CAMBIARE

Set iSect = Intersect(Range("A:B"), Target)

If Not iSect Is Nothing Then
With iSect
destSH.Range(.Address).Value = .Value
End With
End If
End Sub
'<<=============


---
Regards,
Norman


Paolo

unread,
Aug 25, 2006, 6:57:32 AM8/25/06
to
Norman Jones ha scritto:
> Prova:
> [cut]

grazie per l'intervento, ma cosě la cella di destinazione č la stessa cella
in cui č contenuto il valore da copiare, cioč se faccio doppio click su A2,
il valore in A2 viene copiato nella cella A2 del foglio 2 del file
cartel2.xls, mentre invece a me serve che copi sempre nella cella A1 del
foglio 2 del file cartel2.xls, indipendentemente da dove faccio il doppio
click


eliano

unread,
Aug 25, 2006, 6:56:01 AM8/25/06
to

"Paolo" ha scritto:

> ..xls, quindi ho inserito la stringa:
>
> Windows("Cartel2.xls").Activate
>
>
>
Ciao Paolo.
La macro non è mia, ma di Elby e se ho capito bene dovresti aver risolto il
problema.
Vedo che usi .Activate, quindi il file di destinazione dovrebbe essere
aperto, per cui la macro dovrebbe diventare:
Option Explicit
' Macro (base By Elio = Elby)

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Dim isect As Range
Dim cel As Range

Dim destino As Range


Set isect = Intersect(Range("A:A"), Target)

Application.ScreenUpdating = False


If isect Is Nothing Then
' non fare nulla
Else
For Each cel In Sheets(2).Range("A:A")
If cel.Value = "" Then

Workbooks("Cartel2.xls").Sheets(2).Range("A1") = Target.Value
' cel.Value = Target.Value
' Target.Select
' Target.Offset(0, 3).Value = "da " & Target.Address & " a Foglio2-" &
cel.Address


Exit Sub
End If
Next
End If

Set isect = Intersect(Range("B:B"), Target)

If isect Is Nothing Then
' non fare nulla
Else
For Each cel In Sheets(2).Range("B:B")
If cel.Value = "" Then

Workbooks("Cartel2.xls").Sheets(2).Range("B1") = Target.Value
' cel.Value = Target.Value
' Target.Select
' Target.Offset(0, 4).Value = "da " & Target.Address & " a Foglio2-" &
cel.Address


Exit Sub
End If
Next
End If
End Sub

Solo una cosa: oltre a specificare che hai usato .Activate sarebbe bene che
tu specificassi in quale punto della macro hai inserito quella istruzione,
grazie.
Eliano

Norman Jones

unread,
Aug 25, 2006, 7:21:12 AM8/25/06
to
Ciao Paolo,

Allora, avevo mal capito!

Prova invece:


'=============>>
Private Sub Worksheet_BeforeDoubleClick _
(ByVal Target As Range, Cancel As Boolean)
Dim iSect As Range
Dim destWb As Workbook
Dim destSH As Worksheet

Set destWb = Workbooks("Cartel2.xls") '<<=== da CAMBIARE
Set destSH = destWb.Sheets("Foglio2") '<<=== da CAMBIARE

Set iSect = Intersect(Range("A:B"), Target)

If Not iSect Is Nothing Then
With iSect

destSH.Cells(1, iSect.Column).Value = .Value


End With
End If
End Sub
'<<=============


Regards,
Norman


Paolo

unread,
Aug 25, 2006, 9:33:33 AM8/25/06
to
Norman Jones ha scritto:
> Prova invece:
> [cut]

perfetto, funziona sia questa, sia quella di Elby, indicatami da Eliano


Paolo

unread,
Aug 25, 2006, 9:35:19 AM8/25/06
to
eliano ha scritto:
> Ciao Paolo.
> La macro non č mia, ma di Elby e se ho capito bene dovresti aver

> risolto il problema.
> Vedo che usi .Activate, quindi il file di destinazione dovrebbe essere
> aperto, per cui la macro dovrebbe diventare:
> [cut]

perfetto, funziona sia questa, sia quella di Norman Jones.


> Solo una cosa: oltre a specificare che hai usato .Activate sarebbe
> bene che tu specificassi in quale punto della macro hai inserito
> quella istruzione, grazie.

l'aveva messo prima di For Each cel In Sheets(2).Range("A:A")


eliano

unread,
Aug 25, 2006, 9:41:01 AM8/25/06
to

"Norman Jones" ha scritto:

> Ciao Paolo,
>
> > grazie per l'intervento, ma così la cella di destinazione è la stessa
> > cella
> > in cui è contenuto il valore da copiare, cioè se faccio doppio click su

> > A2,
> > il valore in A2 viene copiato nella cella A2 del foglio 2 del file
> > cartel2.xls, mentre invece a me serve che copi sempre nella cella A1 del
> > foglio 2 del file cartel2.xls, indipendentemente da dove faccio il doppio
> > click
>
> Allora, avevo mal capito!
>
> Prova invece:
> '=============>>
> Private Sub Worksheet_BeforeDoubleClick _
> (ByVal Target As Range, Cancel As Boolean)
> Dim iSect As Range
> Dim destWb As Workbook
> Dim destSH As Worksheet
>
> Set destWb = Workbooks("Cartel2.xls") '<<=== da CAMBIARE
> Set destSH = destWb.Sheets("Foglio2") '<<=== da CAMBIARE
>
> Set iSect = Intersect(Range("A:B"), Target)
>
> If Not iSect Is Nothing Then
> With iSect
> destSH.Cells(1, iSect.Column).Value = .Value
> End With
> End If
> End Sub
> '<<=============
>

Ciao Norman.
("mal capito = capito male", ma il significato era chiarissimo.)

Per la macro, bella, compatta, completa ed essenziale; grazie.
Ma, Norman, non si potrebbe scrivere una macro che agisce solo con un
fischio ?
Tipo: pensi al problema, emetti un fischio ed Excel esegue quello a cui stai
pensando ! :-8)
E come disse il Poeta:"Men vo sentendomi insultare" (sparate al petto,
please!)
Eliano

Norman Jones

unread,
Aug 25, 2006, 9:50:45 AM8/25/06
to
Ciao Eliano,

--

Regards,
Norman

"eliano" <eli...@discussions.microsoft.com> wrote in message
news:1FA5F4B9-D189-4F70...@microsoft.com...


>
>
> "Norman Jones" ha scritto:
>
>> Ciao Paolo,
>>

>> > grazie per l'intervento, ma cosě la cella di destinazione č la stessa
>> > cella
>> > in cui č contenuto il valore da copiare, cioč se faccio doppio click su

Norman Jones

unread,
Aug 25, 2006, 9:54:30 AM8/25/06
to
Ciao Eliano,

> ("mal capito = capito male", ma il significato era chiarissimo.)

Grazie!

> Ma, Norman, non si potrebbe scrivere una macro che agisce solo con un
> fischio ?
> Tipo: pensi al problema, emetti un fischio ed Excel esegue quello a cui
> stai
> pensando ! :-8)

Ma non hai letto di Excel13?!


---
Regards,
Norman


Paolo

unread,
Aug 25, 2006, 10:09:30 AM8/25/06
to
Paolo ha scritto:
> cut

Grazie a tutti per l'aiuto


eliano

unread,
Aug 25, 2006, 10:11:02 AM8/25/06
to

"Norman Jones" ha scritto:

No, Norman, disgraziatamente ho gli occhiali in manutenzione, ma appena il
maniscalco avrà terminato la riparazione, provvederò ad informarmi sulle
novità di Excel.
(maniscalco = operaio che attacca i ferri agli zoccoli dei cavalli, muli,
asini, equini, eliani in genere; si occupa anche dei finimenti dei medesimi).
:-))
Saluti
Eliano

giovanna

unread,
Aug 25, 2006, 10:39:18 AM8/25/06
to
Scriveva eliano nel
<1123382A-C161-4D5D...@microsoft.com>, del 25/08/2006:


> (maniscalco = operaio che attacca i ferri agli zoccoli dei cavalli, muli,
> asini, equini, eliani in genere; si occupa anche dei finimenti dei medesimi).

béh, Eliano... questa mi ha strappato proprio una risata...
sei tutto matto! :-D :-D :-D

eliano

unread,
Aug 25, 2006, 11:04:02 AM8/25/06
to

"Paolo" ha scritto:

> eliano ha scritto:
> > Ciao Paolo.

> > La macro non è mia, ma di Elby e se ho capito bene dovresti aver

OK Paolo, ma se la posizioni in quel punto, nel caso tu debba copiare sia un
dato della colonna A che un dato della colonna B, dopo la copia di A viene
attivata la Cartel2, per cui sei costretto a tornare sul file di input per
copiare la cella in B.
Se non vuoi questo, fai delle prove per risolvere questo inghippino; non so
quale versione stai usando, ma collegherei l' attivazione di Cartel2, con un
semplice If, al range fuori da intersect, in modo che:
copi da colonna A
copi da colonna B
clicchi su <> da A o B
funziona anche se copi solo A o B e funge per tutte le versioni di macro
disponibili.
Eliano

raul

unread,
Aug 25, 2006, 11:28:59 AM8/25/06
to
Anche a me servirebbe una macro simile, però il problema si complica. Anche
io ho due file Excel come Paolo. Questo è una semplificazione del file 1
dove sono contenuti dei codici nella colonna C e nomi nella colonna D:
http://img233.imageshack.us/img233/8526/1tj9.jpg

Io vorrei che, al doppio click del mouse su una qualsiasi delle celle della
colonna C, il valore in esso contenuto sia copiato nella cella B10 e nella
cella K10 di TUTTI I FOGLI di un altro file (ad esempio, file2.xls).
Invece, al doppio click del mouse su una qualsiai delle celle della colonna
D, il valore in esso contenuto deve essere copiato nella cella B1 di TUTTI I
FOGLI di file2.xls

Come devo modificare la macro secondo queste mie esigenze?

eliano

unread,
Aug 25, 2006, 11:33:01 AM8/25/06
to

"giovanna" ha scritto:

> Scriveva eliano nel
> <1123382A-C161-4D5D...@microsoft.com>, del 25/08/2006:
>
>
> > (maniscalco = operaio che attacca i ferri agli zoccoli dei cavalli, muli,
> > asini, equini, eliani in genere; si occupa anche dei finimenti dei medesimi).
>
> béh, Eliano... questa mi ha strappato proprio una risata...
> sei tutto matto! :-D :-D :-D
>

Ciao Giovanna.
Ricevere una macro funzionante o riuscire a far sorridere una donna
rappresenta un ottimo livello di gratificazione; scatenare una risata è il
massimo, grazie.
Ma adesso, cara compagna di viaggio, ricomponiamoci: Nonno Mauro ci
ascolta,:-8)
Eliano

Mauro Gamberini

unread,
Aug 25, 2006, 11:34:10 AM8/25/06
to
> Io vorrei che, al doppio click del mouse su una qualsiasi delle celle
> della
> colonna C, il valore in esso contenuto sia copiato nella cella B10 e nella
> cella K10 di TUTTI I FOGLI di un altro file (ad esempio, file2.xls).
> Invece, al doppio click del mouse su una qualsiai delle celle della
> colonna
> D, il valore in esso contenuto deve essere copiato nella cella B1 di TUTTI
> I
> FOGLI di file2.xls
>
> Come devo modificare la macro secondo queste mie esigenze?
>

Se invece di click e doppio click
(in se *pericolosi* perchè potremmo
fare click o doppio click per errore),
due bei pulsanti di scelta rapida tipo
CTRL+a e CTRL+s ?

--
---------------------------
Mauro Gamberini
http://www.riolab.org/


Mauro Gamberini

unread,
Aug 25, 2006, 11:35:59 AM8/25/06
to
> Ma adesso, cara compagna di viaggio, ricomponiamoci: Nonno Mauro ci
> ascolta,:-8)
>

Più che altro ti vede.
E sei ancora con quei ridicoli bermuda...

raul

unread,
Aug 25, 2006, 11:46:04 AM8/25/06
to
sě, certo, va bene lo stesso


Mauro Gamberini wrote:
> Se invece di click e doppio click

> (in se *pericolosi* perchč potremmo

eliano

unread,
Aug 25, 2006, 1:15:02 PM8/25/06
to

"raul" ha scritto:

> Anche a me servirebbe una macro simile, però il problema si complica. Anche
> io ho due file Excel come Paolo. Questo è una semplificazione del file 1
> dove sono contenuti dei codici nella colonna C e nomi nella colonna D:
> http://img233.imageshack.us/img233/8526/1tj9.jpg
>
> Io vorrei che, al doppio click del mouse su una qualsiasi delle celle della
> colonna C, il valore in esso contenuto sia copiato nella cella B10 e nella
> cella K10 di TUTTI I FOGLI di un altro file (ad esempio, file2.xls).
> Invece, al doppio click del mouse su una qualsiai delle celle della colonna
> D, il valore in esso contenuto deve essere copiato nella cella B1 di TUTTI I
> FOGLI di file2.xls
>

Ciao Raul.
Ti consiglierei di scrivere da te la tua macro, dal momento che hai tutti i
dati necessari per farlo; quando la tua macro funziona, comparala con quella
che ti fornirà a breve Mauro, esamina le differenze aiutandoti con la guida
in linea acquistando così conoscenze che forse al momento non hai, e prova a
riscriverla in maniera autonoma pensando unicamente al progetto e magari
seguendo un metodo diverso.
Così facendo si può correre anche il rischio di imparare; come sempre,
opinione personalissima.
Eliano
Eliano

raul

unread,
Aug 26, 2006, 4:11:21 AM8/26/06
to
Mauro Gamberini wrote:

>> Io vorrei che, al doppio click del mouse su una qualsiasi delle celle
>> della
>> colonna C, il valore in esso contenuto sia copiato nella cella B10 e
>> nella cella K10 di TUTTI I FOGLI di un altro file (ad esempio,
>> file2.xls). Invece, al doppio click del mouse su una qualsiai delle
>> celle della colonna
>> D, il valore in esso contenuto deve essere copiato nella cella B1 di
>> TUTTI I
>> FOGLI di file2.xls
>>
>> Come devo modificare la macro secondo queste mie esigenze?
>>
>
> Se invece di click e doppio click
> (in se *pericolosi* perchè potremmo
> fare click o doppio click per errore),
> due bei pulsanti di scelta rapida tipo
> CTRL+a e CTRL+s ?

è possibile farlo con una macro?


eliano

unread,
Aug 26, 2006, 4:49:01 AM8/26/06
to

"Mauro Gamberini" ha scritto:

> > Ma adesso, cara compagna di viaggio, ricomponiamoci: Nonno Mauro ci
> > ascolta,:-8)
> >
>
> Più che altro ti vede.
> E sei ancora con quei ridicoli bermuda...
>

La privacy, Mauro, la privacy!

raul

unread,
Aug 26, 2006, 8:29:18 AM8/26/06
to
Eliano wrote:

> Ciao Raul.
> Ti consiglierei di scrivere da te la tua macro, dal momento che hai tutti
i
> dati necessari per farlo; quando la tua macro funziona, comparala con
quella
> che ti fornirà a breve Mauro, esamina le differenze aiutandoti con la
guida
> in linea acquistando così conoscenze che forse al momento non hai, e prova
a
> riscriverla in maniera autonoma pensando unicamente al progetto e magari
> seguendo un metodo diverso.
> Così facendo si può correre anche il rischio di imparare; come sempre,
> opinione personalissima.


Scusa se ti rispondo qua, ma il server tin si è perso qualche messaggio e ho
potuto vedere la tua risposta solo su google groups. Comunque ho già provato
a scrivere la macro da solo, ma non ci sono riuscito (o meglio ci sono
riuscito solo in parte), perciò ho visto questo thread che trattava un
problema simile al mio e mi sono accodato. Ovviamente la voglia di imparare
c'è sempre, e auspico di arrivare ai vostri livelli.

Comunque ringrazio già da subito chi saprà aiutarmi


0 new messages