Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

EXCEL Macro copia e incolla dati e accodali in elenco

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

EXCEL Macro copia e incolla dati e accodali in elenco

Postdi nikfitz » 01/05/07 14:19

ciao a tutti,avrei un problema da porre a voi programmatori visto che è la prima volta che uso visual basic:
sono in excel e ho un elenco di 10 voci scritte sul foglio1 tra le colonne A B C e le prime 10 righe(es. A= cognome, B=indirizzo, C=tel. e poi sotto tutti i dati). Vorrei essere capace di pormi su una qualsiasi delle 10 righe e tramite un pulsante prelevarne il contenuto e accodarlo in un altro elenco che si trova sullo stesso foglio per esempio nelle colonne F,G,H.
COME POSSO FARE?
la mia difficoltà stà nello stabilire dei riferimenti generici cosicchè eviterei di scrivere tante macro quante sono le voci in elenco.Grazie 8)
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54

Sponsor
 

Postdi Anthony47 » 01/05/07 23:44

Ciao nik e benvenuto nel forum.
Col vba hai a disposizione vari metodi per eseguire una operazione, tra cui i piu’ semplici sono:
-tutte le volte che selezioni una cella
-quando ci fai doppioclick
-quando ci fai “tasto destro”
-dopo averla selezionata, con un “pulsante” o con una sequenza di caratteri (tipo Contr-X)
Quale di questi ti sembra preferibile?

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Macro copia incolla e incolonna dati a partire da una cella

Postdi nikfitz » 05/05/07 23:59

Ciao, scusate ma sono impegnatissimo a studiare visual basic. Un buon consiglio comunque e ben accetto. Allora vi spiego brevemente il problema: ho un elenco di dati, p.e. da A1 a A10; vorrei pormi in A5 e copiare il suo contenuto (con un pulsante sullo schermo dove metterò la macro) in C4 per esempio; poi pormi in A1 (o tra A7 non importa) e copiare il suo contenuto in C5 cioè incolonnandolo al precedente. E' questa la mia difficoltà non so incolonnare i dati in un elenco quando li vado a prendere da altre parti. Il caso pratico può essere un buono d'ordine sul quale si devono incolonnare tutte le voci provvenienti da un listino, tanto per capirci. Spero di essere stato chiaro e vi ringrazio in anticipo per la disponibilità. Ciao :D :D :D
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54

Postdi Anthony47 » 07/05/07 11:34

Ok, mi pare che tra i metodi proposti sceglieresti il 4 (selezione della cella, poi copia con un “pulsante” o con una sequenza di caratteri).

