Condividi:        

Macro cerca valore e copia le celle stessa riga

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 cerca valore e copia le celle stessa riga

Postdi Marco75CT » 01/03/14 19:31

Ciao Ragazzi,
ho un file excel 2010 con più fogli.
Nel foglio1 ho una griglia con in colonna: data, fattura, descrizione, fornitore, articolo, UM, Conf., Q.tà, Prezzo, Sc1, Sc2, IVA, Imponibile, Importo, Cat. Merc.
Nel foglio3 ho una griglia con in colonna: descrizione, fornitore, articolo, UM, Conf., Prezzo, Sc1, Sc2, IVA, Cat. Merc. ma nella prima riga non ci sono i titoli, ma direttamente i dati, perchè ho la necessità, ad ogni nuovo inserimento (macro fatta da me), che la colonna venga messa in ordine alfabetico.
Ho creato delle fomule con cerca.vert per far si che all'inserimento della descrizione nel foglio1, le celle successive (sulla stessa riga) si popolano con le informazioni che ci sono nel foglio3 e, fin qui, nessun problema.
Il problema nasce quando per gli stessi articoli (quindi descrizione), ci sono prezzi o sconti diversi (nel tempo possono variare).
A quel punto, per far si che non si modifichino i dati delle precedenti forniture, sono obbligato a duplicare l'articolo, con i dati differenti ma, così facendo, quando andrò a creare dei grafici, mi daranno 2 o più articoli, anche se in effetti si tratta dello stesso.
Avevo pensato ad una macro che, all'inserimento della descrizione, premendo un pulsante, mi popola le celle di fianco, andando a prendere i dati dal foglio3, ma non ho idea di come realizzarla.
Mi date una mano?
Grazie
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Sponsor
 

Re: Macro cerca valore e copia le celle stessa riga

Postdi ricky53 » 01/03/14 21:23

Ciao,
ottima descrizione delle tue necessità
Finalmente un utente che spiega in modo chiaro, semplice e schematico.
BRAVO !!!
Meriteresti di avere subito il codice "CHIAVI in MANO" ma la politica dei forum NON è questa quindi partiamo con il primo consiglio

Un solo NEO: non ho capito la frase seguente
Avevo pensato ad una macro che, all'inserimento della descrizione, premendo un pulsante, mi popola le celle di fianco, andando a prendere i dati dal foglio3, ma non ho idea di come realizzarla.


Inoltre dovresti allegare la macro che utilizzi.

La riga di intestazione è bene averla anche nel foglio3 i dati cominceranno dalla riga 2 e potrai ordinarli come ti occorrono con l'opzione che dirà che c'è la riga di intestazione

Opera in questo modo:
1. attiva il registratore di macro
2. copia tre o quattro dati dal foglio1 al foglio3
3. cancella i dati inseriti nella griglia del foglio1

Fermato il registratore si deve automatizzare l'operazione, quindi, occorrerà individuare la prima riga vuota del foglio3 sul quale copiare i dati

Invia il codice che ti fornisce il registratore e lo adattiamo
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 cerca valore e copia le celle stessa riga

Postdi ricky53 » 01/03/14 21:54

Ciao,
ho riletto il tuo intervento e ... a causa del "NEO" probabilmente la risposta che ti ho dato (ossia di utilizzare il registratore di macro con i passi descritti) non è quello che ti occorre.

Attendo il tuo codice che utilizzi nei nuovi inserimenti e il chiarimento relativo al "NEO"
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 cerca valore e copia le celle stessa riga

Postdi Marco75CT » 02/03/14 09:14

