Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Macro cerca.vert ed aggiorna dato trovato

Ultimo Aggiornamento: 26/05/2017 13:50
Post: 2
Registrato il: 21/05/2017
Utente Junior
2013
OFFLINE
21/05/2017 15:18

Salve a tutti;
da un po' di tempo sto cercando di risolvere una questione ma non riesco....Vi Spiego:
Immaginate di avere nel foglio1 una tabella anagrafica di persone ai quali è stato chiesto di distribuire dei gadget.
Questa tabella contiene anche nella colonna D il totale dei GADGET DISPONIBILI per ogni persona.
Nel Foglio2 invece viene riportato un Form in cui, richiamando l'identificativo anagrafico, vengono riportati con una formula cerca.vert i dati anagrafici ed il numero dei gadget disponibili dal Foglio1.
Le uniche celle selezionabili del Foglio2 sono:
quella per il richiamo anagrafico e quella in cui a fine giornata va messo il numero dei gadget di fine giornata. Una cella si occupa di calcolare i gadget distribuiti (gadget disponibili inizio giornata 1000 - Gadget a fine giornata 800 - GADGET DISTRIBUITI=(1000-800)---> 200
Fin qui...tutto ok.
Avrei bisogno ora di una macro che mi vada ad aggiornare nel foglio1 il valore della cella trovata nella colonna D (GADGET DISPONIBILI) con l'attuale dato dei gadget di fine giornata (che non saranno più 1000 ma 800).
Come diamine posso fare? ...è una cella variabile! Aiuto. [SM=x423023]
Post: 1.335
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
21/05/2017 16:59

Ciao
magari un esempio può aiutare....

saluti

Domenico
Win 10 - Excel 2016
Post: 2
Registrato il: 21/05/2017
Utente Junior
2013
OFFLINE
21/05/2017 21:02

Immaginavo; lo avevo creato, ma da EDGE non sono riuscito ad inserirlo. Provo con Chrome
[Modificato da Melpomene80 21/05/2017 21:03]
Post: 3.219
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
22/05/2017 11:50

E dove è indicato il dato dei gadget a fine giornata?

l'800 da dove lo prendi?

Alfredo
Post: 3
Registrato il: 21/05/2017
Utente Junior
2013
OFFLINE
22/05/2017 12:21

Il dato di fine giornata viene inserito manualmente nella cella K14 del Foglio2.
Proprio con questo dato la macro dovrà aggiornare il quantitativo disponibile relativo alla persona cercata nel Foglio1
Post: 3.225
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
22/05/2017 15:24

Ciao

Non so se ho capito bene ma inserisci questa macro nel modulo del foglio2 (non uno standard) e metti in valore in K4

Questo verrà riportato in corrispondenza del nominativo sul foglio1.

vb
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
If Not Intersect(Target, Sheets("Foglio2").Range("K14")) Is Nothing Then
With Sheets("Foglio1").Range("A:A")
            Set rng = .Find(What:=Sheets("Foglio2").Range("J5"), _
                            After:=.Cells(.Cells.Count), _
                            LookIn:=xlValues, _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _
                            MatchCase:=False)
            If Not rng Is Nothing Then
                rng.Offset(0, 3).Value = Target.Value
            End If
        End With
End If
End Sub


Fai sapere

Alfredo
Post: 4
Registrato il: 21/05/2017
Utente Junior
2013
OFFLINE
22/05/2017 16:47

Ciao!
Grazie per l'aiuto ma purtroppo non funziona...
Mi spiego meglio, forse è colpa mia.

Ipotizziamo che è Lunedì sera; dopo una giornata di "lavoro" inserendo l'identificativo, Il foglio mi restituisce i valori del nome, del cognome e dei gadget con cui il collega è partito. A quel punto inserisco manualmente i gadget che lui ha a fine serata.
Con una formula in L14, riesco a sapere quanti gadget ha consegnato.
A questo punto la macro dovrebbe andare ad aggiornare il totale dei gadget che questa persona ha disponibili semplicemente con il dato di chiusura giornata in maniera tale che domattina (Martedì) richiamando la persona con l'identificativo, so che quella persona ha disponibili il numero di gadget che ieri sera ha riportato in chiusura.
Spero di essere stato chiaro.
[SM=x423062]
Post: 3.232
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
22/05/2017 19:10

Ma qual è la cella che deve essere aggiornata?

Alfredo
Post: 5
Registrato il: 21/05/2017
Utente Junior
2013
OFFLINE
22/05/2017 22:08

Ciao Alfredo,
La cella che nell'esempio vedi in J14 del foglio2 è il risultato di un cerca.vert sul foglio1(D5).
Manualmente si inserisce in K14 del Foglio2 un dato che sarà in caso di richiamo futuro il nuovo J14.
Provo a cambiare esempio..in breve:
Tu ti chiami Piero, sei identificato con il n.4 nella tabella angrafica presente nel Foglio1 e la mattina hai 100 caramelle con te.
La sera mi dirai che sei il numero 4 ed inserendolo sul foglio2, Excel mi dirà che stamattina avevi 100 caramelle(J14) --- =CERCA.VERT($J$5;ANAGRAFICA;4;FALSO)
Ti chiederò: quante caramelle hai questa sera? tu mi dirai 90 perché 10 le hai mangiate - ed io scriverò 90 in K14 del Foglio2.
Domattina, quando io inserirò il numero 4 su Excel, in J14 dovrò leggere che tu partirai non più con 100 caramelle bensì con 90(quelle che hai dichiarato ieri sera) proprio perché la macro che non riesco a comporre dovrà aggiornare il quantitativo relativo alle tue caramelle disponibili (Foglio1 - D5)con il dato che tu mi hai comunicato ieri sera a fine serata.
[SM=x423068]
Post: 6
Registrato il: 21/05/2017
Utente Junior
2013
OFFLINE
24/05/2017 08:26

Non riesco... [SM=g27819]
Post: 3.234
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
24/05/2017 14:04

Non so se ho capito bene ma prova con questa macro

vb
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
If Not Intersect(Target, Sheets("Foglio2").Range("K14")) Is Nothing Then
With Sheets("Foglio1").Range("A:A")
            Set rng = .Find(What:=Sheets("Foglio2").Range("J5"), _
                            After:=.Cells(.Cells.Count), _
                            LookIn:=xlValues, _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _
                            MatchCase:=False)
            If Not rng Is Nothing Then
                rng.Offset(0, 3).Value = Sheets("Foglio2").Range("j14") - Target.Value
            End If
        End With
End If
End Sub


Ti allego il file

Alfredo
Post: 7
Registrato il: 21/05/2017
Utente Junior
2013
OFFLINE
25/05/2017 18:01

Grazie mille Alfredo.
Purtroppo non è quello che cerco.
Secondo me è colpa mia che non riesco a spiegarmi;
Ti creo un nuovo file strutturato in maniera diversa ma magari più interpretabile.
Immagina di dover fare un'inventario ogni sera ed aggiornare i quantitativi degli articoli venduti.
Nel Foglio "GIACENZE" hai la tabella degli articoli da vendere con le relative giacenze.
Nel Foglio "INVENTARIO" invece hai la "maschera" dell'inventario da dover fare ogni sera.
Richiamando l'articolo di cui voler fare l'inventario dal menù a tendina (Ipotizziamo il codice 1), vengono fuori tutti i dati dell'articolo 1 e la giacenza relativa all'inizio giornata (100).
Faccio l'inventario e riscontro la presenza di 80 pezzi che inserisco nella cella "H15" del Foglio "INVENTARIO".
Nella cella "I15" in automatico mi compare il venduto giornaliero (20pz)
Clicco su "Memorizza" ed attivo una macro che ho creato per copiare i dati dell'inventario appena fatto nel foglio "ARCHIVIO INVENTARIO".
Fin qui tutto ok.
Domani sera, quando andrò ad effettuare il nuovo inventario serale, richiamando il codice 1, Excel mi dovrà dire che la giacenza della mattina relativa al codice 1 non sarà più di 100 pezzi bensì di 80 proprio perché 20 li ho venduti ieri.
Ecco, non capisco cosa inserire a fine macro per far sì che il quantitativo dell'articolo di cui ho avuto dei venduti si aggiorni con il quantitativo reale (non più 100 ma 80).
[SM=x423062]
Post: 3.235
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
26/05/2017 12:16

Ciao Luigi

Spero di aver capito bene; prova questa macro associandola ad un pulsante.
vb
Sub Giacenze()
Dim rng As Range
With Sheets("Giacenze").Range("A:A")
            Set rng = .Find(What:=Sheets("Inventario").Range("g8"), _
                            After:=.Cells(.Cells.Count), _
                            LookIn:=xlValues, _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _
                            MatchCase:=False)
            If Not rng Is Nothing Then
                rng.Offset(0, 4).Value = rng.Offset(0, 4).Value - Sheets("Inventario").Range("i15").Value
            End If
        End With
End Sub


che, in fin dei conti, non è molto diversa dalla precedente.

Fai sapere.

Alfredo
Post: 8
Registrato il: 21/05/2017
Utente Junior
2013
OFFLINE
26/05/2017 12:39

Ciao Alfredo, mi dà errore Compilazione su
Set rng =

Sub Giacenze()
Dim rng As Range
With Sheets("Giacenze").Range("A:A")
            Set rng = .Find(What:=Sheets("Inventario").Range("g8"), _
                            After:=.Cells(.Cells.Count), _
                            LookIn:=xlValues, _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _
                            MatchCase:=False)
            If Not rng Is Nothing Then
                rng.Offset(0, 4).Value = rng.Offset(0, 4).Value - Sheets("Inventario").Range("i15").Value
            End If
        End With
End Sub
Post: 3.236
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
26/05/2017 12:42

Strano io prima di postarla l'ho provata e funzionava bene.

Allega il tuo file non funzionante.

Alfredo
Post: 9
Registrato il: 21/05/2017
Utente Junior
2013
OFFLINE
26/05/2017 13:11

Post: 3.237
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
26/05/2017 13:39

Luigi la macro funziona perfettamente.

Cancellala e ricopiala qui dal forum.

Alfredo
Post: 10
Registrato il: 21/05/2017
Utente Junior
2013
OFFLINE
26/05/2017 13:44

Scusami Alfredo,
l'hai provata sul file che ti ho allegato?
Post: 3.238
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
26/05/2017 13:50

Certamente.

Alfredo
Post: 11
Registrato il: 21/05/2017
Utente Junior
2013
OFFLINE
26/05/2017 13:50

Perfetto!!!! [SM=x423030]

Grazie Alfredo! [SM=x423047] Tutto come dovrebbe essere.
Ora provo a modificarla per riportarla al file su cui devo inserirla.
Grazie ancora.

Rock_On [SM=x423041]

Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 16:38. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com