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.