Condividi:        

dato copia dato

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

dato copia dato

Postdi prinx » 04/12/09 15:56

scusatemi ho un'altro problema

ho una colonna dove devo inserire la data come testo e possibile che dando ok

mi si inseririsce in automatico anche nell'altra cella?

per esempio data nella colonna F e l'altra nella colonna H

grazie
prinx
Utente Junior
 
Post: 19
Iscritto il: 02/12/09 10:43

Sponsor
 

Re: dato copia dato

Postdi Anthony47 » 04/12/09 16:23

Perche' vuoi inserirla come testo, e non come data?
Se vuoi inserire la data corrente in una cella basta che digiti tasto "Contr" e tasto ";" insieme, poi enter.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: dato copia dato

Postdi prinx » 04/12/09 16:39

grazie Anthony47
ma purtroppo la data non è sempre quella corrente
era solo per risparmiare tempo e non inserire lo stesso dato due volte
grazie
prinx
Utente Junior
 
Post: 19
Iscritto il: 02/12/09 10:43

Re: dato copia dato

Postdi Anthony47 » 05/12/09 00:15

La cosa piu' semplice che puoi fare e' che "seconda colonna" inserisci qualcosa come
Codice: Seleziona tutto
=Se(A2="";"";A2)
e formatti la cella come data, nel formato che vuoi. Copia poi questa cella verso il basso per quante righe pensi ti servano (puoi abbondare).
Poi nella "prima colonna", ho immaginato A con la formula data sopra, inserisci la data che si replica anche nella seconda colonna.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: dato copia dato

Postdi Flash30005 » 05/12/09 00:19

Prova questa macro
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
CheckArea = "F2:F1000"
If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then
ActiveCell.Offset(-1, 1).Value = Selection.Offset(-1, 0).Value
End If
End Sub

Il codice va inserito nel VBAProject del foglio e non nel modulo

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: dato copia dato

Postdi Anthony47 » 05/12/09 10:09

Flash, l' hai provata??

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: dato copia dato

Postdi Flash30005 » 08/12/09 11:41

Anthony47 ha scritto:Flash, l' hai provata??


Ops!
Mi accorgo solo ora del tuo post Anthony, scusa

Si l'ho provata, cerco di farlo sempre prima di pubblicare, ma se ci dovessero essere problemi siamo sempre qui ;)
Coglierei l'occasione per chiedere a Prinx se è tutto ok.

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: dato copia dato

Postdi Anthony47 » 08/12/09 17:31

