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

Rechercher des sujets similaires à "macro crash repond execution"