Thema Datum  Von Nutzer Rating
Antwort
Rot Optimierung eines VBA
05.07.2016 09:44:49 Imed
NotSolved

Ansicht des Beitrags:
Von:
Imed
Datum:
05.07.2016 09:44:49
Views:
1135
Rating: Antwort:
  Ja
Thema:
Optimierung eines VBA

hallo zusammen, 

 

ich habe ein performance Problem meines VBA codes. ich benutze viele Sverweise und summewenn Funktionen. jetzt stehe ich vor einem Lange Zeit der Ausführung. kann jemanden mir helfen?

Sub consolidation_de()
  
    Dim bereich As Range
    Dim srchRange As Range, srchrange1 As Range, srchrange2 As Range
    Dim lastr As Long
    Dim lastc As Long
    Dim i As Integer
    Dim N As Integer
    Dim M As Integer
    ' start
   With Application
  .ScreenUpdating = False
    .Calculation = xlCalculationManual
    .EnableEvents = False
   End With
 
    lastr = Sheets("paie").Cells(Rows.Count, 1).End(xlUp).Row
    Worksheets("Contrôle Coherence").Range("A2:AE65000").ClearContents
 
      
    Sheets("paie").Select
   
    Columns("A:A").Select
    Selection.Copy
    Sheets("Contrôle Coherence").Select
    Columns("A:A").Select
   ActiveCell.PasteSpecial Paste:=xlPasteValues
    Set bereich = Sheets("Contrôle Coherence").Range("A2:A" & Cells(65536, 1).End(xlUp).Row)
     
 
    'range=admin range2=paie
    Set adminarr = Sheets("admin").Range("A:AU")
    Set paiearr = Sheets("Paie").Range("A:L")
    Set mat_rng = Sheets("horaire").Range("C:C") 'matricules
    Set mat_rng_abs = Sheets("Absences").Range("E:E")
    Set heures_rng = Sheets("Absences").Range("Q:Q") 'ticket restaurant
    'Set heurestheo_rng = Sheets("horaire").Range("N:N")
    'Set heurestrava_rng = Sheets("horaire").Range("O:O")
    Set Ticketresto = Sheets("horaire").Range("J:J")
    Set TitreNour = Sheets("horaire").Range("K:K")
    'Set heuressup = Sheets("horaire").Range("P:P")
    Set Abs_primes_salissure = Sheets("absences").Range("R:R") 'absence primes de salissure
    Set jour_travail = Sheets("horaire").Range("M:M")
    Set jour_absence = Sheets("absences").Range("L:L")
    Set jour_ouvres = Sheets("horaire").Range("N:N")
    'Set MATJOURABS = Sheets("Absences").Range("T:T")
    Set jour_abs_PrP = Sheets("Absences").Range("Q:Q")
    Set Mat_range1 = Sheets("Perte SS").Range("B:B")
    Set nbre_maintenu = Sheets("Perte SS").Range("H:H")
    Set MTT_maintenu = Sheets("Perte SS").Range("I:I")
    Set Mat_range2 = Sheets("Perte SS").Range("K:K")
    Set nbre_retenue = Sheets("Perte SS").Range("Q:Q")
    Set MTT_retenue = Sheets("Perte SS").Range("R:R")
    Set srchRange3 = Sheets("Perte SS").Range("K:S")
   ' Set srchrange4 = Sheets("Paie Nombre").Range("A:T")
    Set mat_TNRAZ = Sheets("TNRAZ").Range("A:A")
    Set TNRAZ = Sheets("TNRAZ").Range("H:H")
    Set mat_cantine = Sheets("TNTR NEG CANTINE").Range("A:A")
    Set CANTINE = Sheets("TNTR NEG CANTINE").Range("H:H")
    Set Mois_entier_présence = Sheets("Absences").Range("V:V")
    
    lastr = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    
    ' process
 
 
    With Application
        For i = 1 To lastr
        
          
          
            bereich.Cells(i, 1).Offset(0, 1).Value = _
            .VLookup(bereich.Cells(i, 1).Value, adminarr, 5, 0)
            bereich.Cells(i, 1).Offset(0, 2).Value = _
            .VLookup(bereich.Cells(i, 1).Value, adminarr, 6, 0)
            bereich.Cells(i, 1).Offset(0, 3).Value = _
            .VLookup(bereich.Cells(i, 1).Value, adminarr, 10, 0)
            bereich.Cells(i, 1).Offset(0, 4).Value = _
            .VLookup(bereich.Cells(i, 1).Value, adminarr, 12, 0)
            bereich.Cells(i, 1).Offset(0, 5).Value = _
            .VLookup(bereich.Cells(i, 1).Value, adminarr, 4, 0)
