Condividi:        

[excel] DDE - cicli - copia e incolla

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] DDE - cicli - copia e incolla

Postdi s3ss » 04/12/10 00:59

Salve, come al solito ringrazio tutti anticipatamente, ho letto numerosi post sul copia e incolla ma ho difficoltà a fargli fare quello che voglio. E sto qui a chiedervi un altro aiuto possibilmente.

Il problema è questo.

Ho la seguente tabella (in realtà è un po’ più complessa ma l’ho semplificata per non approfittare troppo).
Immagine
Nella riga due ci sono dei campi collegati al DDE tramite SetLinkOnData
Prezzo1-Quantità1-…-Prezzo5-Quantità5
Sono indipendenti l’uno dall’altro. Quindi si aggiornano ognuno per fatti loro.

Nel foglio uno ho cominciato a scrivere questo codice (logicamente non so se ho fatto bene):
Codice: Seleziona tutto
Sub DDE()
ActiveWorkbook.SetLinkOnData "DDE|Q_1", "Quantità1"
ActiveWorkbook.SetLinkOnData "DDE|Q_2", "Quantità2"
ActiveWorkbook.SetLinkOnData "DDE|Q_3", "Quantità3"
ActiveWorkbook.SetLinkOnData "DDE|Q_4", "Quantità4"
ActiveWorkbook.SetLinkOnData "DDE|Q_5", "Quantità5"
End Sub


Quindi quando per esempio la quantità Q_2 (in questo caso 9) legata al prezzo DDE2 (in questo caso 70) la macro in questione Quantità2 richiamata dall'evento(?), dovrebbe posizionare il valore 9 nella cella G26.

Poi DDE2 diventa 85 e Q_2 diventa 3 la macro dovrebbe andare a mettere 3 nella cella E11.

Spero di essere stato chiaro.

P.S. un dubbio che ho visto che visto che tutti i campi DDE che nella realtà sono più di 40 che si aggiornano anche 2 o 3 volte al secondo, excel come fa a gestire i dati? non è che va in tilt o mischia i dati? Cmq poi questa è una cosa che verificherò in tmepo reale (con un registratore di desktop e tanta pasienza)
s3ss
Utente Junior
 
Post: 25
Iscritto il: 11/11/10 14:19

Sponsor
 

Re: [excel] DDE - cicli - copia e incolla

Postdi Anthony47 » 04/12/10 01:51

Ma quale e' la domanda?
Inoltre poiche il dato di output e' inserito nella tabella da riga 5 in avanti dovresti descrivere come viene generata tale tabella e quale e' il significato della prima, della seconda e delle altre colonne.

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

Re: [excel] DDE - cicli - copia e incolla

Postdi s3ss » 04/12/10 03:04

:?: Giusto! la domanda :oops:

prendendiamo per il momento in considerazione solo i valori di DDE_1 cella C2 e Q_1 cella D2, poi cerco di arrangiarmi da solo.
La tabella è una tabella di esempio.

I valori nella colonna A relativa alla scala di riferimento dei prezzi li inserisco manualmente (nella realtà è una scala che va da 10.000 cella A10 a 0 cella A10010).
La colonna B è quella del MAX. E questa viene calcolata tramite formula.
La colonna da C a IV (ultima colonna possibile di excell) sono generate tramite macro. Il problema è proprio questo.

Quindi la domanda è questa.
copiare il valore di D2 (in questo caso 5) e incollarlo nella prima cella libera della riga corrispondente al valore 69 (in questo caso A27) della colonna A. Qindi incollarla in I27. Perchè 69? perchè è il valore della cella C2.

Spero di essere stato chiaro ora.


Grazie e Notte.
s3ss
Utente Junior
 
Post: 25
Iscritto il: 11/11/10 14:19

Re: [excel] DDE - cicli - copia e incolla

Postdi Flash30005 » 05/12/10 02:45

Se i valori nella colonna A sono fissi usa questa macro

Codice: Seleziona tutto
Sub InsValore1()
'con questo codice ricavi la riga
riga = 96 - Range("C2").Value
'Con questo codice valuti la prima colonna libera
UC = Range("IV" & riga).End(xlToLeft).Column + 1
'con questo codice assegni il valore di D2 dove richiesto
Cells(riga, UC).Value = Range("D2").Value
End Sub


Altrimenti utilizza questa macro

Codice: Seleziona tutto
Sub InsValore2()
'con questo codice ricavi il numero di righe
UR = Range("A" & Rows.Count).End(xlUp).Row

'Con il ciclo Forn next trovi il valore (e quindi la riga)
For RR = 6 To UR
If Range("C2").Value = Range("A" & RR).Value Then
riga = RR
GoTo esci
End If
Next RR
esci:

'Con questo codice valuti la prima colonna libera
UC = Range("IV" & riga).End(xlToLeft).Column + 1
'con questo codice assegni il valore di D2 dove richiesto
Cells(riga, UC).Value = Range("D2").Value
End Sub


La macro scelta andrà inserita nel tuo codice di aggiornamento del foglio e quindi si attiverà ad ogni ciclo

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: [excel] DDE - cicli - copia e incolla

Postdi s3ss » 05/12/10 15:22

:) GRAZIE è perfetta :)
anche se pensavo che il numero di colonne di excel fossero di più di 256.
Ma questo funziona anche con excel 2007? o nel 2007 oltre alla grafica cambia il modo di programmare le macro?
s3ss
Utente Junior
 
Post: 25
Iscritto il: 11/11/10 14:19

Re: [excel] DDE - cicli - copia e incolla

Postdi Flash30005 » 05/12/10 15:33

I codici usati in questa macro sono compatibili con tutte le versioni di office
cosa che non succede a volte utilizzando una macro, soprattutto se registrata, di office 2007 riesca a funzionare in versioni precedenti di office.

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-


Torna a Applicazioni Office Windows


Topic correlati a "[excel] DDE - cicli - copia e incolla":


Chi c’è in linea

Visitano il forum: Nessuno e 124 ospiti