Condividi:        

Macro per spostare valore da una cella alla fine di 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

Macro per spostare valore da una cella alla fine di elenco

Postdi Marco75CT » 29/06/13 13:17

Ciao forum,
ho una necessità.
Dovrei creare una macro che permetta di spostare il contenuto della cella A1 del Foglio1 nella prima cella libera della colonna A1 del Foglio2.
Mi potete aiutare?
Grazie
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Sponsor
 

Re: Macro per spostare valore da una cella alla fine di elen

Postdi peppo55 » 29/06/13 14:31

Ciao Marco75CT

un possibile metodo è questo:

Codice: Seleziona tutto
Private Sub CommandButton1_Click()
Dim iRow As Long
iRow = 1
While Sheets(2).Cells(iRow, 1) <> ""
iRow = iRow + 1
Wend
Sheets(2).Cells(iRow, 1).Value = Sheets(1).Cells(1, 1).Value
Sheets(1).Cells(1, 1).Value = ""
End Sub

peppo

Excel 2010
peppo55
Utente Senior
 
Post: 167
Iscritto il: 30/09/12 13:51

Re: Macro per spostare valore da una cella alla fine di elen

Postdi ricky53 » 29/06/13 15:28

Ciao,
prima leggi quanto ti ha proposto Peppo.

Adesso una domanda : tu vuoi "SPOSTARE" il contenuto della cella A1 del Foglio1 e non "COPIARE" ???

Solo la cella "A1" va spostata ???



COMMENTO: spesso si espone la propria esigenza semplificandola, per problemi di semplicità esplicativa, ma in questo modo si rende il quesito NON rispondete alla situazione reale !!!
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro per spostare valore da una cella alla fine di elen

Postdi ricky53 » 29/06/13 15:51

Ciao,
comunque ecco due soluzioni relative solo alla cella "A1"

A) COPIA il dato
Codice: Seleziona tutto
Sub Copia()
    UR = Sheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row + 1
    Sheets("Foglio2").Range("A" & UR) = Sheets("Foglio1").Range("A1")
End Sub




B) SPOSTA il dato
Codice: Seleziona tutto
Sub Sposta()
    Sheets("Foglio1").Range("A1").Cut
    Sheets("Foglio2").Select
    Range("A" & Range("A" & Rows.Count).End(xlUp).Row + 1).Select
    ActiveSheet.Paste
End Sub
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro per spostare valore da una cella alla fine di elen

Postdi Marco75CT » 29/06/13 16:16

Ciao Peppo55 e ricky53
grazie per la veloce risposta.
Vi invio il file che sto cercando di fare http://www.2shared.com/document/uJhAEx12/Commissioni_Master_1.html
In pratica mi servirebbe che l'operatore inserisca i dati nel Foglio1 e poi, con un pulsante, questi dati vengano trasferiti al Foglio2 e cancellati dal Foglio1.
Non so se sono stato abbastanza chiaro.
Grazie
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Macro per spostare valore da una cella alla fine di elen

Postdi peppo55 » 29/06/13 16:37

Ciao ricky53

devo dire che hai un sesto senso nel valutare le domande.
l' esempio postato da Marco75CT è tutto diverso dal spostare il contenuto di una cella da un foglio all'altro.
peppo

Excel 2010
peppo55
Utente Senior
 
Post: 167
Iscritto il: 30/09/12 13:51

Re: Macro per spostare valore da una cella alla fine di elen

Postdi ricky53 » 29/06/13 16:52

Ciao


Peppo: il numero del mio nicky ... dovrebbe farlo dedurre e poi anche la data di registrazione.


Marco: appena posso scarico il tuo file e mi faccio risentire ... penso prima con altre domande e poi con una proposta.
Per esempio inserire dei dati nel foglio1 direttamente o mediante una "Form"?
Inserire in un foglio e spostare in un altro: perchè? Per sicurezza ed evitare errori da parte dell'utente che inserisce ? Allora servono dei controlli sui dati inseriti? Ci sono già?

Termino perchè ci risentiremo dopo che avrà visto il file.


