Condividi:        

File lavoro excel

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

File lavoro excel

Postdi zanatta77 » 14/01/14 19:39

Ciao avrei bisogno di un aiuto per un file di excel 2010
Quello che dovrebbe fare è cercare nel Foglio1 in tutta la colonna "A" quanto scitto da me nel Foglio2 in una delle celle della colonna "A" ed in caso trovasse uno o più dati inseriti nelle celle che vanno da "A1" a "A99999" mi riportasse quanto scritto nella colonna "B" nella stessa posizione del Foglio1 sul Foglio2 affianco alla cella dove ho scritto quello che cercavo e in più poi dovrebbe fare una sotrazione di quanto inserito da me nella colonna "C" del Foglio2 e sottrarlo a quanto riportato Sul Foglio1 e se il risultato fosse negativo avvisare con un Msgbox "Quantità inserita inferiore alla disponibilità" e non esegue nulla infine salvare il tutto sul Foglio1.

Giusto per far capire meglio :o quanto dovrebbe fare faccio un esempio approssimato

Se scrivo nel Foglio2 nel Range("A3") "bottiglia" deve cercare in tutta la colonna "A" del Foglio1 se è presente in un Range "bottiglia" nel caso fosse presente in Range("A29") deve riportare quanto presente su Range("B29") del Foglio1 sul Foglio2 nel Range("B3") fatto questo deve sottrarre quanto scritto numericamente in Range("B3") del Foglio2 a quanto presente sul Range("C29") del Foglio1 e in caso la risultante fosse negativa allora un msgbox avvisa la quantita inferiore e non esegue salvando.

Grazie
Windows 8 e office 2010
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Sponsor
 

Re: File lavoro excel

Postdi Anthony47 » 14/01/14 23:38

Hummmm... come se stessi facendo uno scarico da magazzino...
Per limitare le complicazioni, il valore che scrivi su Foglio2 puo' essere presente su piu' righe di Foglio1 o solo una volta?

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

Re: File lavoro excel

Postdi zanatta77 » 14/01/14 23:53

La presenza nella riga obligatoriamente è unica, se è presente nella colonna "A" lo troverà una sola volta.
Ecco finora cosa son riuscito a fare :lol:
Codice: Seleziona tutto
Sub Pulsante2_Click()
Dim i As Integer
For i = 1 To 99999
If Foglio2.Cells(i, 1) = Foglio1.Cells(i, 1) Then
Foglio1.Cells(i, 2).Copy Foglio2.Cells(i, 2).Paste
End If
Next i
End Sub
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Re: File lavoro excel

Postdi Anthony47 » 15/01/14 00:21

Io direi che puoi portare su Foglio2 i dati di Foglio1 col Cerca.Ver; ad esempio, la quantita' (colonna B) la replichi con
Codice: Seleziona tutto
=Cerca.Vert($A2;Foglio1!$A:$B;2;0)
Poi sempre su foglio1 fai la differenza tra la quantita' importata da Foglio1 e quanto scritto in colonna B; eventualmente usi la formattazione condizionale per mettere in rosso i risultati inferiori a 0

Non ho capito se in Foglio2 avrai un blocco di codici, quindi vorresti che una macro scorra ora i totali calcolati su Foglio2 e, ove non negativo, vada ad aggiornare tutti i relativi codici su Foglio1, colonna B.
Come pure, se hai formattato in rosso i valori inferiori a 0, ti interessa ancora il msgbox di warning?

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

Re: File lavoro excel

Postdi zanatta77 » 15/01/14 00:25

per comprendere meglio quello che vorrei facesse il file

Se scrivo nel Foglio2.Range("A1") polpetta e trova in Foglio1 polpetta nel Range("A89") dovra' riportare in automatico sul Foglio2.Range("B1") quanto è presente su nel Foglio1.Range("B89") andando a sottrarre quanto inserito nel Foglio2.Range("C1") con quanto presente su nel Foglio1.Range("C89") e il nuovo risultato ottenuto se positivo salvarlo su Foglio1.Range("C89") altrimenti se negativo avvisare con msgbox e non eseguire la variazione della sottrazione.

Praticamente scrivendo una matricola Foglio2.Range("A1") lui se troverà la matricola es:Foglio1.Range("A89")andrà a compilare nella cella adiacente la matricola inserita Foglio2.Range("B1") la denominazione che troverà sempre nella cella adiacente alla matricola individuataFoglio1.Range("B89") in più inserendo la quantità Foglio2.Range("C1")lui andrà a sottrarre al totale presente Foglio1.Range("C89") quanto richiesto e se il risultato ottenuto è >=0 allora salvera il nuovo risultato ottenuto sempre su Foglio1.Range("C89") altrimenti se <0 comparira un msgbox di avviso senza cambiare i valori presenti su Foglio1.Range("C89").
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Re: File lavoro excel

