Macro qui fonctionne en pas pas mais pas en execution

Bonjour,

Je suis en train de tester une macro un peu importante, quand je la teste en mode pas à pas avec F8 pour les spécialistes , elle exécute ce que je souhaite faire.

Or quand je la lance avec F5, malheureusement mon écran se bloque et c'est l'échec.

Est-ce que vous avez des pistes qui peuvent expliquer ce soucis?

Le code ci-dessous, qui a été en partie développé par le compétent membre d3d9x. Malheureusement je n'ai pas le même talent pour faire parler VBA

Sub clear_étoile()
Dim numLigne As Long, nbLignes As Long, i As Long, nbDoublons As Long

nbDoublons = 0

Application.ScreenUpdating = False
Application.StatusBar = True

numLigne = 14

While numLigne < Cells(Rows.Count, "C").End(xlUp).Row  'on boucle tant qu'on a qqlchose dans la cellule colonne C

    nbLignes = Cells(Rows.Count, "C").End(xlUp).Row 'on récupère le nombre de lignes
   'Debug.Print nbLignes & " lignes"

    'On fait rien
       'Debug.Print "Ligne " & numLigne & " vide"

        For i = nbLignes To numLigne Step -1 'on remonte dans les lignes jusqu'à attendre la ligne "testée"
            If Cells(i, 3) = "" Or Cells(i, 76) = "" Then
                Rows(i).EntireRow.Delete

            ElseIf numLigne <> i Then 'on ne teste pas une ligne avec elle-même

           'premier module

                If Cells(i, 83) = "Normal" And Left(Cells(i, 25), 2) = "DZ" And Cells(i, 76) = Cells(i + 1, 76) And _
                    Cells(i + 1, 25) = "FRMRS" Then
                    Rows(i).EntireRow.Delete
                    nbLignes = nbLignes - 1
                    nbDoublons = nbDoublons + 1
                End If

           'deuxième module

                 If Cells(i, 76) = Cells(i + 1, 76) Then
                    If (Cells(i, 24) = "N" And Cells(i + 1, 24) = "Y") Or (Cells(i, 24) = "Y" And Cells(i + 1, 24) = "N") And Cells(i, 83) = "Normal" And Left(Cells(i, 25), 2) = "DZ" Then
                       Rows(i).EntireRow.Delete
                       nbLignes = nbLignes - 1
                       nbDoublons = nbDoublons + 1
                    End If
                 End If
            End If
        Next i

    Application.StatusBar = "Traitement ligne " & i

Wend
Application.ScreenUpdating = False
Application.StatusBar = False
MsgBox "Nbre doublons supprimés : " & nbDoublons
Debug.Print nbDoublons

End Sub

Merci par avance pour vôtre aide.

PJ le fichier en mode binaire.

126forum-test-170316.xlsb (271.32 Ko)

J'ai simplifié mon code et réduit le nombre de ligne pour tester plus simplement.

Mais avant que le classeur ne se freeze et que je le ferme, j'ai cette MSGBOXqui apparaît Erreur Automation L'objet invoqué s'est déconnecté de ses clients.

Pourtant le classeur n'est pas rélié, juste une suppression de doublon a effectuer.

Merci d'avance.

Bonjour,

While numLigne < Cells(Rows.Count, "C").End(xlUp).Row

C'est quoi ta condition de sortie de boucle si aucune ligne n'est supprimée et qu'il en reste ?

Je ne vois pas.

eric

Merci ériiic,

En effet bien vu, le problème venait de ma condition de sortie.

Qui me fait rentrer dans une boucle infinie, j'ai corrigé désormais.

Probléme résolu.

Supprimé, erreur de topic

Rechercher des sujets similaires à "macro qui fonctionne pas execution"