Se vuoi aggiungere altre informazioni che possano aiutarci a capire ed a fornirti una soluzione prima e sicuramente più adatta ci farai cosa gradita !!!
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro per spostare valore da una cella alla fine di elen

Postdi Marco75CT » 29/06/13 17:35

Allora Ricky,
il punto è che chi inserisce i dati nel Foglio1 non deve poter accedere al Foglio2, per evitare manomissioni.
Poi, visto che sei così disponibile, ti chiederei se è possibile immettere anche un comando che permette di aggiungere, dal Foglio1, una nuova Agenzia con la relativa commissione.
Se per errore si immette un dato sbagliato nel form del Foglio1 è possibile cancellare l'ultimo inserimento e ripetere l'operazione?
Basta, se no mi detesti.
Grazie.
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Macro per spostare valore da una cella alla fine di elen

Postdi ricky53 » 29/06/13 17:42

Ciao,
hai confermato che c'è di mezzo la sicurezza dei dati. Bene.

Si può fare tutto o quasi con excel.
E' molto importante avere chiaro subito cosa fare per impostare correttamente la struttura dati e le funzioni da fare.

Hai altre necessità?


A) Nel tuo file la convalida per scegliere l'agenzia non è impostata! Non è possibile scegliere le agenzie ma solo scriverle !!!

B) Non mi torna il calcolo che viene fatto nella cella "B11"
con Agenzia1 in A1
100 in B8
20 in B9 calcolato dalle formule
check su B10
in B11 si ottiene "22" !!!

con Agenzia2 ottengo "11" essendoci "10" in B9

Puoi chiarire?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro per spostare valore da una cella alla fine di elen

Postdi Marco75CT » 29/06/13 18:15

ricky53 ha scritto:A) Nel tuo file la convalida per scegliere l'agenzia non è impostata! Non è possibile scegliere le agenzie ma solo scriverle !!!

La convalida l'avrei presa dal Foglio3, ma mi rendo conto che devo mettere necessariamente la lista nel Foglio1 se voglio l'elenco a cascata. Pertanto si può inserire l'elenco in una colonna del Foglio1 e convalidarlo.
B) Non mi torna il calcolo che viene fatto nella cella "B11"

Il calcolo della commissione varia a seconda che viene calcolato al netto o al lordo dell'IVA (la condizione è comandata dal check).
In B9 c'è la percentuale di commissione.
La commissione in B11 è poi già comprensiva di IVA 21%.

Agenzia1 ha una commissione del 20% su un totale di € 100,00.
€ 100,00 - 10% IVA= € 90,91
20% su 90,91=€ 18,18
€ 18,18 + 21% IVA=€ 22,00
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Macro per spostare valore da una cella alla fine di elen

Postdi ricky53 » 29/06/13 18:34

Ciao,
la convalida si può fare anche se i dati sono su un altro foglio: basta definire un nome elenco ed inserire questo nome nella convalida.

Vanno protette tutte le celle ad esclusione di quelle in cui si inseriscono dei dati altrimenti ci possono essere errori.

Domanda: la cella "C9" che funzione ha?
Inserendo in C9 un importo non cambia nulla.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro per spostare valore da una cella alla fine di elen

Postdi Marco75CT » 29/06/13 18:41

Domanda: la cella "C9" che funzione ha?

In C9 c'è la possibilità di inserire manualmente una percentuale di commissione.
In effetti il controllo è da modificare, perchè ora se è presente la commissione in B9 la commissione in C9 non cambia nulla, invece dovrebbe avvenire il contrario, ma questo posso modificarlo facilmente.
Grazie
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Macro per spostare valore da una cella alla fine di elen

Postdi ricky53 » 29/06/13 21:23

Ciao,
allora:
1 i tuoi fogli avevano nomi interni (nel VBA) diversi da quelli esterni (nella barra dei fogli):
li ho allineati
2. inserisci un nome Elenco nel "Foglio3" dove hai l'elenco delle agenzie
3. inserisci la convalida in "B2" del "Foglio1" quello dove inserisci i dati
4. inserisci un pulsante ed associagli il codice che trovi avanti con
Codice: Seleziona tutto
Private Sub CommandButton1_Click()
    Call Inserisci_Dati
