Clem69690
Nouveau membre
Bonjour à tous,
je débute en vba et j'ai créé une macro
le mystère c'est que lorsque je la lance 2/3 fois elle marche parfaitement et met 5s à se terminer mais après à partir de 4/5 lancement elle devient extrêmement longue environ de 20sec à 5-6min.
Ma question est pourquoi la macro devient plus lente au bout d'un certain nombres de lancements ?
Merci
Edit modération, merci la prochaine fois de mettre la balise code /code autour de ton programme, pour cette fois je l'ai fait à ta place.
je débute en vba et j'ai créé une macro
Code:
Sub pieceenmoule()
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'vide le presse papier pour laisser plus de mémoire
Dim Cible As DataObject
Set Cible = New DataObject
Cible.SetText ""
Cible.PutInClipboard
Set Cible = Nothing
Set oDataObject = Nothing
'déclaration des variables
Dim dernligne1
Dim dernligne2
Dim i
Dim j
'trouver numéro derniere ligne / micro
dernligne1 = Sheets("Lissage Cires").Range("I27").End(xlDown).Row 'permet de trouver le numéro de la derniere ligne des micro en feuille 1
dernligne2 = Sheets("Lissage Cires (2)").Range("K9").End(xlDown).Row 'permet de trouver le numéro de la dernière ligne micro en feuille 2
'reset
Worksheets("Lissage Cires (2)").Activate
Range("K9:AX" & dernligne2).Select
Selection.ClearContents
Worksheets("Lissage Cires (2)").Activate
Range("F9:I" & dernligne2).Select
Selection.ClearContents
'copier coller les plages
'plage pièce 36semaines
Worksheets("Lissage Cires").Activate
Range("I27:AU" & dernligne1).Select
Selection.Copy
Sheets("Lissage Cires (2)").Select
Range("K9").Select
ActiveSheet.Paste
'plage pièce 4semaines
Worksheets("Lissage Cires").Activate
Range("D27:G" & dernligne1).Select
Selection.Copy
Sheets("Lissage Cires (2)").Select
Range("F9").Select
ActiveSheet.Paste
'plage jalon coef ...
Worksheets("Lissage Cires").Activate
Range("X2").Select
Selection.Copy
Sheets("Lissage Cires (2)").Select
Range("X2").Select
ActiveSheet.Paste
'plage H/J
Worksheets("Lissage Cires").Activate
Range("I2").Select
Selection.Copy
Sheets("Lissage Cires (2)").Select
Range("K2").Select
ActiveSheet.Paste
'plage couleur
Worksheets("Lissage Cires").Activate
Range("CR27:CR" & dernligne2).Select
Selection.Copy
Sheets("Lissage Cires (2)").Select
Range("AZ9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Worksheets("Lissage Cires").Activate
Range("DJ27:DK" & dernligne2).Select
Selection.Copy
Sheets("Lissage Cires (2)").Select
Range("AX9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'plage effectif+capa
Worksheets("Lissage Cires").Activate
Range("D1:G4").Select
Selection.Copy
Sheets("Lissage Cires (2)").Select
Range("F1").Select
ActiveSheet.Paste
'propager les formules colonnes ABC creuset p/g et nb moule max
Range("A10:D" & dernligne2).FillDown
Range("J10:J" & dernligne2).FillDown
'pointeur sur les tableau pour passer chaque valeur pièce en valeur moule
For j = 14 To 49 'trouver derniere colonne
For i = 10 To dernligne2 'derniere ligne de la colonne I à trouver
If Cells(i, 1).Value <> " " Then
If Cells(i, 1).Value <> 0 Then 'repérer les erreur de saisi
If Cells(i, j).Value <> " " Then
If Cells(i, j).Value <> 0 Then
Cells(i, j).Value = Cells(i, j).Value / Cells(i, 1).Value
Else
Cells(i, j).Value = " "
End If
Else
Cells(i, j).Value = " "
End If
Else
Cells(i, 1).Value = " "
If j = 14 Then
MsgBox ("P/G mauvais pour " & Cells(i, 11))
End If
End If
Else
Cells(i, 1).Value = " "
If j = 14 Then
MsgBox ("P/G mauvais pour " & Cells(i, 11))
End If
End If
Next
Next
'pointeur sur les tableau pour passer chaque valeur pièce en valeur moule
For j = 6 To 9 'trouver derniere colonne
For i = 10 To dernligne2 'derniere ligne de la colonne I à trouver
If Cells(i, 1).Value <> " " Then 'repérer les erreur de saisi
If Cells(i, j).Value <> "" Then
If Cells(i, j).Value <> 0 Then
Cells(i, j).Value = Cells(i, j).Value / Cells(i, 1).Value
Else
Cells(i, j).Value = ""
End If
Else
Cells(i, j).Value = ""
End If
End If
Next
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Sub copymouleenpiece()
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim Cible As DataObject
Set Cible = New DataObject
Cible.SetText ""
Cible.PutInClipboard
Set Cible = Nothing
Dim dernligne1
Dim dernligne2
'trouver numéro derniere ligne / micro
dernligne1 = Sheets("Lissage Cires").Range("I27").End(xlDown).Row 'permet de trouver le numéro de la derniere ligne des micro en feuille 1
dernligne2 = Sheets("Lissage Cires (2)").Range("K9").End(xlDown).Row 'permet de trouver le numéro de la dernière ligne micro en feuille 2
'plage moule
Worksheets("Lissage Cires (2)").Activate
Range("F9:I" & dernligne2).Select
Selection.Copy
Sheets("Lissage Cires").Select
Range("D27").Select
ActiveSheet.Paste
Worksheets("Lissage Cires (2)").Activate
Range("N9:AV" & dernligne2).Select
Selection.Copy
Sheets("Lissage Cires").Select
Range("L27").Select
ActiveSheet.Paste
Calculate
Dim i
Dim j
Dim k
Dim l
For j = 12 To 47
For i = 28 To dernligne1
'repérer les erreur de saisi
If Cells(i, 1).Value <> " " Then
If Cells(i, 1).Value <> 0 Then 'repérer les erreur de saisi
If Cells(i, j).Value <> " " Then
If Cells(i, j).Value <> 0 Then
Cells(i, j).Value = Cells(i, j).Value * Cells(i, 1).Value
Else
Cells(i, j).Value = " "
End If
Else
Cells(i, j).Value = " "
End If
Else
Cells(i, 1).Value = " "
If j = 12 Then
MsgBox ("P/G mauvais pour " & Cells(i, 9))
End If
End If
Else
Cells(i, 1).Value = " "
If j = 12 Then
MsgBox ("P/G mauvais pour " & Cells(i, 9))
End If
End If
Next
Next
For j = 4 To 7
For i = 28 To dernligne1
If Cells(i, 1).Value <> " " Then
If Cells(i, j).Value <> "" Then
If Cells(i, j).Value <> 0 Then
Cells(i, j).Value = Cells(i, j).Value * Cells(i, 1).Value
Else
Cells(i, j).Value = ""
End If
Else
Cells(i, j).Value = ""
End If
End If
Next
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End sub
Ma question est pourquoi la macro devient plus lente au bout d'un certain nombres de lancements ?
Merci
Edit modération, merci la prochaine fois de mettre la balise code /code autour de ton programme, pour cette fois je l'ai fait à ta place.