In questa situazione ti potrebbe aiutare una macro come questa:
Codice: Seleziona tutto
Sub nik()
DEST = "C"     '<<<< Indicare la colonna in cui copiare
Selection.Range("A1").Copy
Range(DEST & "65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub


Questa prende la prima cella dell' area selezionata e la copia in colonna C, accodandola alle informazioni preesistenti.
Nella prima istruzione puoi modificare la colonna in cui vai a scrivere (cambi la lettera come ti serve).
Se invece della pura copia e' necessario fare un copia-speciale-valore, allora userai
Codice: Seleziona tutto
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

al posto di ActiveSheet.Paste
Se vuoi copiare due valori affiancati (es. descrizione e costo), allora potresti usare l' istruzione
Codice: Seleziona tutto
Selection.Range("A1:B1").Copy

al posto di Selection.Range("A1").Copy ; in questo modo copierai 2 colonne per volta, che saranno incollate in col C e colonna D; ovviamente potresti scrivere anche Selection.Range("A1:C1").Copy per copiare 3 colonne, e cosi' via.

Se devi cambiare file o foglio puoi inserire istruzioni quali
Codice: Seleziona tutto
    Windows("Archivio.xls").Activate
    ....
    Sheets("Foglio2").Select


Il pulsante lo trovi tra i simboli presenti nella barra degli strumenti “Moduli”; nella fase di creazione del pulsante ti sara’ chiesto a quale macro vuoi associarlo, sceglierai ovviamente “nik”.

Hai abbastanza spunti, credo. Prova e fatti sentire.
Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi cassioli » 09/05/07 09:52

scrivere in maiuscolo il titolo per attirare l'attenzione sul proprio thread non è bello... E' come entrare in una stanza urlando "EHI, ASCOLTATE TUTTI ME, LASCIATE PERDERE QUELLO CHE STANNO DICENDO GLI ALTRI" :mmmh:
cassioli
Utente Senior
 
Post: 1014
Iscritto il: 05/03/04 11:02

EXCEL Macro copia e incolla dati e accodali in elenco

Postdi nikfitz » 19/05/07 00:17

SEI UN GRANDE ANTHONY, GUARDA SE TI PIACE QUESTA MACRO CHE HO COMPOSTO CON ALCUNI SPUNTI, TRA CUI I TUOI:

Sub Macro1()
Dim Reponse As String
Reponse = MsgBox("Volete inserire l'articolo?", vbYesNo)
If Reponse = vbYes Then
MsgBox "Confermare"
Else
MsgBox "Articolo non inserito"
Exit Sub
End If
StartCol = "K65536"
EndCol = Range("K1").Column
ActiveSheet.Shapes("Immagine").Select 'inserisco il nome immagine
Selection.Copy
Range(StartCol).End(xlUp).Offset(1, 2).Select 'regolare quì
ActiveSheet.Paste
Range("A5:D5").Copy 'vario il range
Range(StartCol).End(xlUp).Offset(1, -1).Select 'regolare quì
Selection.Value = ""
If Selection.Offset(0, 1).Value = "" Then
Selection.Offset(0, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
GoTo init
End If
Selection.End(xlToRight).Offset(0, 1).Select
If Selection.Column > EndCol Then
Range(StartCol).End(xlUp).Offset(1, -1).Value = ""
Range(StartCol).End(xlUp).Offset(1, 0).Select
End If
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
init:
Application.CutCopyMode = False
End Sub

è un pò scopiazzata ma funziona. Ora il mio problema è riempire altri due moduli con gli stessi dati in due fogli differenti della stessa cartella (come se fossero collegati insomma). Riesco a collegare il contenuto delle celle (con il collegamento semplice =) ma non riesco a trasferire l'immagine............HELP ME..... :aaah :aaah
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54

Postdi Anthony47 » 21/05/07 01:04

Ciao nik.
è un pò scopiazzata ma funziona. Ora il mio problema è riempire altri due moduli con gli stessi dati in due fogli differenti della stessa cartella (come se fossero collegati insomma). Riesco a collegare il contenuto delle celle (con il collegamento semplice =) ma non riesco a trasferire l'immagine...

Trarre ispirazione in giro e’ cosa buona e furba; e quando funziona e’ una soddisfazione in piu'.

Per quanto riguarda la domanda, essa non mi e' molto chiara; se hai bisogno di incollare una copia di una immagine in piu’ posti devi appunto fare quello: copiarla una volta, poi incollarla in piu’ posti.

Ma forse non ho afferrato bene.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi nikfitz » 24/05/07 23:08

Grazie per l'interesse che dimostrate. Annullo la mia precedente richiesta perchè ho trovato la soluzione che vi propongo di seguito. Ora ho un'altro problema: Se proteggo i fogli con una password non funziona nulla. Che stringa devo aggiungere per sbloccare temporaneamente i fogli(esempio password "pippo")? che tringa poi devo riaggiungere per ribloccare i fogli nuovamente con la stessa password?
In sostanza ho bisogno che i dati dei due fogli non debbano essere modificati(per cui li proteggo). Chi ci metterà le mani potrà solo premere un pulsante abbinato a questa macro. Grazie a tutti :D :) :D :)






Sub trasporta()

Dim Reponse As String
Reponse = MsgBox("Volete inserire l'articolo?", vbYesNo)
If Reponse = vbYes Then
Else
Exit Sub
End If