End Sub

5. blocca tutte le celle, comprese le due con le formule
6. sblocca solo le celle in cui inserisci i dati
7. nel "Foglio2" devi impostare il formato delle date nelle colonne "B", "C" e "D"

Codice: Seleziona tutto
Sub Inserisci_Dati()
        Dim WS1 As Worksheet, WS2 As Worksheet, UR As Long, Agenzia As String
        Set WS1 = Sheets("Foglio1")
        Set WS2 = Sheets("Foglio2")
       
        If WS1.Cells(1, 2) = "" Then
            MsgBox "Inserire l'agenzia"
            Exit Sub
        End If
        If WS1.Cells(2, 2) = "" Or WS1.Cells(3, 2) = "" Or WS1.Cells(4, 2) = "" Then
            MsgBox "Inserire le date"
            Exit Sub
        End If
        If WS1.Cells(8, 2) = "" Or WS1.Cells(8, 2) <= 0 Then
            MsgBox "Inserire l'importo"
            Exit Sub
        End If
       
        UR = WS2.Range("A" & Rows.Count).End(xlUp).Row + 1
        WS2.Cells(UR, 1) = WS1.Cells(1, 2)
        WS2.Cells(UR, 2) = WS1.Cells(2, 2)
        WS2.Cells(UR, 3) = WS1.Cells(3, 2)
        WS2.Cells(UR, 4) = WS1.Cells(4, 2)
        WS2.Cells(UR, 5) = WS1.Cells(5, 2)
        WS2.Cells(UR, 6) = WS1.Cells(6, 2)
        WS2.Cells(UR, 7) = WS1.Cells(7, 2)
        WS2.Cells(UR, 8) = WS1.Cells(8, 2)
        WS2.Cells(UR, 9) = WS1.Cells(9, 2)
        If WS1.Cells(10, 2) = True Then
            WS2.Cells(UR, 10) = "SI"
        Else
            WS2.Cells(UR, 10) = "NO"
        End If
        WS2.Cells(UR, 11) = WS1.Cells(11, 2)
       
        WS1.Range("B1") = ""
        WS1.Range("B2:B4").ClearContents
        WS1.Range("B5") = ""
        WS1.Range("B6") = ""
        WS1.Range("B7") = ""
        WS1.Range("B8") = 0
        WS1.Range("B10") = False
        Agenzia = WS2.Cells(UR, 1)
        MsgBox "Copia dei dati per l'agenzia  '" & Agenzia & "'  correttamente effettuata"
End Sub


Inserisci i dati, Click sul PULSANTE e ...

Se ti occorre un file di esempio te lo invio
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro per spostare valore da una cella alla fine di elen

Postdi Marco75CT » 30/06/13 12:28

Grande! Funziona perfettamente. Grazie.
Ora cerco far inserire con un pulsante anche le nuove agenzie.
Se non dovessi riuscirci ti faccio sapere.
Grazie ancora.
Ciao
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Macro per spostare valore da una cella alla fine di elen

Postdi Marco75CT » 30/06/13 19:38

Ciao ricky53,
tutto a posto!
Sono riuscito anche a completare le funzioni "Aggiungi ditta" e "Cancella ultimo inserimento" sulla base del tuo codice.
Grazie 1000
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Macro per spostare valore da una cella alla fine di elen

Postdi ricky53 » 30/06/13 19:39

Ciao,
bene.
Inizia e vai avanti.
In caso di necessità ... siamo QUI
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro per spostare valore da una cella alla fine di elen

Postdi Marco75CT » 13/07/13 11:21

