ho bisogno di una mano per creare un database su più fogli di lavoro nella stessa cartella excel, spiego :
attualmente il mio database funziona cosi :
gira su EXCEL 2010 con VBA su un WIN7
ho un report da compilare che è il mio verbale di prelievo (nomefoglio ORIGINALE). una volta compilato premo il bottone SALVA e la macro ad esso collegato salva il report nel database (nomefoglio DATABASE). Il suddetto report io lo posso richiamare con il bottone ESTRAI e la macro estrae dal database il numero del verbale di prelievo che mi serve per permettermi di modificare o aggiornare i dati in esso contenuti.
fin qui tutto è ok.
Vorrei apportare una miglioria che mi serve per distinguere i dati del database poiche i dati contenuti in esso sono dati relativi a 3 impianti di produzione diversi (A , B , C ) . Io vorrei che ogni qual volta che premo il bottone SALVA in automatico la macro legge l'impianto a cui si riferisce il verbale di prelievo e me lo salva nel relativo database. Ovviamente deve valere lo stesso discorso per l'estrazione del report di riferimento che mi occorre modificare.
es. se mi serve modificare il report 1254 , quando clicco su ESTRAI lui deve cercare il numero del report nei 3 database per trovare quello giusto.
Vi posto qui le macro SALVA e ESTRAI in modo che possiate capirci qualcosa e darmi una mano.
- Codice: Seleziona tutto
Sub SALVAinDB()
'
' prova Macro
'
Dim rigaDB
Dim MsgDB As String
rigaDB = 0
If Sheets("ORIGINALE").Range("ei4").Value <> "" Then
MsgDB = MsgBox("Confermi la sovrascrittura della ricetta N° " & Sheets("ORIGINALE").Range("ei4").Value & "?", vbYesNo)
If MsgDB = vbNo Then
End
Else
If Not (MsgDB = MsgBox("Sicuro?", vbYesNo)) Then
End
End If
End If
rigaDB = CercainDB(Sheets("ORIGINALE").Range("ei4").Value)
End If
If rigaDB = 0 Then
rigaDB = 2
Sheets("Database").Select
Range("a2").Select
Selection.EntireRow.Insert
Range("A3:AT3").Select
Selection.Copy
Range("A2").Select
ActiveSheet.Paste
Rows("2").EntireRow.AutoFit
Selection.ClearContents
Range("a2").Value = Range("a3").Value + 1
End If
'copia dati da ORIGINALE a Database
'copia la data
Sheets("database").Cells(rigaDB, 2).Value = Sheets("ORIGINALE").Range("DD4").Value
'copia IL PRELIEVO
Sheets("database").Cells(rigaDB, 3).Value = Sheets("ORIGINALE").Range("CQ4").Value
'copia l'IMPIANTO
Sheets("database").Cells(rigaDB, 4).Value = Sheets("ORIGINALE").Range("AU6").Value
'copia IMPRESA
Sheets("database").Cells(rigaDB, 5).Value = Sheets("ORIGINALE").Range("T9").Value
'copia CANTIERE
Sheets("database").Cells(rigaDB, 6).Value = Sheets("ORIGINALE").Range("CN9").Value
'copia CAMPIONAMENTO
Sheets("database").Cells(rigaDB, 7).Value = Sheets("ORIGINALE").Range("EI11").Value
'copia ATB
Sheets("database").Cells(rigaDB, 8).Value = Sheets("ORIGINALE").Range("AJ15").Value
'copia MANOMETRO
Sheets("database").Cells(rigaDB, 9).Value = Sheets("ORIGINALE").Range("CZ15").Value
'copia PUNTO DI CARICO
Sheets("database").Cells(rigaDB, 10).Value = Sheets("ORIGINALE").Range("Z17").Value
'copia IL DDT
Sheets("database").Cells(rigaDB, 11).Value = Sheets("ORIGINALE").Range("CA17").Value
'copia IL TIPO DI GETTO
Sheets("database").Cells(rigaDB, 12).Value = Sheets("ORIGINALE").Range("EI19").Value
'copia RCK
Sheets("database").Cells(rigaDB, 13).Value = Sheets("ORIGINALE").Range("BH35").Value
'copia DMAX
Sheets("database").Cells(rigaDB, 14).Value = Sheets("ORIGINALE").Range("DL35").Value
'copia COMPATTAZIONE
Sheets("database").Cells(rigaDB, 15).Value = Sheets("ORIGINALE").Range("EI21").Value
'copia TIPO DI CEMENTO
Sheets("database").Cells(rigaDB, 16).Value = Sheets("ORIGINALE").Range("W37").Value
'copia ALTRE CARATTERISTICHE
Sheets("database").Cells(rigaDB, 17).Value = Sheets("ORIGINALE").Range("CM37").Value
'copia TARA
Sheets("database").Cells(rigaDB, 18).Value = Sheets("ORIGINALE").Range("O47").Value
'copia LORDO
Sheets("database").Cells(rigaDB, 19).Value = Sheets("ORIGINALE").Range("AT47").Value
'copia CONSISTENZA
Sheets("database").Cells(rigaDB, 20).Value = Sheets("ORIGINALE").Range("EI17").Value
'copia SLUMP
Sheets("database").Cells(rigaDB, 21).Value = Sheets("ORIGINALE").Range("DM39").Value
'copia N°PROVINI
Sheets("database").Cells(rigaDB, 22).Value = Sheets("ORIGINALE").Range("S43").Value
'copia DIM.PROVINI
Sheets("database").Cells(rigaDB, 23).Value = Sheets("ORIGINALE").Range("AZ43").Value
'copia ORA
Sheets("database").Cells(rigaDB, 24).Value = Sheets("ORIGINALE").Range("DC51").Value
'copia SCADENZA1
Sheets("database").Cells(rigaDB, 25).Value = Sheets("ORIGINALE").Range("AB67").Value
'copia SCADENZA2
Sheets("database").Cells(rigaDB, 26).Value = Sheets("ORIGINALE").Range("AB69").Value
'copia SCADENZA3
Sheets("database").Cells(rigaDB, 27).Value = Sheets("ORIGINALE").Range("AB71").Value
'copia SCADENZA4
Sheets("database").Cells(rigaDB, 28).Value = Sheets("ORIGINALE").Range("AB73").Value
'copia PESO1 SCADENZA1
Sheets("database").Cells(rigaDB, 29).Value = Sheets("ORIGINALE").Range("AT67").Value
'copia PESO2 SCADENZA1
Sheets("database").Cells(rigaDB, 30).Value = Sheets("ORIGINALE").Range("CD67").Value
'copia PESO1 SCADENZA2
Sheets("database").Cells(rigaDB, 31).Value = Sheets("ORIGINALE").Range("AT69").Value
'copia PESO2 SCADENZA2
Sheets("database").Cells(rigaDB, 32).Value = Sheets("ORIGINALE").Range("CD69").Value
'copia PESO1 SCADENZA3
Sheets("database").Cells(rigaDB, 33).Value = Sheets("ORIGINALE").Range("AT71").Value
'copia PESO2 SCADENZA3
Sheets("database").Cells(rigaDB, 34).Value = Sheets("ORIGINALE").Range("CD71").Value
'copia PESO1 SCADENZA4
Sheets("database").Cells(rigaDB, 35).Value = Sheets("ORIGINALE").Range("AT73").Value
'copia PESO2 SCADENZA4
Sheets("database").Cells(rigaDB, 36).Value = Sheets("ORIGINALE").Range("CD73").Value
'copia rm1 SCADENZA1
Sheets("database").Cells(rigaDB, 38).Value = Sheets("ORIGINALE").Range("bl67").Value
'copia rm2 SCADENZA1
Sheets("database").Cells(rigaDB, 39).Value = Sheets("ORIGINALE").Range("cv67").Value
'copia rm1 SCADENZA2
Sheets("database").Cells(rigaDB, 40).Value = Sheets("ORIGINALE").Range("bl69").Value
'copia rm2 SCADENZA2
Sheets("database").Cells(rigaDB, 41).Value = Sheets("ORIGINALE").Range("cv69").Value
'copia rm1 SCADENZA3
Sheets("database").Cells(rigaDB, 42).Value = Sheets("ORIGINALE").Range("bl71").Value
'copia rm2 SCADENZA3
Sheets("database").Cells(rigaDB, 43).Value = Sheets("ORIGINALE").Range("Cv71").Value
'copia rm1 SCADENZA4
Sheets("database").Cells(rigaDB, 44).Value = Sheets("ORIGINALE").Range("BL73").Value
'copia rm2 SCADENZA4
Sheets("database").Cells(rigaDB, 45).Value = Sheets("ORIGINALE").Range("CV73").Value
'copia OSSERVAZIONI
Sheets("database").Cells(rigaDB, 46).Value = Sheets("ORIGINALE").Range("F76").Value
'copia MC CARICATI
Sheets("database").Cells(rigaDB, 47).Value = Sheets("ORIGINALE").Range("DV37").Value
'copia TIPO DI ACQUA
Sheets("database").Cells(rigaDB, 48).Value = Sheets("ORIGINALE").Range("EI25").Value
'copia DOSAGGIO CEMENTO
Sheets("database").Cells(rigaDB, 49).Value = Sheets("ORIGINALE").Range("N80").Value
'copia DOSAGGIO CENERE
Sheets("database").Cells(rigaDB, 50).Value = Sheets("ORIGINALE").Range("AE80").Value
'copia TOTALE AGGREGATI
Sheets("database").Cells(rigaDB, 51).Value = Sheets("ORIGINALE").Range("BC80").Value
'copia DOSAGGIO DI ACQUA
Sheets("database").Cells(rigaDB, 52).Value = Sheets("ORIGINALE").Range("BT80").Value
'Compila N° entry DB in ORIGINALE
Sheets("ORIGINALE").Range("EI4").Value = Sheets("database").Cells(rigaDB, 1).Value
Sheets("ORIGINALE").Select
Msg = MsgBox("Vuoi eseguire la stampa della scheda N° " & Sheets("ORIGINALE").Range("EI4").Value & " ?", vbYesNo)
If Msg = vbYes Then
Sheets("ORIGINALE").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End If
End Sub
Public Function CercainDB(SchedaDB As Integer) As Integer
Dim n_MAX
Dim rigaDB
'Dim SchedaDB
Dim Valore
Dim TrovatoinDB As Boolean
Sheets("Database").Select
n_MAX = Range("a2").Value
CercainDB = 0
'Ricerca il numero scheda nella colonna Axx ogni 5 righe
For i = 2 To n_MAX * 5 - 3 Step 1
rigaDB = i
Valore = Sheets("Database").Cells(rigaDB, 1).Value
If Not (Valore <> SchedaDB) Then
TrovatoinDB = True
Exit For
End If
Next
'Se non ha trovato il numero scheda visualizza il messaggio
If Not TrovatoinDB Then
MsgBox ("Numero scheda non trovato")
Sheets("ORIGINALE").Select
End
End If
CercainDB = rigaDB
End Function
Sub Estrai_MIX()
Dim riga
Dim n_MAX
Dim scheda
Dim Valore
Dim Trovato As Boolean
'Se il campo scheda in ORIGINALE è vuoto chiede il numero scheda da estrarre dal DB
'per compilare la scheda imapsti
nscheda:
If Sheets("ORIGINALE").Range("ei4").Value = "" Then
Sheets("ORIGINALE").Range("ei4").Value = InputBox("Inserire il numero scheda")
End If
scheda = Sheets("ORIGINALE").Range("ei4").Value
Sheets("Database").Select
n_MAX = Range("a2").Value
'Ricerca il numero scheda nella colonna Axx ogni 5 righe
For i = 2 To n_MAX * 5 - 3 Step 1
riga = i
Valore = Cells(riga, 1).Value
If Not (Valore <> scheda) Then
Trovato = True
Exit For
End If
Next
'Se non ha trovato il numero scheda visualizza il messaggio
If Not Trovato Then
MsgBox ("Numero scheda non trovato")
Sheets("ORIGINALE").Select
GoTo Fine_Estrai
End If
'copia dati da ORIGINALE a Database
'copia la data
Sheets("ORIGINALE").Range("DD4").Value = Sheets("database").Cells(riga, 2).Value
'copia IL PRELIEVO
Sheets("ORIGINALE").Range("CQ4").Value = Sheets("database").Cells(riga, 3).Value
'copia l'IMPIANTO
Sheets("ORIGINALE").Range("AU6").Value = Sheets("database").Cells(riga, 4).Value
'copia IMPRESA
Sheets("ORIGINALE").Range("T9").Value = Sheets("database").Cells(riga, 5).Value
'copia CANTIERE
Sheets("ORIGINALE").Range("CN9").Value = Sheets("database").Cells(riga, 6).Value
'copia CAMPIONAMENTO
Sheets("ORIGINALE").Range("EI11").Value = Sheets("database").Cells(riga, 7).Value
'copia ATB
Sheets("ORIGINALE").Range("AJ15").Value = Sheets("database").Cells(riga, 8).Value
'copia MANOMETRO
Sheets("ORIGINALE").Range("CZ15").Value = Sheets("database").Cells(riga, 9).Value
'copia PUNTO DI CARICO
Sheets("ORIGINALE").Range("Z17").Value = Sheets("database").Cells(riga, 10).Value
'copia IL DDT
Sheets("ORIGINALE").Range("CA17").Value = Sheets("database").Cells(riga, 11).Value
'copia IL TIPO DI GETTO
Sheets("ORIGINALE").Range("EI19").Value = Sheets("database").Cells(riga, 12).Value
'copia RCK
Sheets("ORIGINALE").Range("BH35").Value = Sheets("database").Cells(riga, 13).Value
'copia DMAX
Sheets("ORIGINALE").Range("DL35").Value = Sheets("database").Cells(riga, 14).Value
'copia COMPATTAZIONE
Sheets("ORIGINALE").Range("EI21").Value = Sheets("database").Cells(riga, 15).Value
'copia TIPO DI CEMENTO
Sheets("ORIGINALE").Range("W37").Value = Sheets("database").Cells(riga, 16).Value
'copia ALTRE CARATTERISTICHE
Sheets("ORIGINALE").Range("CM37").Value = Sheets("database").Cells(riga, 17).Value
'copia TARA
Sheets("ORIGINALE").Range("O47").Value = Sheets("database").Cells(riga, 18).Value
'copia LORDO
Sheets("ORIGINALE").Range("AT47").Value = Sheets("database").Cells(riga, 19).Value
'copia CONSISTENZA
Sheets("ORIGINALE").Range("EI17").Value = Sheets("database").Cells(riga, 20).Value
'copia SLUMP
Sheets("ORIGINALE").Range("DM39").Value = Sheets("database").Cells(riga, 21).Value
'copia N°PROVINI
Sheets("ORIGINALE").Range("S43").Value = Sheets("database").Cells(riga, 22).Value
'copia DIM.PROVINI
Sheets("ORIGINALE").Range("AZ43").Value = Sheets("database").Cells(riga, 23).Value
'copia ORA
Sheets("ORIGINALE").Range("DC51").Value = Sheets("database").Cells(riga, 24).Value
'copia SCADENZA1
Sheets("ORIGINALE").Range("AB67").Value = Sheets("database").Cells(riga, 25).Value
'copia SCADENZA2
Sheets("ORIGINALE").Range("AB69").Value = Sheets("database").Cells(riga, 26).Value
'copia SCADENZA3
Sheets("ORIGINALE").Range("AB71").Value = Sheets("database").Cells(riga, 27).Value
'copia SCADENZA4
Sheets("ORIGINALE").Range("AB73").Value = Sheets("database").Cells(riga, 28).Value
'copia PESO1 SCADENZA1
Sheets("ORIGINALE").Range("AT67").Value = Sheets("database").Cells(riga, 29).Value
'copia PESO2 SCADENZA1
Sheets("ORIGINALE").Range("CD67").Value = Sheets("database").Cells(riga, 30).Value
'copia PESO1 SCADENZA2
Sheets("ORIGINALE").Range("AT69").Value = Sheets("database").Cells(riga, 31).Value
'copia PESO2 SCADENZA2
Sheets("ORIGINALE").Range("CD69").Value = Sheets("database").Cells(riga, 32).Value
'copia PESO1 SCADENZA3
Sheets("ORIGINALE").Range("AT71").Value = Sheets("database").Cells(riga, 33).Value
'copia PESO2 SCADENZA3
Sheets("ORIGINALE").Range("CD71").Value = Sheets("database").Cells(riga, 34).Value
'copia PESO1 SCADENZA4
Sheets("ORIGINALE").Range("AT73").Value = Sheets("database").Cells(riga, 35).Value
'copia PESO2 SCADENZA4
Sheets("ORIGINALE").Range("CD73").Value = Sheets("database").Cells(riga, 36).Value
'copia RM1 SCADENZA1
Sheets("ORIGINALE").Range("BL67").Value = Sheets("database").Cells(riga, 38).Value
'copia RM2 SCADENZA1
Sheets("ORIGINALE").Range("CV67").Value = Sheets("database").Cells(riga, 39).Value
'copia RM1 SCADENZA2
Sheets("ORIGINALE").Range("BL69").Value = Sheets("database").Cells(riga, 40).Value
'copia RM2 SCADENZA2
Sheets("ORIGINALE").Range("CV69").Value = Sheets("database").Cells(riga, 41).Value
'copia RM1 SCADENZA3
Sheets("ORIGINALE").Range("BL71").Value = Sheets("database").Cells(riga, 42).Value
'copia RM2 SCADENZA3
Sheets("ORIGINALE").Range("CV71").Value = Sheets("database").Cells(riga, 43).Value
'copia RM1 SCADENZA4
Sheets("ORIGINALE").Range("BL73").Value = Sheets("database").Cells(riga, 44).Value
'copia RM2 SCADENZA4
Sheets("ORIGINALE").Range("CV73").Value = Sheets("database").Cells(riga, 45).Value
'copia OSSERVAZIONI
Sheets("ORIGINALE").Range("F76").Value = Sheets("database").Cells(riga, 46).Value
'copia MC CARICATI
Sheets("ORIGINALE").Range("DV37").Value = Sheets("database").Cells(riga, 47).Value
'copia TIPO DI ACQUA
Sheets("ORIGINALE").Range("EI25").Value = Sheets("database").Cells(riga, 48).Value
'copia DOS CEMENTO
Sheets("ORIGINALE").Range("N80").Value = Sheets("database").Cells(riga, 49).Value
'copia DOS CENERE
Sheets("ORIGINALE").Range("AE80").Value = Sheets("database").Cells(riga, 50).Value
'copia TOT AGGREGATI
Sheets("ORIGINALE").Range("BC80").Value = Sheets("database").Cells(riga, 51).Value
'copia DOS ACQUA
Sheets("ORIGINALE").Range("BT80").Value = Sheets("database").Cells(riga, 52).Value
Fine_Estrai:
Sheets("ORIGINALE").Select
End Sub
Grazie in anticipo aspetto vostre notizie.