Ciao ricky53 e grazie per la rapida risposta.
Ecco il codice che utilizzo per copiare i dati:
Codice: Seleziona tutto
Sub nuovo_articolo()
        Dim WS1 As Worksheet, WS3 As Worksheet, UR As Long
        Set WS1 = Sheets("Foglio1")
        Set WS3 = Sheets("Foglio3")
       
        If WS1.Cells(7, 3) = "" Then
            MsgBox "Inserire descrizione articolo"
            Exit Sub
        End If
        If WS1.Cells(7, 6) = "" Then
            MsgBox "Inserire fornitore"
            Exit Sub
        End If
        If WS1.Cells(7, 9) = "" Then
            MsgBox "Inserire codice articolo"
            Exit Sub
        End If
        If WS1.Cells(7, 10) = "" Then
            MsgBox "Inserire unità di misura"
            Exit Sub
        End If
        If WS1.Cells(7, 11) = "" Then
            MsgBox "Inserire quantità confezioni"
            Exit Sub
        End If
        If WS1.Cells(7, 13) = "" Then
            MsgBox "Inserire prezzo articolo"
            Exit Sub
        End If
        If WS1.Cells(7, 14) = "" Then
            MsgBox "Inserire sconto1 articolo"
            Exit Sub
        End If
        If WS1.Cells(7, 15) = "" Then
            MsgBox "Inserire sconto2 articolo"
            Exit Sub
        End If
        If WS1.Cells(7, 16) = "" Then
            MsgBox "Inserire IVA articolo"
            Exit Sub
        End If
        If WS1.Cells(7, 20) = "" Then
            MsgBox "Inserire Categoria"
            Exit Sub
        End If

        UR = WS3.Cells(Rows.Count, 1).End(xlUp).Row + 1
        WS3.Cells(UR, 1) = WS1.Cells(7, 3)
        WS3.Cells(UR, 2) = WS1.Cells(7, 6)
        WS3.Cells(UR, 3) = WS1.Cells(7, 9)
        WS3.Cells(UR, 4) = WS1.Cells(7, 10)
        WS3.Cells(UR, 5) = WS1.Cells(7, 11)
        WS3.Cells(UR, 6) = WS1.Cells(7, 13)
        WS3.Cells(UR, 7) = WS1.Cells(7, 14)
        WS3.Cells(UR, 8) = WS1.Cells(7, 15)
        WS3.Cells(UR, 9) = WS1.Cells(7, 16)
        WS3.Cells(UR, 10) = WS1.Cells(7, 20)

    Columns("A:A").Select
    ActiveWorkbook.Worksheets("Foglio3").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Foglio3").Sort.SortFields.Add Key:=Range("A1"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Foglio3").Sort
        .SetRange Range("A:AA")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Sheets("Foglio1").Select
    Range("C7").Select
    MsgBox "Inserimento articolo correttamente effettuato"
End Sub



Ecco il link per il download del file excel:
Codice: Seleziona tutto
http://speedy.sh/3cusu/CDG.xlsm
(psw: gerezosivozo)

Riguardo al "NEO" mi spiego meglio: quando inserisco la descrizione dell'articolo, ho la necessità che, se l'articolo è già stato precedentemente caricato, la macro mi restituisca i relativi dati, posti sulla stessa riga.

Spero di essere stato chiaro.

Grazie per la pazienza.
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Macro cerca valore e copia le celle stessa riga

Postdi ricky53 » 03/03/14 02:19

Ciao,
adesso è tardi ... a domani per proseguire.
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 cerca valore e copia le celle stessa riga

Postdi Marco75CT » 04/03/14 19:47

Ciao, novità?
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Macro cerca valore e copia le celle stessa riga

Postdi Marco75CT » 07/03/14 19:33

Meriteresti di avere subito il codice "CHIAVI in MANO"

Non così velocemente!
:lol:
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Macro cerca valore e copia le celle stessa riga

Postdi ricky53 » 07/03/14 20:20

ciao,
mi spiace ma in questi giorni non ho un minuto libero neanche per me. sto tornando adesso a casa e, non guidando io, ti scrivo dal tablet. spero al piu' presto di farmi sentire perche' avevi esposto bene il quesito e meritavi un'attenzione adeguata
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 cerca valore e copia le celle stessa riga

Postdi ricky53 » 08/03/14 01:43

Ciao,
in caso che la stessa descrizione, nel "Foglio3", sia presente più volte vanno presi i dati dall'ultima riga con i dati corrispondenti alla "descrizione" selezionata?
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 cerca valore e copia le celle stessa riga

Postdi Marco75CT » 08/03/14 07:02

Ciao ricky,
non devi scusarti, io scherzavo! mi stai aiutando e meriti tutto il mio rispetto.
Tornando al problema, una volta sistemato il file, pensavo di omettere nel Foglio3 i valori dei prezzi e degli sconti, in quanto variabili e lasciare tutto il resto, così che l'inserimento del prodotto non si ripeta. Ovviamente nel Foglio1 i prodotti dovranno necessariamente essere inseriti più volte, e le tariffe e sconti inseriti manualmente.
Spero di essere stato chiaro.
A presto
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Macro cerca valore e copia le celle stessa riga