Sheets("1").Activate
DEST = "K" '<<<< Indicare la colonna in cui copiare
ActiveSheet.Shapes("Immagine").Select '<<<< Indicare immagine da copiare
Selection.Copy
Range(DEST & "65536").End(xlUp).Offset(1, 2).Select
ActiveSheet.Paste
Range("A5:F5").Copy
Range(DEST & "65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

Sheets("2").Activate
DEST = "A" '<<<< Indicare la colonna in cui copiare
Sheets("1").Shapes("Immagine").Copy '<<<< Indicare immagine da copiare
Range(DEST & "65536").End(xlUp).Offset(1, 2).Select
ActiveSheet.Paste
Sheets("1").Range("A5:F5").Copy
Range(DEST & "65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False


Sheets("1").Activate
Range("K5").Select
End Sub
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54

Postdi Anthony47 » 26/05/07 01:57

Ciao nik.
Puoi usare le istruzioni Sheets(1).Protect e Sheets(1).Unprotect; ci sono state varie richieste analoghe, ad esempio guarda qui:
http://www.pc-facile.com/forum/viewtopic.php?t=57976

Come ulteriore informazione, invece dell’ indice puoi usare anche il nome foglio, es. Sheets("Foglio1").Protect etc etc.

Risolve?
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Excel macro copia,incolla e accoda in elenco

Postdi nikfitz » 27/05/07 00:04

:lol: :lol: Grazie anthony avevo già dato un'occhiata ai tuoi suggerimenti. Il discorso si fà sempre più interessante. Come vedi la macro che ho aggiornato mi permette di sbloccare i fogli temporaneamente, eseguire le istruzioni e riproteggerli con password alla fine. Ora (tanto per cambiare) il mio problema e questo: Se avessi 100 articoli in elenco e volessi modificare la password, come noterai sarei costretto ad effettuare 400 modifiche (ad ogni articolo corrisponde una macro che gli permette di essere copiato da un foglio all'altro). Esiste uno stratagemma che mi permetta di sproteggere un foglio a prescindere dalla password che inserisco? (una sorta di sblocco forzato insomma)Al posto di:

ActiveSheet.Unprotect Password:="pippo" '<<<< impostare password

posso inserire un'altro tipo di codice che mi sblocchi il foglio senza specificare la password?
Leggevo qualcosa sull'istruzione Userinterface che permette l'esecuzione in VBA anche se il foglio è protetto; qualcuno ha qualche esperienza da condividere?

Grazie a tutti e a presto :?: :idea: :?: :idea: :D :D :D



Sub Copiaeincolla()

Dim Reponse As String
Reponse = MsgBox("Volete inserire l'articolo?", vbYesNo)
If Reponse = vbYes Then
Else
Exit Sub
End If


Sheets("1").Activate
ActiveSheet.Unprotect Password:="pippo" '<<<< impostare password
DEST = "K"
ActiveSheet.Shapes("Immagine").Select '<<<< impostare immagine da copiare
Selection.Copy
Range(DEST & "65536").End(xlUp).Offset(1, 2).Select
ActiveSheet.Paste
Range("A5:F5").Copy '<<<< impostare range
Range(DEST & "65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

Sheets("2").Activate
ActiveSheet.Unprotect Password:="pippo" '<<<< impostare password
DEST = "A"
Sheets("1").Shapes("Immagine").Copy '<<<< impostare immagine da copiare
Range(DEST & "65536").End(xlUp).Offset(1, 2).Select
ActiveSheet.Paste
Sheets("1").Range("A5:F5").Copy '<<<< impostare range
Range(DEST & "65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
ActiveSheet.Protect DrawingObjects:=True, _
Contents:=True, Scenarios:=True, Password:="pippo" '<<<< impostare password


Sheets("1").Activate
Range("K5").Select
ActiveSheet.Protect DrawingObjects:=True, _
Contents:=True, Scenarios:=True, Password:="pippo" '<<<< impostare password

End Sub
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54

Postdi Anthony47 » 27/05/07 21:02

Come "100 macro"? Come “ad ogni articolo corrisponde una macro che gli permette di essere copiato da un foglio all'altro”?
E come pensi di poter attivare 100 macro?

La mia risposta e’ che hai bisogno di 1 macro parametrizzata; se spieghi come e’ fatto il tuo foglio magari viene fuori qualche suggerimento piu’ mirato.
Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Macro copia

Postdi nikfitz » 28/05/07 11:23

:-? hai ragione sicuramente esiste un procedimento più semplice di quello a cui sono arrivato io. Allora il mio foglio é composto da quattro colonne e cento righe. A ogni riga corrispondono tre voci e una figura. Devo essere in grado di spostare questi quattro elementi da questo foglio ad un'altro (dati e figura). Ho pensato ad una macro che tramite i riferimenti relativi mi copia di volta in volta dati e figura contemporaneamente. La macro é collegata alla figura stessa perchè mi torna comodo così. Siccome ci sono cento righe (quindi 100 figure e altrettante terzine di dati da copiare) ho pensato che l'unico modo di copiare i dati fosse quello di associare ad ogni riga una macro perchè i riferimenti relativi sono diversi ogni volta. Ora se esiste un metodo per copiare dati che si trovano in punti differenti senza specificare ogni volta i riferimenti sarebbe meraviglioso (ho pensato anche ad "activecell" ma non é molto pratico). Il foglio é fatto così:

(cella A1:figura1) (cella B1: dato) (cella C1: dato) (cella D1: dato)
(cella A2:figura2) (cella B2: dato) (cella C2: dato) (cella D2: dato)
(cella A3:figura3) (cella B3: dato) (cella C3: dato) (cella D3: dato)
COS' VIA FINO A 100.......
<<se clicco sulla figura1 copio: figura1,B1,C1,D1 nel foglio2 per esempio; poi se dopo clicco sulla figura3 devo copiare: figura3,B3,C3,D3 sotto figura1,B1,C1,D1 nel foglio2. Così via se scelgo uno qualsiasi dei 100 articoli>>.
Spero di essere stato chiaro. Ciao e grazie. :) :)
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54

Postdi Anthony47 » 28/05/07 22:15

La mia ipotesi e’ la seguente:
-selezioni una riga, quella con l’ articolo che interessa copiare
-lanci LA macro (sempre la stessa)

Sulla base del codice postato (che non corrisponde alla descrizione data), guarda ed eventualmente prova questa macro:

Codice: Seleziona tutto
Sub LaMacro()
Dim Reponse As String
SelRow = ActiveCell.Row         '<<Ant
Rows(SelRow).Select     '<<
Mess = "Articolo: " & Range("B" & SelRow).Value & vbCrLf & "Volete inserire?"   '<<Ant
Reponse = MsgBox(Mess, vbYesNo)     '<<Ant
If Reponse = vbNo Then Exit Sub     '<<Ant
'Reponse = MsgBox("Volete inserire l'articolo?", vbYesNo)
'If Reponse = vbYes Then
'Else
'Exit Sub
'End If

NomeImm = "Figura" & SelRow     '<<Ant

Sheets("1").Activate
ActiveSheet.Unprotect Password:="pippo" '<<<< impostare password
DEST = "K"
ActiveSheet.Shapes(NomeImm).Select     '<<Ant
'ActiveSheet.Shapes("Immagine").Select   '<<<< impostare immagine da copiare
Selection.Copy
Range(DEST & "65536").End(xlUp).Offset(1, 2).Select
ActiveSheet.Paste
Range("B" & SelRow).Range("A1:C1").Copy  '<<Ant
'Range("A5:F5").Copy '<<<< impostare range
Range(DEST & "65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False



Sheets("2").Activate
ActiveSheet.Unprotect Password:="pippo" '<<<< impostare password
DEST = "A"
Sheets("1").Shapes(NomeImm).Copy     '<<Ant
'Sheets("1").Shapes("Immagine").Copy '<<<< impostare immagine da copiare
Range(DEST & "65536").End(xlUp).Offset(1, 2).Select
ActiveSheet.Paste
Sheets("1"). Range("B" & SelRow).Range("A1:C1").Copy   '<<Ant
'Sheets("1").Range("A5:F5").Copy '<<<< impostare range
Range(DEST & "65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
ActiveSheet.Protect DrawingObjects:=True, _
Contents:=True, Scenarios:=True, Password:="pippo" '<<<< impostare password

Sheets("1").Activate
ActiveSheet.Protect DrawingObjects:=True, _
Contents:=True, Scenarios:=True, Password:="pippo" '<<<< impostare password

End Sub


Sono partito dalle tue istruzioni, alcune le ho annullate (simbolo del “commento” a inizio riga), alcune le ho aggiunte (sono quelle che come commento hanno <<Ant).

Cosa fa la nuova macro:
-legge la riga selezionata al momento del lancio, e la evidenzia
-segnala tramite MsgBox quale articolo risulta selezionato e chiede conferma se copiare o meno; come descrizione dell' articolo ho usato (alla cieca) il contenuto di col B: se non e’ corretto, modificare l’ istruzione che genera Mess
-in funzione della riga N selezionata, identifica FiguraN come l’ immagine da copiare
-copia Figura N e copia le colonne B,C,D della riga selezionata; in proposito tu descrivi 3 colonne da copiare (appunto B,C,D), ma la tua macro copia A5:F5: non sapendo a chi dare ragione ho optato per 3 colonne, quindi se non e’ cosi’ ci sono le istruzioni “.Copy” da modificare.

Vedi se quanto proposto ti da’ uno spunto. Mi raccomando: sempre 2 copie di backup prima di lanciare la macro; eventualmente fai prima un ciclo in passo-passo per seguire l’ esecuzione.

Ciao, fai sapere.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi nikfitz » 29/05/07 22:48

:o :o Grazie l'istruzione del copia riga è quella che mi mancava. Ho iniziato a studiare VBA da tre settimane e ci metto un pò prima di interpretare i codici. L'esempio che ti ho fatto del foglio era semplificativo, comunque vedo che hai capito. Funziona tutto tranne il discorso dell'immagine. Ad ogni riga corrisponde un'immagine diversa che non posso rinominare allo stesso modo. Per far funzionare la macro devo andare ogni volta a variare il nome dell'immagine e così non va bene. Dovrebbe funzionare tutto con una macro........
Esiste un'istruzione che mi selezioni l'immagine corrispondente alla riga selezionata senza specificarne il nome?
Grazie ancora............a settembre tornerò sui banchi a studiare informatica. :idea: :idea: :idea:
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54

Postdi Anthony47 » 30/05/07 15:53

Ad ogni riga corrisponde un'immagine diversa che non posso rinominare allo stesso modo. Per far funzionare la macro devo andare ogni volta a variare il nome dell'immagine e così non va bene.

Mi sembrava troppo facile che le immagini fosero state rinominate tutte, come nella descrizione che avevi fatto.
Allora prova a sostituire l' istruzione
Codice: Seleziona tutto
NomeImm = "Figura" & SelRow     '<<Ant


con queste:

Codice: Seleziona tutto
CurPos = Range("A" & SelRow).Address
For Each Pict In ActiveSheet.Shapes
  NomeImm = Pict.Name
  If Pict.TopLeftCell.Address = CurPos Then Exit For
Next Pict


Non e' ottimizzata per gestire un elevato numero di immagini; in alternativa, si potrebbe scrivere in ogni cella della colonna A il nome dell' immagine che vi compare (se le celle Axx sono libere), con una macro all' apertura del workbook che sfrutti le opzioni .Name e .Address degli oggetti Forme.

Ciao, fai sapere come procede.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi nikfitz » 30/05/07 22:00

:-? :-? Niente da fare, mi segnala un'errore che mi dice che l'area su cui si deve icollare é diversa da quella di origine. Oppure sono io che non so inserire il codice al posto giusto. Tre settimane non sono sufficienti per elaborare una macro più complessa. Dunque calma e facciamo un passo indietro. Semplifichiamo il tutto anche perchè sono cambiate le mie esigenze; il mio foglio é ora così composto:
Foglio "1"
(cella A1:dato) (cella B1: dato) (cella C1: figura1) (cella D1: dato)
(cella A2:dato) (cella B2: dato) (cella C2: figura2) (cella D2: dato)
(cella A3:dato) (cella B3: dato) (cella C3: figura3) (cella D3: dato)
COS' VIA FINO A 100.......

Il Foglio "2" contiene il modello che deve essere compilato

il codice che ora funziona se definisco il nome della figura é questo:

Sub LaMacro()
Dim Reponse As String
SelRow = ActiveCell.Row
Rows(SelRow).Select
Mess = "Articolo: " & Range("A" & SelRow).Value & vbCrLf & "Volete inserire?"
Reponse = MsgBox(Mess, vbYesNo)
If Reponse = vbNo Then Exit Sub
'Reponse = MsgBox("Volete inserire l'articolo?", vbYesNo)
'If Reponse = vbYes Then
'Else
'Exit Sub
'End If


Sheets("1").Activate
ActiveSheet.Shapes("figura1").Select '<<<< impostare nome immagine da copiare
Selection.Copy
Sheets("2").Activate
DEST = "A"
Range(DEST & "65536").End(xlUp).Offset(1, 2).Select
ActiveSheet.Paste
Sheets("1").Activate
Range("A" & SelRow).Range("A1:D1").Copy '<<<< impostare range
Sheets("2").Activate
DEST = "A"
Range(DEST & "65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteFormulasAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub

Il problema resta sempre che se mi metto nella riga "2", i dati riesco a copiarli ma per copiare la "figura2" devo impostare il nome dell'immagine da copiare (figura2).
Non ho capito dove devo inserire i codici che mi hai postato. Puoi inserirmeli nel codice che ti stò mandando? Grazie, lo sò che è troppo facile così. Abbi pazienza...... :D :D :D
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54

Postdi Anthony47 » 31/05/07 00:03

Ho fatto ancora qualche cambiamento, anche se alla cieca.
Prova questa; le istruzioni "tolte" sono solo state commentate.

Codice: Seleziona tutto
Sub LaMacro()
Dim Reponse As String
SelRow = ActiveCell.Row
Rows(SelRow).Select
Mess = "Articolo: " & Range("A" & SelRow).Value & vbCrLf & "Volete inserire?"
Reponse = MsgBox(Mess, vbYesNo)
If Reponse = vbNo Then Exit Sub
'Reponse = MsgBox("Volete inserire l'articolo?", vbYesNo)
'If Reponse = vbYes Then
'Else
'Exit Sub
'End If

'>>>>Aggiunti>>>
Sheets("1").Activate
CurPos = Range("A" & SelRow).Address
For Each Pict In ActiveSheet.Shapes
Pict.Select
If Pict.TopLeftCell.Address = CurPos Then Exit For
Next Pict
'<<<<Aggiunti<<<


'>>>Tolte le prossime 2
'Sheets("1").Activate
'ActiveSheet.Shapes("figura1").Select '<<<< impostare nome immagine da copiare
'>>>Continua>>>>
Selection.Copy
Sheets("2").Activate
DEST = "A"
Range(DEST & "65536").End(xlUp).Offset(1, 2).Select
ActiveSheet.Paste
Sheets("1").Activate
Range("A" & SelRow).Range("A1:D1").Copy '<<<< impostare range
Sheets("2").Activate
DEST = "A"
Range(DEST & "65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteFormulasAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub


Se non funziona mi devi pero' dire, andando in debug al momento dell' errore, su quale istruzione cio' avviene (istruzione colorata di giallo) e in quale circostanza.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi nikfitz » 31/05/07 08:46

:lol: :o :o BENE GRAZIE questa funziona, ho solo modificato il riferimento dell'immagine (che si trova nella colonna "C"). Adesso posso andare avanti. Sei un grande. A presto :P :P
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54


Torna a Applicazioni Office Windows


Topic correlati a "EXCEL Macro copia e incolla dati e accodali in elenco":


Chi c’è in linea

Visitano il forum: Nessuno e 14 ospiti