blocco inserimento



  • blocco inserimento
    di Dodi (utente non iscritto) data: 22/11/2017 18:24:06

    Buona sera a tutti
    Spero di trovare qualcuno ancora in linea e che mi possa dare una mano.
    Fin ora faccio un elogio a tutti.
    Ho un problema, e mi spiego.
    Ho un foglio dove archivio dati giornalmente.
    L'inserimento parte dalla cella B e finisce nella cella AB
    Dalla cella AC ho tutte le formule di calcolo fino alla riga AC 45000.
    Quando archivio i dati usando il codice sottostante i dati me li vedo inserire dopo la riga 45000.
    Per ora per risolvere il problema ho inserito una colonna vuota tra il renge AB e range AC , creando un distacco.
    Ora chiedevo c'è un modo o un codice che con il cliccare il bottone archivia i dati li inserisce nel renge B:-AB? Senza considerare tutti i dati nelle colonne a seguire? Spero di esser stato chiaro. Questa funzione mi serve per poi creare tabelle Pivot di riepilogo. E con il mio metodo posticcio o problemi perché non ottengo i risultati che voglio.

    Grazie per l'aiuto.
     
    '**************************************************
    'Codice Inserimento dati da ComBox-TexBox-CheckBox'
    '**************************************************
    
    Private Sub archivia_Click()
    
    Sheets("GiornaleLavori").Unprotect Password:="123"
    
    
    Dim RowCount As Long
    Dim ctl As Control
    RowCount = Worksheets("GiornaleLavori").Range("B1").CurrentRegion.Rows.Count
    With Worksheets("GiornaleLavori").Range("B1")
        .Offset(RowCount, 0).Value = ordine.Value
        .Offset(RowCount, 1).Value = CDate(data.Value)
        .Offset(RowCount, 2).Value = Meteo.Value
        .Offset(RowCount, 3).Value = cantiere.Value
        .Offset(RowCount, 4).Value = ComboBox5.Value
        .Offset(RowCount, 5).Value = ComboBox1.Value
        .Offset(RowCount, 6).Value = Opera.Value
        .Offset(RowCount, 7).Value = WBS.Value
        .Offset(RowCount, 8).Value = Sub_wbs.Value
        .Offset(RowCount, 9).Value = Task_Lavorazioni1.Value
        .Offset(RowCount, 10).Value = Attivita1.Value
        .Offset(RowCount, 11).Value = ore_Lav1.Value
        .Offset(RowCount, 12).Value = Trasf.Value
        .Offset(RowCount, 13).Value = ore_perm.Value
        .Offset(RowCount, 14).Value = ore_inte.Value
        .Offset(RowCount, 15).Value = Ferie.Value
        .Offset(RowCount, 16).Value = ComboBox2.Value
        .Offset(RowCount, 17).Value = Matricola1.Value
        .Offset(RowCount, 18).Value = ore1.Value
        .Offset(RowCount, 19).Value = Attrez1.Value
        .Offset(RowCount, 20).Value = ComboBox4.Value
        .Offset(RowCount, 21).Value = Matricolattrez.Value
        .Offset(RowCount, 22).Value = oreattrez.Value
        .Offset(RowCount, 23).Value = Materiale.Value
        .Offset(RowCount, 24).Value = viaggi.Value
        .Offset(RowCount, 25).Value = mc_ton.Value
        .Offset(RowCount, 26).Value = Note.Value
        
     End With
     
    Opera.Text = ""
    WBS.Text = ""
    Sub_wbs.Text = ""
    Task_Lavorazioni1.Text = ""
    Attivita1.Text = ""
    ore_Lav1.Text = ""
    ore_perm.Text = ""
    ore_inte.Text = ""
    Ferie.Text = ""
    Matricola1.Text = ""
    ore1.Text = ""
    Attrez1.Text = ""
    ComboBox4.Text = ""
    Matricolattrez.Text = ""
    oreattrez.Text = ""
    Materiale.Text = ""
    viaggi.Text = ""
    mc_ton.Text = ""
    Note.Text = ""
    ComboBox2 = ""
    Trasf = ""
    ComboBox2.SetFocus
              
        
    '*******************************************
    'Inseriemnto in automatico N° di ordine (2)'
    '*******************************************
    Range("B11").Select
    While ActiveCell <> ""
    If ActiveCell <> "N° ord" Then
    ordine.Text = ActiveCell.Offset(0, 0).Value + 1
    Else
    'ordine: Text = 1
    End If
    ActiveCell.Offset(1, 0).Activate
    Wend
    
    '********************************************************************************
    'Codice per aggiornare i dati nella listbox dopo varie modifiche o registrazione
    '********************************************************************************
    
    CaricaDati
    
    
    Sheets("GiornaleLavori").Protect Password:="123"
    
    End Sub
    



  • di Dodi (utente non iscritto) data: 23/11/2017 09:24:49

    Buon giorno
    Gentilmente qualcuno può valutare il mio caso è se esiste un modo?
    Grazie



  • di Luca73 data: 23/11/2017 10:35:19

    Ciao
    Non è molto chiaro il tuo quesito
    in excel AC, AB sono colonne non celle
    AC45000 è una cella non una riga.

    Non mi è chiaro qual'è il tuo problema.
    Mi sembra che sia che lui ti scriverebbe dalla riga 45000 invece che nella prima libera?

    Se così hai due possibilità (ma senza foglio sparo unpo' alla cieca)
    1) elimini tutte le formiule delle righe non utilizzate e le aggiungi man mano con la macro stessa per la riga che compili
    2) cerchi la prima riga libera con una soluzione del tipo
    Range("A" & Rows.Count).End(xlup)
    Ovvero ti seleziona l'ultima cella occupata (partendo dal basso)
    Ciao
    Luca







  • di Dodi (utente non iscritto) data: 23/11/2017 14:52:56

    Ciaoo Luca
    Grazie per la risposta ho avuto solo ora modo di provare le tue soluzioni.
    Con la tua seconda proposta ottengo lo stesso risultato che avevo con il mio codice . Invece con la tua prima soluzione non ho idea di come posso utilizzare la macro che mi inserisce le formule man mano. Anche perché dalla colonna AD alla colonna AN
    Ho tutte formule di calcolo.
    Pensavo che esistesse un modo o un codice, che individuasse il range di scrittura. Io ho provato a fare così ma mi da errore.
    Se magari puoi darmi una dritta di come posso inserire i codici di calcolo man man poi provo io a creare il resto. Mi serve uno spunto.
    Anche perché sto imparando ora è anche grazie al vostro aiuto ho imparato tanto.

    Grazie

     
    Dim ctl As Control
    RowCount = Worksheets("GiornaleLavori").Range("B1:AB").CurrentRegion.Rows.Count



  • di Dodi (utente non iscritto) data: 23/11/2017 15:01:28

    Per dire nella cella AF1 ho il seguente codice
    =SE.ERRORE(cerca.vert(U1;TABrisorse!B3:C235;2;Falso);"")
    Mentre nella cella AG1 ho il seguente codice
    =SE.errore(somma(T1*AF1);"€0,00")

    E così via fino alla colonna AN
    Appunto se mi dai una dritta provo
    Ancora grazie



  • di Zer0Kelvin data: 23/11/2017 16:33:05

    Ciao.
    Per trovare la prima riga che non contiene un valore in col. B potresti usare
     
    RowCount = 1
    While Cells(RowCount, 2).Value <> ""
        RowCount = RowCount + 1
    Wend
    



  • di Dodi (utente non iscritto) data: 23/11/2017 17:07:23

    Ciao Zerokelvin
    Più precisamente in che parte del mio codice devo inserire la tua soluzione è quale parte sempre del mio codice devo cancellare?

    Grazie



  • di Zer0Kelvin data: 23/11/2017 18:43:40

    Al posto di 
     
    'Al posto di questo
    RowCount = Worksheets("GiornaleLavori").Range("B1").CurrentRegion.Rows.Count
    
    'metti
    
    RowCount = 1
    While Worksheets("GiornaleLavori").Cells(RowCount, 2).Value <> ""
        RowCount = RowCount + 1
    Wend
    RowCount = RowCount - 1



  • di dodi (utente non iscritto) data: 23/11/2017 18:59:12

    Zerokelviinnnn

    Obbiettivo centrato in pieno.

    Grazieeeeeee