Postdi ricky53 » 08/03/14 11:15

Ciao,
però la tua frase mi crea un certo scompiglio in quello che mi ero creato come situazione dei dati e sul tentativo di soluzione.
Puoi chiarire meglio
Tornando al problema, una volta sistemato il file, pensavo di omettere nel Foglio3 i valori dei prezzi e degli sconti, in quanto variabili e lasciare tutto il resto, così che l'inserimento del prodotto non si ripeta.


Per inserire i dati nel foglio1 lo sconto serve perchè lo vuoi eliminare?

Non mi è più chiaro il flusso.
Cortesemente puoi riepilogare tutti i passi che fai e che vorresti fare.
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 cerca valore e copia le celle stessa riga

Postdi Anthony47 » 08/03/14 12:26

C' e' un messaggio di Ricky prima di questo...
Io non ho seguito la discussione e potrei aver capito male l' esigenza... Comunque userei le formule solo in riga 7, seguendo la logica che hai usato invece nelle righe successive.
Quando il dato e' pronto, un pulsante copia i "valori" presenti in riga 7 e li incolla in coda all' elenco gia' presente nelle righe sottostanti.
Un codice idoneo per questa funzionalita' e' il seguente:
Codice: Seleziona tutto
Sub NewArt()
Dim NextR As Long
'
If Range("C7").Value <> "" And Range("L7").Value <> 0 Then
NextR = Cells(Rows.Count, "C").End(xlUp).Row + 1
Cells(NextR, "C").Resize(1, 16) = Range("C7").Resize(1, 16).Value
    Range("C7, L7").ClearContents
Else
    MsgBox ("Caricare un Articolo in C7 e la Quantita' in L7")
End If
If ActiveWindow.Split Then ActiveWindow.Panes(1).Activate
If Range("C7") = "" Then Range("C7").Select Else Range("L7").Select
End Sub
Ricorda: la macro controlla che ci sia un articolo e una quantita', non che gli altri campi siano compilati correttamente. Poi scrive nella zona sottostante, quindi dalla riga 8 in giu', i "valori" presenti in riga 7; eventuali formule saranno quindi eliminate. Quando l' anagrafica di Foglio3 dovesse cambiare, il contenuto di Foglio1 rimarra' ovviamente immodificato, mentre i nuovi contenuti rispecchieranno la nuova anagrafica.

Se questa logica fosse idonea allora suggerirei di eliminare il "SE.ERRORE" nelle formule del Cerca.Vert per avere l' evidenza che l' articolo non e' stato trovato nell' anagrafica di Foglio3. Come pure eliminerai Formule e Convalida dalle righe 8 in giu.

Spero che la proposta non destabilizzi i ragionamenti fin qui fatti.

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

Re: Macro cerca valore e copia le celle stessa riga

Postdi Marco75CT » 08/03/14 14:08

@Anthony47
Grazie per la risposta.
Il codice funziona, ma non risponde alle mie esigenze.
Il Foglio1 contiene i dati delle fatture di acquisto.
Il Foglio3 contiene la lista dei prodotti.
La logica è che, quando inserisco un nuovo prodotto nel Foglio1, se non è mai stato registrato, venga aggiunto nel Foglio3, se invece è già stato inserito, nel Foglio1, vengano riportati i dati dell'ultimo inserimento (a tal proposito, dico a ricky che effettivamente il prezzo e gli sconti, dovrebbero comparire automaticamente, ma non comprendo come fare a far comparire sempre l'ultimo, se il nuovo inserimento non modifica il precedente).
Scusate se non riesco ad essere più chiaro.
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Macro cerca valore e copia le celle stessa riga

Postdi ricky53 » 08/03/14 15:47

Ciao,
con "cerca.vert" non può essere fatto, occorre del codice che vada a scorrere tutti i dati e trovato l'ultimo, per la descrizione inserita, ti riporti i valori trovati.
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 cerca valore e copia le celle stessa riga

Postdi ricky53 » 08/03/14 16:50

Ciao,
spero di aver capito la tua necessità ... ho dei dubbi. Attendevo i tuoi chiarimenti.
Non capisco perchè le tue macro di inserimento, articolo, descrizione, cat. merc siano separate !!!
Se esegui due volte una di queste macro viene inserito due volte lo stesso dato !!!

