Bonjour à tous,
Je teste un programme ou la condition première de déclenchement du programme est si la valeur d'une cellule est vide (sans texte) dans la colonne 75.
Or a ma grande surprise le code va s’exécuter sur des cellules qui contiennent du texte.
Alors je sais pas d'ou cela peut venir?
J'ai testé avec = "" mais aussi vbnullstring et la fonction is empty. Même résultat!
Vous pensez à quoi comme origine du problème??
Veuillez trouver le code ci-dessous et le fichier de test.
Sub clear_etoile_empty()
Dim rebalayer As Boolean, numLigne As Long, nbLignes As Long, i As Long, nbDoublons As Long
Dim Default As VbMsgBoxStyle
Dim Response As VbMsgBoxResult
Dim WsDepart As Worksheet
Dim WsDestination As Worksheet
'procedure doublon
nbDoublons = 0
rebalayer = True
Application.ScreenUpdating = False
Application.StatusBar = True
numLigne = 1
recommencer:
While numLigne < Cells(Rows.Count, "C").End(xlUp).Row 'on boucle tant qu'on a qqlchose dans la cellule colonne A
nbLignes = Cells(Rows.Count, "C").End(xlUp).Row 'on récupère le nombre de lignes
'Debug.Print nbLignes & " lignes"
If Cells(numLigne, 3) = "" Then
'On fait rien
'Debug.Print "Ligne " & numLigne & " vide"
Else
For i = nbLignes To numLigne Step -1 'on remonte dans les lignes jusqu'à attendre la ligne "testée"
If numLigne <> i Then 'on ne teste pas une ligne avec elle-même
If Cells(i, 75).Value = vbNullString Then
If Cells(numLigne, 45) = Cells(i, 45) Then
If Cells(numLigne, 76) = Cells(i, 76) And Cells(numLigne, 77) = Cells(i, 77) And Cells(numLigne, 79) = Cells(i, 79) Then
Rows(numLigne).Interior.Color = RGB(255, 204, 204)
'.EntireRow.Delete
nbDoublons = nbDoublons + 1
End If
End If
End If
End If
Next i
End If
numLigne = numLigne + 1
Application.StatusBar = "Traitement ligne " & numLigne
Wend
Application.ScreenUpdating = False
Application.StatusBar = False
Debug.Print nbDoublons
MsgBox ("Le nombre de ligne surlignées " & nbDoublons)
'fin procedure supp doublon
End Sub
Merci de vôtre aide. Bonne journée