Postdi Anthony47 » 15/01/14 00:35

Non ho capito se in Foglio2 lavori con un solo codice alla volta o con un blocco di codici.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: File lavoro excel

Postdi Anthony47 » 15/01/14 00:48

Inoltre da queste frasi mi pare che descrivi DUE diversi tracciati record di Foglio1:
Se scrivo nel Foglio2.Range("A1") polpetta e trova in Foglio1 polpetta nel Range("A89") dovra' riportare in automatico sul Foglio2.Range("B1") quanto è presente su nel Foglio1.Range("B89") andando a sottrarre quanto inserito nel Foglio2.Range("C1") con quanto presente su nel Foglio1.Range("C89") e il nuovo risultato ottenuto se positivo salvarlo su Foglio1.Range("C89") altrimenti se negativo avvisare con msgbox e non eseguire la variazione della sottrazione.

Praticamente scrivendo una matricola Foglio2.Range("A1") lui se troverà la matricola es:Foglio1.Range("A89")andrà a compilare nella cella adiacente la matricola inserita Foglio2.Range("B1") la denominazione che troverà sempre nella cella adiacente alla matricola individuataFoglio1.Range("B89") in più inserendo la quantità Foglio2.Range("C1")lui andrà a sottrarre al totale presente Foglio1.Range("C89") quanto richiesto e se il risultato ottenuto è >=0 allora salvera il nuovo risultato ottenuto sempre su Foglio1.Range("C89") altrimenti se <0 comparira un msgbox di avviso senza cambiare i valori presenti su Foglio1.Range("C89").

Puoi chiarire quale e' il tracciato reale?

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

Re: File lavoro excel

Postdi Anthony47 » 15/01/14 01:02

Nell' ipotesi che il tracciato di Foglio1 sia A=Matricola /B=Descrizione /C=Giacenza

Su Foglio2 crei questa area:
Immagine
Le celle in giallo sono quelle che compilerai, quelle in grigio le importi da Foglio1 tramite formula Cerca.Vert; la cella E2 la calcoli come =C2-D2 e ci applichi la formattazione condizionale.

Poi associ a un pulsante questa macro:
Codice: Seleziona tutto
Sub zanatta()
Dim myMatch
'
If Range("D2").Value >= 0 Then
    myMatch = Application.Match(Range("A2").Value, Sheets("Foglio1").Range("A:A"), False)
    If Not IsError(myMatch) Then Sheets("Foglio1").Cells(myMatch, "C").Value = Range("E2").Value
    Range("G2").Value = Range("D2").Value: Range("D2").Clear
Else
    MsgBox ("Quantità inserita inferiore alla disponibilità")
End If
End Sub

La macro azzera il contenuto di D2, previo log in G2; in questo modo eventuali ripetizione della macro non modificheranno ulteriormente il contenuto di Foglio1.

Questo nell' ipotesi che su Foglio2 "lavori" un codice alla volta.

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

Re: File lavoro excel

Postdi zanatta77 » 15/01/14 22:45