Ciao ricky53. Ho ancora bisogno del tuo aiuto.
Avrei bisogno di un codice che, associato ad un pulsante nel foglio 1, mi faccia modificare o cancellare una riga specifica del foglio 2, selezionata dal foglio 1 con una selezione a cascata che riporti i riferimenti interni.
Per la modifica, occorre che avvenga dal foglio 1, perchè l'operatore non deve poter accedere al foglio 2.
Puoi aiutarmi?
Ti invio il file definitivo.
http://www.2shared.com/document/zlbjQNW5/Commissioni_Master1.html
Se hai altri suggerimenti utili per migliorarlo, ti prego di dirmeli.
Grazie
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Macro per spostare valore da una cella alla fine di elen

Postdi Flash30005 » 14/07/13 10:11

Nel modulo1 (visto che è vuoto)
inserisci queste macro
Codice: Seleziona tutto
Public Riga2 As Integer
Sub ModificaElimina()
Ag = [B1]
Tr = 0
'Worksheets("Foglio2").Visible = True
UR2 = Worksheets("Foglio2").Range("F" & Rows.Count).End(xlUp).Row
For RR2 = 2 To UR2
If Ag = Worksheets("Foglio2").Range("F" & RR2).Value Then
Riga2 = RR2
Tr = 1
Exit For
End If
Next RR2
If Tr = 1 Then
[B2] = Worksheets("Foglio2").Range("B" & RR2).Value
[B3] = Worksheets("Foglio2").Range("C" & RR2).Value
[B4] = Worksheets("Foglio2").Range("D" & RR2).Value
[B5] = Worksheets("Foglio2").Range("E" & RR2).Value
[B6] = Worksheets("Foglio2").Range("A" & RR2).Value
[B7] = Worksheets("Foglio2").Range("G" & RR2).Value
[B8] = Worksheets("Foglio2").Range("H" & RR2).Value
If Worksheets("Foglio2").Range("J" & RR2).Value = "SI" Then
[B10] = 1
Else
[B10] = 0
End If
[B11] = Worksheets("Foglio2").Range("K" & RR2).Value
End If
End Sub

Sub Modifica()
Worksheets("Foglio2").Range("B" & Riga2).Value = [B2]
Worksheets("Foglio2").Range("C" & Riga2).Value = [B3]
Worksheets("Foglio2").Range("D" & Riga2).Value = [B4]
Worksheets("Foglio2").Range("E" & Riga2).Value = [B5]
Worksheets("Foglio2").Range("A" & Riga2).Value = [B6]
Worksheets("Foglio2").Range("G" & Riga2).Value = [B7]
Worksheets("Foglio2").Range("H" & Riga2).Value = [B8]
End Sub

Sub Elimina()
Ag = [B1]
Worksheets("Foglio2").Rows(Riga2).Delete
        Range("B1") = ""
        Range("B2:B4").ClearContents
        Range("B5") = ""
        Range("B6") = ""
        Range("B7") = ""
        Range("B8") = 0
        Range("B10") = False
        Range("C9") = ""
        Range("B11") = ""
MsgBox Ag & " Eliminata"


End Sub

Metterai tre pulsanti
1) Richiama
2) Modifica
3) Elimina
Il pulsante Richiama sarà collegato alla macro "ModificaElimina"
Il pulsante Modifica alla macro "Modifica"
ed Elimina alla macro "Elimina"

In B1 selezionerai l'agenzia
Premi richiama e si compilerà il modello nel foglio1
ora potrai modificare alcuni campi e premere il comando Modifica
altrimenti con elimina eliminerai il record selezionato
questo è il file modificato

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: Macro per spostare valore da una cella alla fine di elen

Postdi Marco75CT » 16/07/13 18:23

Ciao Flash30005 e grazie per la preziosa risposta.
Ti chiedo, se possibile, di dirmi come poter modificare la macro, affinchè al posto di B1, i dati vengano ripresi da A15.
Grazie.
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Macro per spostare valore da una cella alla fine di elen

Postdi Anthony47 » 18/07/13 03:12

Credo che si tratti di modificare Ag = [B1] in Ag = [A15]

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

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Macro per spostare valore da una cella alla fine di elenco":

BTp Valore
Autore: MarioLombardi
Forum: Forum off-topic
Risposte: 2

Chi c’è in linea

Visitano il forum: Nessuno e 27 ospiti