'primes de presence
            bereich.Cells(i, 1).Offset(0, 6).Value = _
            .VLookup(bereich.Cells(i, 1).Value, paiearr, 2, 0)
            bereich.Cells(i, 1).Offset(0, 7).Value = _
            .VLookup(bereich.Cells(i, 1).Value, adminarr, 19, 0)
            bereich.Cells(i, 1).Offset(0, 8).Value = _
            .SumIf(mat_rng_abs, bereich.Cells(i, 1).Value, jour_abs_PrP)
            bereich.Cells(i, 1).Offset(0, 9).Value = _
            .SumIf(mat_rng, bereich.Cells(i, 1).Value, jour_travail)
              bereich.Cells(i, 1).Offset(0, 59).Value = _
            .VLookup(bereich.Cells(i, 1).Value, adminarr, 17, 0)
            bereich.Cells(i, 1).Offset(0, 12).Value = _
            .SumIf(mat_rng_abs, bereich.Cells(i, 1).Value, Mois_entier_présence)
            
 'ticket restaurants
            
            
            
            
             bereich.Cells(i, 1).Offset(0, 14).Value = _
            .VLookup(bereich.Cells(i, 1).Value, paiearr, 8, 0) ' ticket restaurant paie
            
            bereich.Cells(i, 1).Offset(0, 15).Value = _
            .SumIf(mat_rng, bereich.Cells(i, 1).Value, Ticketresto)
            
              bereich.Cells(i, 1).Offset(0, 16).Value = _
            .SumIf(mat_TNRAZ, bereich.Cells(i, 1).Value, TNRAZ) ' TNRAZ
            
            bereich.Cells(i, 1).Offset(0, 17).Value = _
            .SumIf(mat_cantine, bereich.Cells(i, 1).Value, CANTINE) ' CANTINE
 
             bereich.Cells(i, 1).Offset(0, 18).Value = _
            .VLookup(bereich.Cells(i, 1).Value, adminarr, 45, 0) ' droit des tickets
           If bereich.Cells(i, 1).Offset(0, 18).Value = "TR" Then
           bereich.Cells(i, 1).Offset(0, 15).Value = _
            .SumIf(mat_rng, bereich.Cells(i, 1).Value, Ticketresto)
            ElseIf bereich.Cells(i, 1).Offset(0, 18).Value <> "TR" Then
            bereich.Cells(i, 1).Offset(0, 15).Value = _
            .SumIf(mat_rng, bereich.Cells(i, 1).Value, TitreNour)
            End If
            
            
            
    'cotisation
    
            bereich.Cells(i, 1).Offset(0, 22).Value = _
            .VLookup(bereich.Cells(i, 1).Value, paiearr, 5, 0) 'salaire Brut
            bereich.Cells(i, 1).Offset(0, 23).Value = _
            .VLookup(bereich.Cells(i, 1).Value, adminarr, 46, 0) 'taux de carge patronale
              bereich.Cells(i, 1).Offset(0, 24).Value = _
           .VLookup(bereich.Cells(i, 1).Value, adminarr, 47, 0) 'taux de charge salariale
             bereich.Cells(i, 1).Offset(0, 25).Value = _
            .VLookup(bereich.Cells(i, 1).Value, paiearr, 10, 0) 'patronale
            bereich.Cells(i, 1).Offset(0, 26).Value = _
            .VLookup(bereich.Cells(i, 1).Value, paiearr, 6, 0) 'salariale
            
      'primes de salissures
            
            bereich.Cells(i, 1).Offset(0, 30).Value = _
            .VLookup(bereich.Cells(i, 1).Value, paiearr, 7, 0)
             bereich.Cells(i, 1).Offset(0, 31).Value = _
            .VLookup(bereich.Cells(i, 1).Value, adminarr, 26, 0) 'droit de salissure
            bereich.Cells(i, 1).Offset(0, 32).Value = _
            .SumIf(mat_rng_abs, bereich.Cells(i, 1).Value, Abs_primes_salissure) 'absence prime de salissure
 
           
            bereich.Cells(i, 1).Offset(0, 33).Value = _
            .VLookup(bereich.Cells(i, 1).Value, adminarr, 2, 0)
            
            
            
            'perte sur salaire
            
            
            bereich.Cells(i, 1).Offset(0, 38).Value = _
            .SumIf(Mat_range1, bereich.Cells(i, 1).Value, nbre_maintenu)
            bereich.Cells(i, 1).Offset(0, 39).Value = _
            .SumIf(Mat_range1, bereich.Cells(i, 1).Value, MTT_maintenu)
          
            bereich.Cells(i, 1).Offset(0, 40).Value = _
            .SumIf(Mat_range2, bereich.Cells(i, 1).Value, nbre_retenue)
            bereich.Cells(i, 1).Offset(0, 41).Value = _
            .SumIf(Mat_range2, bereich.Cells(i, 1).Value, MTT_retenue)
             bereich.Cells(i, 1).Offset(0, 42).Value = _
            .VLookup(bereich.Cells(i, 1).Value, srchRange3, 9, 0)
            
            'IPRIAC
            bereich.Cells(i, 1).Offset(0, 47).Value = _
            .VLookup(bereich.Cells(i, 1).Value, paiearr, 11, 0)
            
             bereich.Cells(i, 1).Offset(0, 51).Value = _
            .SumIf(mat_rng, bereich.Cells(i, 1).Value, jour_ouvres)
            
     On Error Resume Next
            
          Next i
          End With
With Application
    .ScreenUpdating = True
    .Calculation = xlCalculationAutomatic
    .EnableEvents = True
End With
           
           MsgBox "Master est fini"
 End Sub
 
 
vielen  Dank im Voraus!
 
Viele Grüße!
 
Imed 

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Optimierung eines VBA
05.07.2016 09:44:49 Imed
NotSolved