Ciao Buonasera
Quindi una macro non si può fare da registrare ad un command button unico ?? e mettendone uno per ogni riga con lo stesso processo???
Provo a spiegare diversamente quello che dovrebbe fare :
Quello che scriverò può essere presente una sola volta in una delle celle della colonna A del foglio1 esempio: MATRICOLA.
Apro foglio2 sciverò nella cella "A1" MATRICOLA e in "C1" 44 la macro si porterà su foglio1 e controllera se nella colonna "A" in una cella qulsiasi sia presente MATRICOLA, in caso negativo non succede nulla, in caso positivo andrà a copiare quanto presente nella colonna "B" nella stessa riga dove a rintracciato MATRICOLA (esempio: rintracciato in "A78"di foglio1), e lo andrà ad incollare nel foglio2 accanto dove ho scritto precedentemente MATRICOLA, cioè nella cella"B1" (facendo riferimento all'esempio sarà uguale a "B78"di foglio1)
Infine il numero 44 scritto da me in Foglio2"C1" lo andrà a sotrarre a quanto presente in Foglio1"C78" e se la risultante sarà >=0 andrà a sostituire quanto presente precedentemente in Foglio1"C78" salvando altrimenti se negativo avviserà con Msgbox e non modificherà quanto presente in Foglio1"C78".
Se riesci a farmi questa macro potrei modificarla per i successivi command button che andrei a mettere, cioè uno per ogni parola da cercare.
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Re: File lavoro excel

Postdi Anthony47 » 16/01/14 03:16

Perdona, non ti seguo, ne' mi pare che tu segua me.
Ripartiamo daccapo:
-quale e' il tracciato record di foglio1
-che cosa devi fare sui dati di questo foglio
Possibilmente "che cosa devi fare", non "come hai pensato di farlo".

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

Re: File lavoro excel

Postdi zanatta77 » 16/01/14 21:44

Perdonami tu....cerco di spiegarmi al meglio ma evidentemente :cry: non ci riesco.
Allego il file che dovrebbe far capire meglio cosa vorrei che facesse.
[url]<a href=http://www.filedropper.com/filelavoroexcel><img src=http://www.filedropper.com/download_button.png width=127 height=145 border=0/></a><br /><div style=font-size:9px;font-family:Arial, Helvetica, sans-serif;width:127px;font-color:#44a854;> <a href=http://www.filedropper.com >file backup online</a></div>[/url]

http://www.filedropper.com/filelavoroexcel
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Re: File lavoro excel

Postdi Flash30005 » 17/01/14 06:47

E' abbastanza chiaro (con la descrizione inserita nel file) cosa vorresti ma non è chiaro cosa succede se premi due volte il pulsante1 nel caso in cui la quantità in C11 sia positiva (esempio 10), premi pulsante1 e in c11 avrai 8 ma se ripremi ancora, vuoi perché non ricordi se hai già fatto l'operazione
Detrae due volte il valore che hai nel foglio2?

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: File lavoro excel

Postdi zanatta77 » 17/01/14 07:49

Si dovrebbe fare esattamente quello che hai scritto, ma per evitare giustamente una dimenticanza sul pulsante premuto o meno è possibile inserire ?? a partire dal secondo click in poi del pulsante un Msgbox del tipo Yes NO che riporti il numero di volte che si è già premuti dall'apertura del file ,chiedendo se si vuole proseguire il processo oppure NO.
In questo modo in base alla risposta dovrebbe proseguire il percorso oppure lasciare tutto com' era prima di premere il pulsante
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Re: File lavoro excel

Postdi Flash30005 » 17/01/14 11:25

Secondo me dopo aver digitato il codice e lo "Scarico" (il valore 2 dell'esempio) dovrebbe cancellare quel valore in maniera tale da evitare una seconda detrazione.

Ma devi dire tu quali sono le tue esigenze perché non mi sembra che siano tanto chiare e non si può creare una macro andando a tentoni

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: File lavoro excel

Postdi zanatta77 » 17/01/14 12:16

No non deve cancellarlo perchè devo impostare una lettera nella parte alta
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Re: File lavoro excel

Postdi zanatta77 » 17/01/14 15:31

Ti invio il file di come dovrebbe venire a lavoro ultimato,ci sarà una lettera che racchiudera al suo interno le colonne descritte finora A B C in cui inserendo semplicemente il codice materiale e quantità in A e B di foglio2,se è presente il materiale inserito tramite codice numerico in automatico riporta la denominazione appropriata del materiale e in più mi aggiorna i totali se superiore a 0 dei materiali disponibili sul Foglio1, e se nel caso fosse negativo il totale ottenuto dalla sottrazione un Msgbox avvisera e non andra ad inserire la denominazione e lascera i totali di foglio1 invariati

http://www.filedropper.com/filelavoroexcel_1
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Re: File lavoro excel

Postdi Anthony47 » 18/01/14 03:16

In foglio2 vedo che c' e' una "griglia", quindi immagino che tu debba lavorare a blocchi di matricole (anche se a domanda specifica non avevi risposto).

Mi permetto di variare il processo come segue:
1) ti crei verso destra di Foglio2 la tua area di lavoro, simile a quella che hai inserito in colonne A-B-C, e con l' aggiunta di 2 colonne:
1a) la quantita' richiesta
1b) la giacenza di Foglio1
Io l' ho fatto nelle colonne I:M, come da immagine:
Immagine(tasto dx, Visualizza immagine, per visualizzare tutta l' immagine)

In col I inserirai la matricola; l' area I31:I30 e' stata nominata "materiali" (Menu /Formule /Definisci nome).
In J31 userai la formula
Codice: Seleziona tutto
=SE(I31<>"";CERCA.VERT(I31;Foglio1!A:B;2;0);"")

In M31 userai la formula
Codice: Seleziona tutto
=CERCA.VERT(I31;Foglio1!A:C;3;0)

In L2 scriverai la Quantita' richiesta, e usi una formattazione condizionale per colorare di rosso secondo la formula =L31>M31
Col K sara' compilata dalla macro
2) Nella tabella di colonne A:C replicherai il contenuto della tabella di destra, inserendo in A31 la formula =
Codice: Seleziona tutto
SE(I31<>"";I31;"")
da copiare poi verso destra e verso il basso

