Registra dati



  • Registra dati
    di alessia (utente non iscritto) data: 27/04/2014 10:36:58

    Buongiorno e buona domenica a tutti.
    Ho un paio di problemi che da sola non riesco a risolvere. Io uso questo codice sotto riportato per salvare una fattura scelta dalla combox, nel foglio Archivio Fatture.

    If ComboBox1 = "" Or ComboBox1 = "" Then
    MsgBox "MANCANO DATI CLIENTE NELLA COMBOBOX!"
    Exit Sub
    End If

    ' Qui sono riportate le celle che andrà a salvare nel foglio Archivio Fatture
    A = [C13] 'Cod. cliente
    B = [F6] ' Rag. Sociale
    C = [F7] ' Indirizzo cliente
    D = [F8] ' Cap
    E = [G8] ' Città
    F = [G9] ' Partita Iva
    g = [G10] ' Codice Fiscale
    H = [I3] ' Emissione Fattura
    i = [g3] ' Numero Fattura
    J = [C15] ' Periodo dal
    K = [E15] ' Periodo al
    L = [B18] ' Descrizione Servizio
    M = [B20] ' Indirizzo
    n = [B21] ' CAP
    O = [C21] ' Città
    p = [E41] ' Imponibile
    q = [G41] ' Iva
    R = [I41] ' Totale
    S = [H40] ' Iva al %
    t = [B22] ' Descrizione 2
    U = [B24] ' ' Indirizzo 2
    V = [B25] ' CAP 2
    W = [C25] ' Città 2
    x = [B26] ' Descrizione 3
    Y = [B28] ' Indirizzo 3
    Z = [B29] ' CAP 3
    AA = [C29] ' Città 3
    AB = [B38] ' Descrizione 4
    AC = [B39] ' Indirizzo, cap e città
    AD = [C14]
    'd = [A16].Value 'scadenza
    Dim irow As Integer
    irow = 4 ' inizia a scrivere dalla riga 3
    While Sheets("Archivio Fatture").Cells(irow, 1) <> ""
    irow = irow + 1
    Wend
    Sheets("Archivio Fatture").Cells(irow, 1) = (A) 'CInt(a)
    Sheets("Archivio Fatture").Cells(irow, 2) = (B) 'CDate(b)
    Sheets("Archivio Fatture").Cells(irow, 3) = (C)
    Sheets("Archivio Fatture").Cells(irow, 4) = (D)
    Sheets("Archivio Fatture").Cells(irow, 5) = (E)
    Sheets("Archivio Fatture").Cells(irow, 6) = (F)
    Sheets("Archivio Fatture").Cells(irow, 7) = (g)
    Sheets("Archivio Fatture").Cells(irow, 8) = (H) 'CDate(h)
    Sheets("Archivio Fatture").Cells(irow, 9) = (i)
    Sheets("Archivio Fatture").Cells(irow, 10) = (J)
    Sheets("Archivio Fatture").Cells(irow, 11) = (K)
    Sheets("Archivio Fatture").Cells(irow, 12) = (L)
    Sheets("Archivio Fatture").Cells(irow, 13) = (M)
    Sheets("Archivio Fatture").Cells(irow, 14) = (n)
    Sheets("Archivio Fatture").Cells(irow, 15) = (O)
    Sheets("Archivio Fatture").Cells(irow, 16) = (p)
    Sheets("Archivio Fatture").Cells(irow, 17) = (q)
    Sheets("Archivio Fatture").Cells(irow, 18) = (R)
    Sheets("Archivio Fatture").Cells(irow, 19) = (S)
    Sheets("Archivio Fatture").Cells(irow, 20) = (t)
    Sheets("Archivio Fatture").Cells(irow, 21) = (U)
    Sheets("Archivio Fatture").Cells(irow, 22) = (V)
    Sheets("Archivio Fatture").Cells(irow, 23) = (W)
    Sheets("Archivio Fatture").Cells(irow, 24) = (x)
    Sheets("Archivio Fatture").Cells(irow, 25) = (Y)
    Sheets("Archivio Fatture").Cells(irow, 26) = (Z)
    Sheets("Archivio Fatture").Cells(irow, 27) = (AA)
    Sheets("Archivio Fatture").Cells(irow, 28) = (AB)
    Sheets("Archivio Fatture").Cells(irow, 29) = (AC)
    Sheets("Archivio Fatture").Cells(irow, 30) = (AD)

    MsgBox "Fattura registrata"
    CommandButton6.BackColor = 65535 '<--- di colore giallo

    Quindi il mio problema è questo. Se volessi salvare tutte le fatture presenti nella cartella, incominciando dal foglio n. 4 fino all'ultimo come potrei fare?
    Io sto usando questo codice sotto riportato che mi seleziona tutti i fogli incominciando dal foglio 4, ma nel foglio Archivio Fatture, mi registra solo il primo foglio.
    Questo è il codice:

    Dim arr As Variant
    arr = Array()
    For i = 4 To Sheets.Count
    ReDim Preserve arr(i - 4)
    arr(i - 4) = Sheets(i).Name
    Next i
    Sheets(arr).Select
    Cosa sto sbagliando?
    Grazie a tutti



  • di lepat (utente non iscritto) data: 27/04/2014 11:26:55

    prova così
     
    Sub a()
    Dim arr()
    ReDim arr(Sheets.Count - 4)
    For i = 4 To Sheets.Count
    arr(i - 4) = Sheets(i).Name
    Next i
    Sheets(arr).Select
    End Sub



  • di alessia (utente non iscritto) data: 27/04/2014 11:58:41

    Grazie Lepat,
    lo provo subito e ti faccio sapere.
    Grazie



  • di alessia (utente non iscritto) data: 27/04/2014 12:08:01

    Non va. Tutti i fogli si selezionano come avevo fatto già io, ma copia nel foglio archivio fatture solo il primo foglio. Come si può rimediare?
    Grazie



  • di lepat (utente non iscritto) data: 27/04/2014 12:22:35

    devi allegare il file per fare prove



  • di alessia (utente non iscritto) data: 27/04/2014 12:32:57

    ok lo faccio subito.



  • di lepat (utente non iscritto) data: 27/04/2014 13:42:19

    prova così:
     
    Private Sub CommandButton25_Click()
    For Each sh In Sheets
    With sh
    If .Index > 3 Then
    a = .[C13] 'Cod. cliente
    B = .[F6]   ' Rag. Sociale
    C = .[F7] ' Indirizzo cliente
    D = .[F8] ' Cap
    E = .[G8]   ' Città
    F = .[G9]   '  Partita Iva
    g = .[G10]  ' Codice Fiscale
    H = .[I3]  '  Emissione Fattura
    i = .[g3]  ' Numero Fattura
    J = .[C15] ' Periodo dal
    K = .[E15] ' Periodo al
    L = .[B18] ' Descrizione Servizio
    M = .[B20] ' Indirizzo
    n = .[B21]  ' CAP
    O = .[C21]  ' Città
    p = .[E41] ' Imponibile
    q = .[G41] ' Iva
    R = .[I41] ' Totale
    S = .[H40] ' Iva al %
    t = .[B22] ' Descrizione 2
    U = .[B24] ' ' Indirizzo 2
    V = .[B25] '  CAP 2
    W = .[C25] '  Città 2
    x = .[B26] ' Descrizione 3
    Y = .[B28] ' Indirizzo 3
    Z = .[B29]  ' CAP 3
    AA = .[C29] ' Città 3
    AB = .[B38] ' Descrizione 4
    AC = .[B39] ' Indirizzo, cap e città
    AD = .[C14]
    
    irow = 4  ' inizia a scrivere dalla riga 3
    While Sheets("Archivio Fatture").Cells(irow, 1) <> ""
    irow = irow + 1
    Wend
    Sheets("Archivio Fatture").Cells(irow, 1) = (a)   'CInt(a)
    Sheets("Archivio Fatture").Cells(irow, 2) = (B)   'CDate(b)
    Sheets("Archivio Fatture").Cells(irow, 3) = (C)
    Sheets("Archivio Fatture").Cells(irow, 4) = (D)
    Sheets("Archivio Fatture").Cells(irow, 5) = (E)
    Sheets("Archivio Fatture").Cells(irow, 6) = (F)
    Sheets("Archivio Fatture").Cells(irow, 7) = (g)
    Sheets("Archivio Fatture").Cells(irow, 8) = (H)  'CDate(h)
    Sheets("Archivio Fatture").Cells(irow, 9) = (i)
    Sheets("Archivio Fatture").Cells(irow, 10) = (J)
    Sheets("Archivio Fatture").Cells(irow, 11) = (K)
    Sheets("Archivio Fatture").Cells(irow, 12) = (L)
    Sheets("Archivio Fatture").Cells(irow, 13) = (M)
    Sheets("Archivio Fatture").Cells(irow, 14) = (n)
    Sheets("Archivio Fatture").Cells(irow, 15) = (O)
    Sheets("Archivio Fatture").Cells(irow, 16) = (p)
    Sheets("Archivio Fatture").Cells(irow, 17) = (q)
    Sheets("Archivio Fatture").Cells(irow, 18) = (R)
    Sheets("Archivio Fatture").Cells(irow, 19) = (S)
    Sheets("Archivio Fatture").Cells(irow, 20) = (t)
    Sheets("Archivio Fatture").Cells(irow, 21) = (U)
    Sheets("Archivio Fatture").Cells(irow, 22) = (V)
    Sheets("Archivio Fatture").Cells(irow, 23) = (W)
    Sheets("Archivio Fatture").Cells(irow, 24) = (x)
    Sheets("Archivio Fatture").Cells(irow, 25) = (Y)
    Sheets("Archivio Fatture").Cells(irow, 26) = (Z)
    Sheets("Archivio Fatture").Cells(irow, 27) = (AA)
    Sheets("Archivio Fatture").Cells(irow, 28) = (AB)
    Sheets("Archivio Fatture").Cells(irow, 29) = (AC)
    Sheets("Archivio Fatture").Cells(irow, 30) = (AD)
    End If
    End With
    Next
    MsgBox "Fattura registrata"
    CommandButton25.BackColor = 65535 '<--- di colore giallo
    
    End Sub



  • di alessia (utente non iscritto) data: 27/04/2014 16:17:53

    Grazie Lepat,
    mi hai risolto un gran problema.
    Grazie davvero
    bye Alessia



  • di alessia (utente non iscritto) data: 27/04/2014 16:30:48

    Il mio secondo problema è questo. Uso questo codice per inserire i dati su dei fogli qui elencati da 1 a 15. Si potrebbe ridurre il codice dicendo di copiare le celle B5 C5 D5 del foglio "Dati fatture" dal foglio4 e su tutti i fogli presenti nella cartella?
    Grazie
     
    On Error Resume Next
    
    
    If TextBox2 = "" Or TextBox3 = "" Or TextBox4 = "" Then
    MsgBox ("Mancano i Dati..."), vbExclamation, "ATTENZIONE !"
    TextBox3.SetFocus
    Exit Sub
    
    Else
    
    Sheets("Dati Fattura").Range("B5") = CDate(TextBox2)  'Registra data sul foglio Dati Fattura cella B5
    Sheets("Dati Fattura").Range("C5") = CDate(TextBox4)  'Registra data sul foglio Dati Fattura cella C5
    Sheets("Dati Fattura").Range("D5") = CDate(TextBox3)  'Registra data sul foglio Dati Fattura cella D5
    MsgBox ("Data Emissione Fattura e Periodo Fatturazione" & Chr(13) & "sono stati inseriti correttamente."), vbInformation, "Dati registrati... !"
    
    End If
    
    
    
    ' Questa è la parte che vorrei ridurre.
    ' Copia i dati "Data Fatturazione" & " Data Periodo nelle fatture sotto elencate
    -----------------------------il problema è qui -----------------------------------------
    si potrebbe impostare un ciclo e copiarmi dal foglio 4 e su tutti i fogli presenti nella cartella, senza stare ad indicare tutte le cartelle?
    
    Sheets("Dati Fattura").Range("d5").Copy Sheets("1").Range("i3") ' data emissione fattura: prendi dal foglio Dati Fattura il valore della cella D5 e copialo  nel foglio 1 cella i3
    Sheets("Dati Fattura").Range("d5").Copy Sheets("2").Range("i3") ' data emissione fattura
    Sheets("Dati Fattura").Range("d5").Copy Sheets("3").Range("i3") ' data emissione fattura
    Sheets("Dati Fattura").Range("d5").Copy Sheets("4").Range("i3") ' data emissione fattura
    Sheets("Dati Fattura").Range("d5").Copy Sheets("5").Range("i3") ' data emissione fattura
    Sheets("Dati Fattura").Range("d5").Copy Sheets("6").Range("i3") ' data emissione fattura
    Sheets("Dati Fattura").Range("d5").Copy Sheets("7").Range("i3") ' data emissione fattura
    Sheets("Dati Fattura").Range("d5").Copy Sheets("8").Range("i3") ' data emissione fattura
    Sheets("Dati Fattura").Range("d5").Copy Sheets("9").Range("i3") ' data emissione fattura
    Sheets("Dati Fattura").Range("d5").Copy Sheets("10").Range("i3") ' data emissione fattura
    Sheets("Dati Fattura").Range("d5").Copy Sheets("11").Range("i3") ' data emissione fattura
    Sheets("Dati Fattura").Range("d5").Copy Sheets("12").Range("i3") ' data emissione fattura
    Sheets("Dati Fattura").Range("d5").Copy Sheets("13").Range("i3") ' data emissione fattura
    Sheets("Dati Fattura").Range("d5").Copy Sheets("14").Range("i3") ' data emissione fattura
    Sheets("Dati Fattura").Range("d5").Copy Sheets("15").Range("i3") ' data emissione fattura
    
    '-----------------------------------------------------------------------------------------------
    Sheets("Dati Fattura").Range("b5").Copy Sheets("1").Range("c15") ' data periodo dal
    Sheets("Dati Fattura").Range("b5").Copy Sheets("2").Range("c15") ' data periodo dal
    Sheets("Dati Fattura").Range("b5").Copy Sheets("3").Range("c15") ' data periodo dal
    Sheets("Dati Fattura").Range("b5").Copy Sheets("4").Range("c15") ' data periodo dal
    Sheets("Dati Fattura").Range("b5").Copy Sheets("5").Range("c15") ' data periodo dal
    Sheets("Dati Fattura").Range("b5").Copy Sheets("6").Range("c15") ' data periodo dal
    Sheets("Dati Fattura").Range("b5").Copy Sheets("7").Range("c15") ' data periodo dal
    Sheets("Dati Fattura").Range("b5").Copy Sheets("8").Range("c15") ' data periodo dal
    Sheets("Dati Fattura").Range("b5").Copy Sheets("9").Range("c15") ' data periodo dal
    Sheets("Dati Fattura").Range("b5").Copy Sheets("10").Range("c15") ' data periodo dal
    Sheets("Dati Fattura").Range("b5").Copy Sheets("11").Range("c15") ' data periodo dal
    Sheets("Dati Fattura").Range("b5").Copy Sheets("12").Range("c15") ' data periodo dal
    Sheets("Dati Fattura").Range("b5").Copy Sheets("13").Range("c15") ' data periodo dal
    Sheets("Dati Fattura").Range("b5").Copy Sheets("14").Range("c15") ' data periodo dal
    Sheets("Dati Fattura").Range("b5").Copy Sheets("15").Range("c15") ' data periodo dal
    
    '----------------------------------------------------------------------------------------------------
    Sheets("Dati Fattura").Range("c5").Copy Sheets("1").Range("e15") ' data periodo al
    Sheets("Dati Fattura").Range("c5").Copy Sheets("2").Range("e15") ' data periodo al
    Sheets("Dati Fattura").Range("c5").Copy Sheets("3").Range("e15") ' data periodo al
    Sheets("Dati Fattura").Range("c5").Copy Sheets("4").Range("e15") ' data periodo al
    Sheets("Dati Fattura").Range("c5").Copy Sheets("5").Range("e15") ' data periodo al
    Sheets("Dati Fattura").Range("c5").Copy Sheets("6").Range("e15") ' data periodo al
    Sheets("Dati Fattura").Range("c5").Copy Sheets("7").Range("e15") ' data periodo al
    Sheets("Dati Fattura").Range("c5").Copy Sheets("8").Range("e15") ' data periodo al
    Sheets("Dati Fattura").Range("c5").Copy Sheets("9").Range("e15") ' data periodo al
    Sheets("Dati Fattura").Range("c5").Copy Sheets("10").Range("e15") ' data periodo al
    Sheets("Dati Fattura").Range("c5").Copy Sheets("11").Range("e15") ' data periodo al
    Sheets("Dati Fattura").Range("c5").Copy Sheets("12").Range("e15") ' data periodo al
    Sheets("Dati Fattura").Range("c5").Copy Sheets("13").Range("e15") ' data periodo al
    Sheets("Dati Fattura").Range("c5").Copy Sheets("14").Range("e15") ' data periodo al
    Sheets("Dati Fattura").Range("c5").Copy Sheets("15").Range("e15") ' data periodo al
    '-------------------------------------------------------------------------------------------------------------------------------
    CommandButton12.BackColor = 65535 '<--- di colore giallo



  • di lepat (utente non iscritto) data: 27/04/2014 16:30:54

    trovo però inutile l'uso delle variabili che hai fatto, bastava direttamente scrivere
     
    Sheets("Archivio Fatture").Cells(irow, 1) = .[C13] 'Cod. cliente



  • di alessia (utente non iscritto) data: 27/04/2014 16:35:43

    Ciao Lepat,
    Io ho poca dimistichezza nel VBA. Diciamo che me la cavicchio, forse esagero hahaha. Detto questo accetto i tuoi consigli. Cosa dovrei fare nello specifico se serve a migliorare?



  • di lepat (utente non iscritto) data: 27/04/2014 17:02:19

    non migliori le prestazioni, eviti di scrivere codice inutile, l'esempio te l'ho fatto, ricordatelo per la prossima volta



  • di alessia (utente non iscritto) data: 27/04/2014 17:19:26

    Adesso ho capito.
    Io lo scritto così:
    primo passaggio
    a = .[C13] 'Cod. cliente

    secondo passaggio
    Sheets("Archivio Fatture").Cells(irow, 1) = (a) ' Cod. cliente

    invece tu:
    Sheets("Archivio Fatture").Cells(irow, 1) = .[C13] 'Cod. cliente

    Come hai potuto notare non sono molto pratica. Tutto ciò che ho realizzato, o meglio che sto cercando di realizzare con grandi difficoltà è, frutto della mia poca conoscenza e delle tante ricerche in rete. E poi il Vostro grande contributo che ringrazio, nonchè, il sito che ci da la possibilità di interagire nel conoscere, scambiare ed approfondire sempre più.
    Grazie Lepat



  • di alessia (utente non iscritto) data: 28/04/2014 17:24:42

    Grazie per il vostro aiuto.
    Per il mio secondo problema, sono riuscita a risoverlo. Riporto qui il codice mettendolo a disposizione per quelle persone che come me, sono meno esperte. Perchè no, potrebbe ritornare utile!
    Grazie
    Un abbraccio a tutti....
    Bye Alessia
     
    On Error Resume Next
    
    
    If TextBox2 = "" Or TextBox3 = "" Or TextBox4 = "" Then
    MsgBox ("Mancano i Dati..."), vbExclamation, "ATTENZIONE !"
    TextBox3.SetFocus
    Exit Sub
    
    Else
    
    Sheets("Dati Fattura").Range("B5") = CDate(TextBox2)  'Registra data sul foglio Dati Fattura cella B5
    Sheets("Dati Fattura").Range("C5") = CDate(TextBox4)  'Registra data sul foglio Dati Fattura cella C5
    Sheets("Dati Fattura").Range("D5") = CDate(TextBox3)  'Registra data sul foglio Dati Fattura cella D5
    MsgBox ("Data Emissione Fattura e Periodo Fatturazione" & Chr(13) & "sono stati inseriti correttamente."), vbInformation, "Dati registrati... !"
    
    End If
    For i = 4 To Sheets.Count  ' incomincia dal foglio 4
    ' Copia i dati "Data Fatturazione" & " Data Periodo dal - al" nelle fatture su tutti i fogli presenti nella cartella
    Sheets("Dati Fattura").Range("D5").Copy Sheets(i).Range("I3")  ' data emissione fattura: prendi dal foglio Dati Fattura il valore della cella D5 e copialo  nei fogli nella cella i3
    Sheets("Dati Fattura").Range("B5").Copy Sheets(i).Range("C15") ' data periodo dal
    Sheets("Dati Fattura").Range("C5").Copy Sheets(i).Range("E15") ' data periodo al
    Next i
    
    '-------------------------------------------------------------------------------------------------------------------------------
    CommandButton12.BackColor = 65535 '<--- di colore giallo



  • di alessia (utente non iscritto) data: 28/04/2014 17:25:39

    P.s. Risolto alla grande........