Discussione chiusa
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Codice lento

  1. #1
    trump61 non è in linea Scolaretto
    Ciao a tutti. In pratica anche io ho un problema di velocità
    uso questo codice:

    Sub cerca_e_trasferisci_notte_lunedì()
    Dim conta As Long
    Dim valore As String
    'Notte
    Sheets("Turno Squadre").Select
    conta = 4
    valore = "N"
    Application.ScreenUpdating = False
    For a = 4 To 36
    Range("C" & a).Select
    If ActiveCell = "" Then Exit For
    If ActiveCell = valore Then
    Sheets("FoglioStampa").Range("B" & conta).Value = ActiveCell.Offset(0, -2)
    Sheets("FoglioStampa").Range("B" & conta).Value = ActiveCell.Offset(0, -2)
    Sheets("FoglioStampa").Range("B" & conta).Value = ActiveCell.Offset(0, -2)
    Sheets("FoglioStampa").Range("B" & conta).Value = ActiveCell.Offset(0, -2)
    Sheets("FoglioStampa").Range("B" & conta).Value = ActiveCell.Offset(0, -2)
    conta = conta + 1
    End If
    Next
    Application.ScreenUpdating = True
    End Sub
    
    il problema che lo devo fare per 34 volte perchè deve compilare nel fogliostampa i turni settimanali di 33 persone.
    ognuna di queste procedure cerca nelle colonne che rappresentano i giorni della setttimana e lo fa per 5 tipi di turno, questo sopra lo fa per il turno di notte.
    Non uso da un bel po' il vba e piu' di questo con i miei ricordi non riesco a fare.
    Vi ringrazio per gli eventuali aiuti.
    Ultima modifica di AntonioG; 07-10-2013 20:19  Motivo: Usare i tag CODE !

  2. #2
    PaoloTalini non è in linea Scribacchino
    Prova con questa modifica.
    Dovrebbe andare meglio.

    Sub cerca_e_trasferisci_notte_lunedì2()
    '
        Dim A As Long
        Dim conta As Long
        Dim valore As String
        'Notte
        Sheets("Turno Squadre").Select
        conta = 4
        valore = "N"
        Application.Calculation = xlManual
        '
        For A = 4 To 36
            If Range("C" & A) = "" Then Exit For
                If Range("C" & A) = valore Then
                    Sheets("FoglioStampa").Range("B" & conta).Value = Range("C" & A).Offset(0, -2)
                    Sheets("FoglioStampa").Range("B" & conta).Value = Range("C" & A).Offset(0, -2)
                    Sheets("FoglioStampa").Range("B" & conta).Value = Range("C" & A).Offset(0, -2)
                    Sheets("FoglioStampa").Range("B" & conta).Value = Range("C" & A).Offset(0, -2)
                    Sheets("FoglioStampa").Range("B" & conta).Value = Range("C" & A).Offset(0, -2)
                    conta = conta + 1
            End If
        Next
        Application.Calculation = xlCalculationAutomatic
    End Sub
    
    Saluti.
    ℹ️ Leggi di più su PaoloTalini ...

  3. #3
    ricky53 non è in linea Scribacchino
    Ciao Trump,
    perchè l'istruzione
    Sheets("FoglioStampa").Range("B" & conta).Value = Range("C" & A).Offset(0, -2)
    
    è presente "5" volte ???

    Forse dovevi cambiare la colonna di partenza e di arrivo ?
    ℹ️ Leggi di più su ricky53 ...

  4. #4
    trump61 non è in linea Scolaretto
    Grazie per la vostra attenzione. Ora provo i codice che mi hai suggerito.
    La riga di codice che hai evidenziato è presente 5 volte perchè mi deve incolonnare i dati che possono essere 5,
    perchè il turno di notte può essere da 4 a 5 persone.
    nel turno di mattina e in quello di pomeriggio la stessa stringa compare 12 volte.

  5. #5
    trump61 non è in linea Scolaretto
    Ho modificato tre routine delle 35, un confronto tra le prime 3 fa notare una differenza di velocità domani le cambio tutte così potro fare la prova completa.
    per ora ti ringrazio

  6. #6
    trump61 non è in linea Scolaretto
    Grazie i tempi si sono ridotti molto

  7. #7
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    Ciao
    non è normale che tu debba eseguire 34 una procedura anche se utilizza righe/colonne diverse.
    Se fornisci una copia (senza dati sensibili) di quello che hai e di quello che vuoi, si potrebbero trovare strade alternative ed evitare la ridondanza dei codici.

    Inoltre, riprendendo la domanda di Ricky, la tua istruzione che ripeti 5 o 12 volte, scrive un valore nella stessa cella prendendolo sempre da una stessa cella...che senso ha?

    posto per esempio conta=4 e A=4
    Sheets("FoglioStampa").Range("B" & conta).Value = ActiveCell.Offset(0, -2)
    copia A4 in B4 per 5 volte...

    Sbaglio l'interpretazione??

    saluti
    Ultima modifica di dodo47; 08-10-2013 10:09 

  8. #8
    trump61 non è in linea Scolaretto
    Ciao, non ho problemi ad inserire il file ma non so dove metterlo. Non scrivo sempre sulla stessa cella, grazie all'aiuto di Paolo ho sostituito il codice che si è velocizzato,in pratica con il ciclo for controllo che ad esempio nella colonna C sia presente la Lettera N se è così scrivo in un secondo foglio il valore che compare nella colonna A del primo foglio, questo valore lo scrive nella cella: colonna B riga "conta" che grazie alla riga di codice "conta = conta +1 inizierà da B4 perchè ho dato a "conta" il valore 4, ogni volta che troverà una corrispondenza nel foglio 1 proseguirà scrivendo in B5, B6, ecc. ecc. La ricerca nel foglio 1 va dalla riga 4 alla riga 36 . Questa operazione la devo svolgere per tutti i giorni della settimana e per i turni di lavoro nell' arco della giornata che sono: Notte, Mattina, Pomeriggio, disponibile 1, disponibile 2, Riposo, ed eventuale Esenzione . Spero di essere stato chiaro, vado in difficoltà ogni volta che devo spiegare cosa devo o vorrei ottenere in vba, spesso non è comprensibile quello che espongo.
    Grazie a tutti se mi dite come si può fare a postare i file lo faccio volentieri magari avete un idea migliore della mia

  9. #9
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    Ciao
    puoi utilizzare un sito di free hosting tipo: Free File Hosting - Online Storage; Upload Mp3, Videos, Music. Backup Files

    saluti

  10. #10
    trump61 non è in linea Scolaretto
    il file zippato sta su questo link http://www.filedropper.com/test_27

Discussione chiusa
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. EXCEL 2010 VBA: Codice Troppo Lento
    Da Elimar nel forum Microsoft Excel
    Risposte: 2
    Ultimo Post: 11-01-2017, 13:07
  2. Programma lento su Seven
    Da collega nel forum Visual Basic 6
    Risposte: 7
    Ultimo Post: 17-09-2014, 21:29
  3. [Excel 2007] Esecuzione codice molto lento....
    Da Elimar nel forum Microsoft Excel
    Risposte: 5
    Ultimo Post: 13-04-2011, 09:25
  4. File lento
    Da OptimusPrime2008 nel forum Microsoft Word
    Risposte: 0
    Ultimo Post: 20-10-2009, 11:33
  5. IDE lento
    Da KeepC nel forum Microsoft Windows
    Risposte: 0
    Ultimo Post: 23-03-2009, 10:54