Macro Crash (Excel ne répond plus pendant l’exécution)
Bonjour,
J'ai réalisé la macro suivante :
Sub Find()
Dim i, ii, x As Variant
Dim C, CaC As Integer
Dim d As String
Dim cc, dd As Date
Dim Mark As Boolean
Application.ScreenUpdating = False
With ActiveSheet
cc = "2020-04-01"
C = WorksheetFunction.WeekNum(cc, vbSunday) - 1
For i = 2 To Range("B1").End(xlDown).Row
Mark = False
For ii = 1 To ThisWorkbook.Worksheets("DH").Range("A5").End(xlDown).Row
If ActiveSheet.Cells(i, 2).Value = ThisWorkbook.Worksheets("DH").Cells(ii, 1).Value Then
d = ActiveSheet.Cells(i, 1).Value
If IsNumeric(d) = True Then
cc = Left(d, 4) & "-" & Mid(d, 5, 2) & "-" & Mid(d, 7, 2)
If Year(cc) = 2020 Then
CaC = WorksheetFunction.WeekNum(cc, vbSunday) - C
Else
CaC = WorksheetFunction.WeekNum(cc, vbSunday) + (52 - C)
End If
ThisWorkbook.Worksheets("DH").Cells(ii, CaC + 2).Value = ThisWorkbook.Worksheets("DH").Cells(ii, CaC + 2).Value + 1
End If
Mark = True
Exit For
End If
Next ii
If Mark = False Then
If Year(cc) = 2020 Then
CaC = WorksheetFunction.WeekNum(cc, vbSunday) - C
Else
CaC = WorksheetFunction.WeekNum(cc, vbSunday) + (52 - C)
End If
ThisWorkbook.Worksheets("DH").Cells(24, CaC + 2).Value = ThisWorkbook.Worksheets("DH").Cells(24, CaC + 2).Value + 1
End If
Next i
Application.ScreenUpdating = True
End With
End Sub
Ce macro a le but suivant :
Sur la page Excel active, prendre la première case de la colonne B. Vérifier si le numéro inscrit dans cette case est aussi inscrit quelque part dans la colonne A du deuxieme Workbook (50lignes).
Extraire la date de création et réaliser un tableau.
La date est transformé en semaine pour l'année (1 à 53) commençant le 01/04/2020.
Chaque case chiffre le nombre d'itération pour chaque personne qu'il y a lieu chaque semaine.
Et passer à la deuxième cases de la colonne B de la feuille active.
Mon problème est le suivant :
Étant donné la taille du tableau (200000) Excel devient grisé avec la petite roulette pendant plusieurs secondes (comme lorsqu'un programme ne répond plus) lorsque la macro s’exécute.
Est il possible de faire en sorte que cela n'arrive pas ?
Merci d'avance
Bonjour
Étant donné la taille du tableau (200000) Excel devient grisé avec la petite roulette pendant plusieurs secondes (comme lorsqu'un programme ne répond plus) lorsque la macro s’exécute.
Est il possible de faire en sorte que cela n'arrive pas ?
Votre souci vient des boucles que vous avez mis en place. Avec 200000 lignes à traiter il faut procéder autrement
Mettez votre fichier sans données confidentielles mais pas besoin d'autant de lignes. On pourra voir ce qui réalisable
cordialement