Secondo me va in loop, perche' la copia del valore nella seconda cella (ActiveCell.Offset(-1, 1).Value = Selection.Offset(-1, 0).Value) provoca a sua volta un evento Change e la macro controlla quale e' la cella attiva (che non e' cambiata); la macro riparte, e cosi' via; sarebbe stato diverso se avessi usato "Target(.address)", perche' il secondo change risulterebbe all' esterno della CheckArea.
Cosi' e' su excel xp e excel 2003; e' possibile che excel 2007 abbia un limite di recursivita' delle macro, nel qual caso potresti non accorgertene.

Io avrei fatto
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
CheckArea = "F2:F1000"
If Application.Intersect(Target, Range(CheckArea)) Is Nothing Then Exit Sub
Application.EnableEvents = False
Target.Offset(0, 2).Value = Target.Value     'Offset(0,2) per puntare dalla F alla H
Application.EnableEvents = True
End Sub

In questo caso l' utilizzo di Application.EnableEvents = False / True non e' indispensabile (il secondo Change non provoca l' esecuzione dell' intera macro, perche' termina con If ... Exit Sub, ma e' una precauzione per evitare l' interruzione della macro a causa di eventi non controllati.

Ciao a tutti.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: dato copia dato

Postdi Flash30005 » 08/12/09 23:05

Ho riprovato la macro e il copia valore cella non provoca la variazione della cella in Change (come succede con SelectionChange) perché in effetti il valore non è cambiato infatti in queste immagini in sequenza digito il dato, premo invio e il dato viene copiato posizionando il cursore per l'inserimento in Fx del nuovo dato.
Immagine

L'unica cosa è che la macro, da me postata, copia il valore in G invece che in H ma modificando la riga codice così:
Codice: Seleziona tutto
ActiveCell.Offset(-1, 2).Value = Selection.Offset(-1, 0).Value

il dato dopo l'invio viene copiato in H.
Questa macro è stata testata con Office 2003, poi, cosa succede con altre versioni di office, non lo so...

La macro di Anthony funziona ugualmente bene


Ciao

Riflessione personale: vale la pena cercare soluzioni e/o migliorie se poi non si ha un riscontro di chi ha posto il quesito?
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: dato copia dato

Postdi Anthony47 » 09/12/09 02:02

Nel forum si puo' anche discutere tra di noi prendendo lo spunto da quanto chiedono gli utenti....
E ho scoperto una cosa di cui non ero cosciente:
-sia su excel Xp che 2003 va in loop per 205 volte e poi smette.
Collaudato con questo codice:
Codice: Seleziona tutto
Public AAAA As Integer

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Range("A1:A10"), ActiveCell) Is Nothing Then Exit Sub
AAAA = AAAA + 1
[A14] = [A1]
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox (AAAA)
AAAA = 0
End Sub

Vai in A1; quando ti muovi in A1 ti stampera' il valore del counter AAAA e poi lo azzera; lo controlli spostando ancora la selezione, ti stampera' sempre "0"; scrivi qualcosa in A1, lo vedrai copiato in A14 e poi ti stampera' il counter con il numero di iterazioni effettuate, per effetto dell' attivazione della cella sottostante.
Spostati in A3, vedrai il counter ancora a 0; scrivi in A3 un valore: A14 apparentemente non cambia, ma alla fine la macro di selection_change ti indichera' quante volte la macro di Change ha ciclato.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: dato copia dato

Postdi Flash30005 » 09/12/09 08:34

Oh cacchio!!!!
207 volte!!!??? :eeh:
e 205 volte se il Msgbox è all'interno dela sezione Change ed eliminando la sezione SelectionChange

Non solo,
un loop di 205 lo fa anche nella prima parte della macro (cicli) per poi luppare nella seconda parte
Codice: Seleziona tutto
Public Cicli, AAAA As Integer
Private Sub Worksheet_Change(ByVal Target As Range)
CheckArea = "F2:F3"
Cicli = Cicli + 1
If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then
ActiveCell.Offset(-1, 1).Value = Selection.Offset(-1, 0).Value
If AAAA = 0 Then MsgBox "Cicli " & Cicli
AAAA = AAAA + 1
End If
MsgBox " AAAA " & AAAA
End Sub
Sub Azzera()
Cicli = 0
AAAA = 0
End Sub

La variabile Cicli è di 205 con AAAA a 0 poi anche AAAA incrementa il valore da 0 a 205
Inoltre commentando
Codice: Seleziona tutto
'If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then

si hanno 221 Cicli e 221 AAAA
:roll:
Che ne pensi?

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: dato copia dato

Postdi prinx » 09/12/09 10:06

Ciao ragazzi

scusatemi se ho ritardato nel rispondervi ma non sono stato presente
comunque mi fà piacere che questo mio intervento
vi ha appassionato
per quanto mi riguarda io non sono molto afferrato in materia ed oltre
a credere che la cosa era molto più semplice ho provato un pò le vostre
inserzioni ma a me non funziona niente sicuramente sbaglio in qualkosa
spero di trovare cmq una soluzione grazie
prinx
Utente Junior
 
Post: 19
Iscritto il: 02/12/09 10:43

Re: dato copia dato

Postdi Flash30005 » 09/12/09 10:57

Ciao Prinx

per non funzionare credo che tu abbia messo il codice nel modulo quindi
copia l'intero codice macro postato da Anthony l' 08/12/09 ore 17:31
e lo incolli nella sezione Vba ma non nel modulo ma nel vba project del foglio dei dati.
Quando ti trovi nel Vba editor hai due finestre:
a sinistra la finestra del progetto con i fogli e i moduli (possibilità di selezionare la sezione di lavoro)
a destra la finestra (più grande) corrispondente alla sezione di lavoro, dove vengono inserite le macro.
Nella finestra di sinistra troverai il VBAProject e un elenco dei fogli, Foglio1, Foglio2, Foglio3 come in figura
Immagine
seleziona cliccando due volte sul tuo foglio dati (non so se corrisponde a Foglio1 come in figura) e poi nella finestra di destra incolla la macro.
Chiudi la macro e prova a digitare un dato nella colonna F (dalla riga 2 alla riga 1000) e premi invio

Fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: dato copia dato

Postdi prinx » 09/12/09 11:46

GRAZIEEEEEEEEEE
funziona benissimo
siete grandi braviiiiiiiiiii
prinx
Utente Junior
 
Post: 19
Iscritto il: 02/12/09 10:43


Torna a Applicazioni Office Windows


Topic correlati a "dato copia dato":


Chi c’è in linea

Visitano il forum: Ricky0185 e 34 ospiti