J'ai une macro qui tourne en boucle H24. Sauf que régulièrement (au moins une fois par jour), le fichier plante et reste sur "Excel ne répond pas" et remarche seulement après avoir redémarré l'ordinateur. Que faire pour éviter cette erreur?
Voici mon code:
Const coul1 = 15
Const coul2 = xlNone
'Deux couleurs pour l'alternance des kits
Const cofin = "P"
'Colonne de fin pour l'affichage
Const lideb = 5
Const rouge = 3
Dim uneheure
Sub Actualiser()
'
' Définit l'intervalle avec l'heure actuelle
uneheure = TimeSerial(Hour(Time), Minute(Time) + 15, Second(Time))
' Appel récursif
Application.OnTime uneheure, "Actualiser"
Call ActualiserStock
Call ActualiserBDDTCD
Call FAUXKIT
Call actualisationtcd
Call ActuTCD
Call ActuBLK14
Call ActuGENE
Call MenuPrincipal
'Call Affichage
Call MenuPrincipal
Call Sauvegarde
'Appel de toutes les fonctions definies
End Sub
Sub auto_open()
Actualiser
End Sub
Sub auto_close()
On Error Resume Next
Application.OnTime uneheure, Procedure:="Actualiser", Schedule:=False
End Sub
Sub ActualiserStock()
On Error Resume Next
'
' ActualiserStock Macro
'
'
Sheets("Stock").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
End Sub
Sub ActuBLK14()
On Error Resume Next
'
' ActuBLK14 Macro
'
'
Sheets("Suivi Ref Kit BLK14").Select
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotCache.Refresh
End Sub
Sub ActuGENE()
On Error Resume Next
'
' ActuGENE Macro
'
'
Sheets("Suivi Ref Kit GENE").Select
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotCache.Refresh
End Sub
Sub ActualiserBDDTCD()
'
' ActualiserBDDTCD Macro
'
'
Windows("Affichage Dynamique.xlsm").Activate
Sheets("Stock").Select
Columns("A:E").Select
Selection.Copy
Sheets("BDD TCD REF KIT").Select
Columns("A:E").Select
ActiveSheet.Paste
Sheets("Stock").Select
Columns("F:G").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("BDD TCD REF KIT").Select
Columns("G:H").Select
ActiveSheet.Paste
End Sub
Sub ActuTCD()
On Error Resume Next
'
' ActuTCD Macro
'
'
Sheets("Suivi Ref Kit LOG").Select
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotCache.Refresh
End Sub
Sub actualisationtcd()
'
' actualisationtcd Macro
' Coller extraction stock tracking Oracle, Recherchev dans fichier regroupement, actualisation TCD
'
'recherchev Macro
'
Sheets("BDD TCD REF KIT").Select
'
Range("AT1").Select
ActiveCell.FormulaR1C1 = "N°regroupement"
Range("AU1").Select
ActiveCell.FormulaR1C1 = "OP oracle"
Range("AV1").Select
ActiveCell.FormulaR1C1 = "Wip job"
Range("AW1").Select
ActiveCell.FormulaR1C1 = "Station"
Range("AX1").Select
ActiveCell.FormulaR1C1 = "Description OP"
Range("AY1").Select
ActiveCell.FormulaR1C1 = "Buff"
Range("AT2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-42],Regroupement!C[-45]:C[-28],6,FALSE)"
Range("AU2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-43],Regroupement!C[-46]:C[-32],15,FALSE)"
Range("AV2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-44],Regroupement!C[-47]:C[-44],4,FALSE)"
Range("AW2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-45],Regroupement!C[-48]:C[-44],5,FALSE)"
Range("Ax2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-46],Regroupement!C[-49]:C[-28],19,FALSE)"
Range("Ay2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-47],Regroupement!C[-50]:C[-28],9,FALSE)"
Range("AT2:AY2").Select
Selection.AutoFill Destination:=Range("AT2:AY3000"), Type:=xlFillDefault
Range("AT2:AY3000").Select
End Sub
Sub MenuPrincipal()
'
' MenuPrincipal Macro
'
'
Sheets("Suivi Ref Kit LOG").Select
End Sub
Sub Sauvegarde()
On Error Resume Next
'
' Sauvegarde Macro
'
'
ActiveWorkbook.Save
End Sub
Sub FAUXKIT()
'
' LAPRE Macro
'
'
Rows("2:2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A2").Select
ActiveCell.FormulaR1C1 = "OF1"
Range("B2").Select
ActiveCell.FormulaR1C1 = "TRACKING"
Range("C2").Select
ActiveCell.FormulaR1C1 = "L*APRE"
Range("D2").Select
ActiveCell.FormulaR1C1 = "KIT.FAUX"
Range("E2").Select
ActiveCell.FormulaR1C1 = "KIT.FAUX"
Range("G2").Select
ActiveCell.FormulaR1C1 = "EA"
Range("H2").Select
ActiveCell.FormulaR1C1 = "1"
Range("L2").Select
ActiveCell.FormulaR1C1 = "1"
Range("AM18").Select
Rows("2:2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A2").Select
ActiveCell.FormulaR1C1 = "OF1"
Range("B2").Select
ActiveCell.FormulaR1C1 = "TRACKING"
Range("C2").Select
ActiveCell.FormulaR1C1 = "L*TR*U"
Range("D2").Select
ActiveCell.FormulaR1C1 = "KIT.FAUX"
Range("E2").Select
ActiveCell.FormulaR1C1 = "KIT.FAUX"
Range("G2").Select
ActiveCell.FormulaR1C1 = "EA"
Range("H2").Select
ActiveCell.FormulaR1C1 = "1"
Range("L2").Select
ActiveCell.FormulaR1C1 = "1"
Range("AM18").Select
Rows("2:2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A2").Select
ActiveCell.FormulaR1C1 = "OF1"
Range("B2").Select
ActiveCell.FormulaR1C1 = "TRACKING"
Range("C2").Select
ActiveCell.FormulaR1C1 = "C*TR*U"
Range("D2").Select
ActiveCell.FormulaR1C1 = "KIT.FAUX"
Range("E2").Select
ActiveCell.FormulaR1C1 = "KIT.FAUX"
Range("G2").Select
ActiveCell.FormulaR1C1 = "EA"
Range("H2").Select
ActiveCell.FormulaR1C1 = "1"
Range("L2").Select
ActiveCell.FormulaR1C1 = "1"
Range("AM18").Select
Rows("2:2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A2").Select
ActiveCell.FormulaR1C1 = "OF1"
Range("B2").Select
ActiveCell.FormulaR1C1 = "TRACKING"
Range("C2").Select
ActiveCell.FormulaR1C1 = "U*RCPT"
Range("D2").Select
ActiveCell.FormulaR1C1 = "KIT.FAUX"
Range("E2").Select
ActiveCell.FormulaR1C1 = "KIT.FAUX"
Range("G2").Select
ActiveCell.FormulaR1C1 = "EA"
Range("H2").Select
ActiveCell.FormulaR1C1 = "1"
Range("L2").Select
ActiveCell.FormulaR1C1 = "1"
Range("AM18").Select
Rows("2:2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A2").Select
ActiveCell.FormulaR1C1 = "OF1"
Range("B2").Select
ActiveCell.FormulaR1C1 = "TRACKING"
Range("C2").Select
ActiveCell.FormulaR1C1 = "U*BUFF"
Range("D2").Select
ActiveCell.FormulaR1C1 = "KIT.FAUX"
Range("E2").Select
ActiveCell.FormulaR1C1 = "KIT.FAUX"
Range("G2").Select
ActiveCell.FormulaR1C1 = "EA"
Range("H2").Select
ActiveCell.FormulaR1C1 = "1"
Range("L2").Select
ActiveCell.FormulaR1C1 = "1"
Range("AM18").Select
Rows("2:2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A2").Select
ActiveCell.FormulaR1C1 = "OF1"
Range("B2").Select
ActiveCell.FormulaR1C1 = "TRACKING"
Range("C2").Select
ActiveCell.FormulaR1C1 = "U*BUFF*EXT"
Range("D2").Select
ActiveCell.FormulaR1C1 = "KIT.FAUX"
Range("E2").Select
ActiveCell.FormulaR1C1 = "KIT.FAUX"
Range("G2").Select
ActiveCell.FormulaR1C1 = "EA"
Range("H2").Select
ActiveCell.FormulaR1C1 = "1"
Range("L2").Select
ActiveCell.FormulaR1C1 = "1"
Range("AM18").Select
End Sub
Bonjour
Il est fort probable que ce soit un problème de "saturation" de votre machine et pas Excel qui soit en cause.
Ouvrez le Gestionnaire de Tâche pour "voir" l'activité de votre machine pendant l'usage de la macro, vous risquez d'être surpris.
Pourquoi la laisser tourner en permanence ?
Pourquoi ne pas l'ouvrir/fermer régulièrement avec le Planificateur des Tâches ?
A+
Je pense que le cache se sature en effet.
Néanmoins, j'ai besoin que ce fichier tourne H24 (il est utilisé par des équipes qui travaillent en 3x8h).
Est-ce que c'est possible?
Bonjour
Le plantage venant de votre machine mais aussi d'Excel qui tournant en permanence la sature...
Soit tester sur une autre machine avec de meilleures capacités ou faites un batch pour fermer Excel et le rouvrir avec la macro, histoire de libérer un peu la mémoire de la machine, je ne vois que cela.
A+
1 juil. 2021 à 09:11
Néanmoins, j'ai besoin que ce fichier tourne H24 (il est utilisé par des équipes qui travaillent en 3x8h).
Est-ce que c'est possible?
Merci d'avance