Copia il seguente codice nel "Foglio1" (seleziona il foglio, posizionati sul "Tab" del foglio, Tasto destro, Visualizza Codice, Seleziona la finestra di destra e copia il codice)
Codice: Seleziona tutto
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then
        Exit Sub
    End If
   
    If Not Intersect(Target, Range("C7")) Is Nothing Then
        Cerca_Articolo (Target)
    End If
End Sub

Sub Cerca_Articolo(Descrizione As String)
    Dim WS1 As Worksheet, WS3 As Worksheet, UR As Long, I As Long, Intervallo As Range
    Set WS1 = Sheets("Foglio1")
    Set WS3 = Sheets("Foglio3")
    UR = WS3.Range("A" & Rows.Count).End(xlUp).Row
    For I = UR To 1 Step -1
        If WS3.Cells(I, "A") = Descrizione Then
            Application.EnableEvents = False
            WS1.Cells(7, "F") = WS3.Cells(I, "B")
            WS1.Cells(7, "I") = WS3.Cells(I, "C")
            WS1.Cells(7, "J") = WS3.Cells(I, "D")
            WS1.Cells(7, "K") = WS3.Cells(I, "E")
            WS1.Cells(7, "M") = WS3.Cells(I, "G")
            WS1.Cells(7, "N") = WS3.Cells(I, "H")
            WS1.Cells(7, "P") = WS3.Cells(I, "I")
            WS1.Cells(7, "T") = WS3.Cells(I, "J")
            Application.EnableEvents = True
            Exit For
        End If
    Next I
    If I = 0 Then
        MsgBox "La DESCRIZIONE:  '" & Descrizione & "'  non è PRESENTE" & vbCrLf & vbCrLf & "Effettuare l'inserimento della nuova descrizione", vbInformation
    End If
End Sub


Scegli un articolo di quelli esistenti nella cella "C7" e .... vedrai nella celle i dati trovati.

Attenzione: dal "Foglio3" viene preso lo sconto corrispondente all'ultima occorrenza tra le descrizioni presenti nel foglio

Va poi adattata alle tue esigenze che, ripeto, non mi sono del tutto chiare.
Prova e ... sono 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 cerca valore e copia le celle stessa riga

Postdi Marco75CT » 08/03/14 22:28

Ciao ricky,
ti ringrazio.
Domani proverò e ti farò sapere.
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Macro cerca valore e copia le celle stessa riga

Postdi Marco75CT » 09/03/14 11:35

Ciao ricky,
ho provato il codice ed è grande!
Ho però bisogno di adattarlo ancora:
L'inserimento dell'articolo, deve essere fatto a partire dalla colonna C del Foglio1, nella prima riga vuota sotto la riga 7.
Se l'articolo è presente nel Foglio3, si attiva la tua macro che mi popola le celle di fianco.
Se l'articolo non è presente, mi serve una macro che mi dica: "L'articolo non è presente nella lista, vuoi inserirlo?" e se clicco ok, lo inserisce nel Foglio3.
Ciao
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Macro cerca valore e copia le celle stessa riga

Postdi Marco75CT » 10/03/14 22:01

Ciao.
Spero di non aver esagerato nelle richieste.
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Macro cerca valore e copia le celle stessa riga

Postdi ricky53 » 11/03/14 00:45

Ciao,
mi sembrava che l'inserimento lo avessi già fatto tu ... mi sono sbagliato?

Descrivi che operazione va fatta nel caso che la descrizione scritta in "C7", o righe successive, non sia presente nel Foglio3?
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 cerca valore e copia le celle stessa riga

Postdi Marco75CT » 11/03/14 11:59

ricky53 ha scritto:Ciao,
mi sembrava che l'inserimento lo avessi già fatto tu ... mi sono sbagliato?

Descrivi che operazione va fatta nel caso che la descrizione scritta in "C7", o righe successive, non sia presente nel Foglio3?


Se l'articolo non è presente, mi serve una macro che mi dica: "L'articolo non è presente nella lista, vuoi inserirlo?" e se clicco ok, lo inserisce nel Foglio3.


Ciao ricky,
sopra riporto quanto descritto nella mia precedente risposta.
Grazie
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Macro cerca valore e copia le celle stessa riga":

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

Chi c’è in linea

Visitano il forum: Nessuno e 17 ospiti