Suggerisco questa duplicazione perche' la mia soluzione prevede due colonne di lavoro (Richiesto e Giacenza), che non devono essere nelle colonne dell' area di stampa (che arriva fino alla colonna G; nell' immagine le colonne D:H sono state ristrette per mostrare le due tabelle ravvicinate). Teoricamente potevo lasciare col A per l' introduzione del codice e aggiungere solo le due colonne di lavoro, ma ritengo che sia meglio avere tutta la tabella raggruppata.

A questo punto interviene la macro, che corrisponde a questo codice:
Codice: Seleziona tutto
Sub zanaxx()
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=101001
Dim I As Long, myMatch
Sheets("Foglio2").Select
With Range("materiali").Cells(1, 1)
    For I = 0 To Range("materiali").Rows.Count - 1
        If .Offset(I, 3) > 0 And Not IsError(.Offset(I, 4)) Then
                If .Offset(I, 3).Value <= .Offset(I, 4).Value Then
                        .Offset(I, 2) = .Offset(I, 3)
                        myMatch = Application.Match(.Offset(I, 0).Value, Sheets("Foglio1").Range("A:A"), 0)
                        Sheets("Foglio1").Cells(myMatch, 3).Value = .Offset(I, 4) - .Offset(I, 3)
                        .Offset(I, 3).ClearContents
                    End If
            End If
    Next I
End With
End Sub

La macro scorre tutte le righe della tabella, e se (a) col L e' compilata e col M non contiene un errore e col L non e' maggiore di col M:
-scrive il valore in colonna K copiandolo da col L
-aggiorna il contenuto di col C di Foglio1
-CANCELLA il contenuto di col L
La tabella alla sinistra replica il contenuto dell' intera tabella di servizio a destra.

Dopo l' esecuzione della macro con i valori visibili nell' immagine precedente, il risultato sara':
Immagine (tasto dx, Visualizza immagine, per visualizzare tutta l' immagine)

Quando vorrai elaborare un nuovo elenco
-cancelli il contenuto delle colonne I, K ed L; questo lo puoi fare con una macro autoregistrata
-ricarichi i nuovi valori e riesegui la macro.

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

Re: File lavoro excel

Postdi zanatta77 » 18/01/14 09:15

Ciao e grazie per la macro
Stavo cercando di provarla ma mi compare un debug ; errore di run time 1004 esattamente in questo punto
Codice: Seleziona tutto
 With Range("materiali").Cells(1, 1)
Metodo 'Range' dell'oggetto_'Global' non riuscito
Se riesci magari mi puoi caricare il file.xlsm
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Re: File lavoro excel

Postdi Anthony47 » 18/01/14 12:05

Probabilmente hai tralasciato una istruzione, peraltro fornita male:
In col I inserirai la matricola; l' area I31:I30 e' stata nominata "materiali" (Menu /Formule /Definisci nome)
All' area di colonna I in cui inserirai la matricola va assegnato il nome "materiali"; si tratta dell' area I31:I38 (non I31:I30).

Comunque il file modificato con questi suggerimenti e' scaricabile qui: http://rapidshare.com/share/0A1F2FDA53E ... 0249D22D7E

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

Re: File lavoro excel

Postdi zanatta77 » 19/01/14 10:39

Grazie adesso direi che va benissimo, ;) soddisfa quanto richiesto.
Infatti avevo tralasciato delle funzioni, e non solo, :undecided: e questo era il motivo del debug.
"Programmare" dicono sia semplice, io dico beati coloro che riescono a farlo, :idea: comunque non demordo
continuo a leggere tutto quello che trovo GRATIS in rete in merito a VBA , visto che oramai la TV nemmeno l'accendo più,
trovo più interessante e affascinante navigare e soprattutto cercare di capire come posso ottenere dei miglioramenti a 360° in ambito lavorativo sfruttando quello che ho a disposizione, se riuscissi a guidare almeno per un piccolo tratto questo pulman sarebbe positivo e doveroso verso il mio datore di lavoro, per il momento sono un passeggero ma chissà un giorno potrei guidarlo al 0.001%
Ciao e grazie mille ragazzi.
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12


Torna a Applicazioni Office Windows


Topic correlati a "File lavoro excel":


Chi c’è in linea

Visitano il forum: Nessuno e 52 ospiti