Ne pas prendre en compte certaine cellules durant une comparaison

Bonjour,

Voila j'ai un code qui effectue des comparaisons de dates.

Or j'aimerai que si une cellule à un changement de couleur (rouge, vert etc...) qui sera introduit manuellement, que la macro qui effectue la comparaison ne prenne plus en compte cette cellules et l'exclut de boucle.

Je vous remercie pour votre aide par avance.

N'hésitez pas si vous avez des questions.

Option Explicit

Public ShData As Worksheet
Public MatriceErreurs() As Variant

Sub ListerLesErreurs()

'Active la feuuille data

Sheets("data").Activate

Dim Ligne As Byte, Colonne As Byte
Dim NbErreurs As Integer, IndexListe As Integer
Dim STDreference As Date, STDxxxxM44 As String, Erreurs As String

    Set ShData = Sheets("Data")
    With ShData
         NbErreurs = 0
         IndexListe = 0
'Mise en place de la boucle des colonnes

    For Colonne = 105 To 213

'Attribution d'une valeur à la variable "STDreference"

    STDreference = Cells(2, Colonne).Value

'Mise en place de la boucle des lignes

    For Ligne = 3 To 48

'Attribution d'une valeur à la variable "STDxxxxM44"

        STDxxxxM44 = Cells(Ligne, 1).Value

'Comparaison des dates entre "STDreference" et toute les dates de la même colonne
'Si "STDreference" > à une des lignes de la même colonne alors on utilise la variable "Erreur"
Debug.Print

        If STDreference >= Cells(Ligne, Colonne).Value Then
            Cells(Ligne, Colonne).Font.ColorIndex = 45
                   With Usf_Erreurs
                     With .ListBoxErreurs
                           .AddItem
                           .List(IndexListe, 0) = STDxxxxM44
                           .List(IndexListe, 1) = Ligne
                           .List(IndexListe, 2) = "Révisé après le " & ShData.Cells(1, Colonne).Value
                           IndexListe = IndexListe + 1
                     End With
                     NbErreurs = NbErreurs + 1
                   End With
                End If
             Next Ligne
          Next Colonne

          If NbErreurs > 0 Then
             With Usf_Erreurs
                  .ListBoxTitre.AddItem
                  .ListBoxTitre.Column = Array("STD", "Ligne", "Erreur")
                  MatriceErreurs = .ListBoxErreurs.List
                  QuickOrdre MatriceErreurs(), LBound(MatriceErreurs), UBound(MatriceErreurs), 1, True
                  .ListBoxErreurs.List = MatriceErreurs
                 .Show

             End With
           End If

   End With

   Set ShData = Nothing

End Sub

Sub QuickOrdre(MatriceErreurs(), gauc, droi, col, ordre) ' Quick sort de Jacques BOISGONTIER

Dim Ref As Variant, G As Variant, D As Variant, Temp As Variant
Dim I As Long

 Ref = MatriceErreurs((gauc + droi) \ 2, col)
 G = gauc: D = droi
 Do
  If ordre Then
    Do While MatriceErreurs(G, col) < Ref: G = G + 1: Loop
    Do While Ref < MatriceErreurs(D, col): D = D - 1: Loop
  Else
    Do While MatriceErreurs(G, col) > Ref: G = G + 1: Loop
    Do While Ref > MatriceErreurs(D, col): D = D - 1: Loop
  End If
   If G <= D Then
     For I = LBound(MatriceErreurs, 2) To UBound(MatriceErreurs, 2)
       Temp = MatriceErreurs(G, I): MatriceErreurs(G, I) = MatriceErreurs(D, I): MatriceErreurs(D, I) = Temp
     Next I
     G = G + 1: D = D - 1
   End If
  Loop While G <= D
  If G < droi Then QuickOrdre MatriceErreurs, G, droi, col, ordre
  If gauc < D Then QuickOrdre MatriceErreurs, gauc, D, col, ordre
End Sub

Bonjour Scaryz, bonjour le forum,

je ne comprend pas le With ShData s'il n'y a pas le point qui va avec ou l'utilisation systématique de ShData...

Ça ne répond absolument pas à ta question mais voici ton premier code plus cohérent :

Option Explicit
Public ShData As Worksheet
Public MatriceErreurs() As Variant

Sub ListerLesErreurs()
Dim Ligne As Byte, Colonne As Byte
Dim NbErreurs As Integer, IndexListe As Integer
Dim STDreference As Date, STDxxxxM44 As String, Erreurs As String

Set ShData = Sheets("Data")
ShData.Activate 'Active la feuille data
NbErreurs = 0
IndexListe = 0
'Mise en place de la boucle des colonnes
For Colonne = 105 To 213
    'Attribution d'une valeur à la variable "STDreference"
    STDreference = ShData.Cells(2, Colonne).Value
    'Mise en place de la boucle des lignes
    For Ligne = 3 To 48
        'Attribution d'une valeur à la variable "STDxxxxM44"
        STDxxxxM44 = ShData.Cells(Ligne, 1).Value
        'Comparaison des dates entre "STDreference" et toute les dates de la même colonne
        'Si "STDreference" > à une des lignes de la même colonne alors on utilise la variable "Erreur"
        If STDreference >= ShData.Cells(Ligne, Colonne).Value Then
            ShData.Cells(Ligne, Colonne).Font.ColorIndex = 45
            With Usf_Erreurs
                With .ListBoxErreurs
                    .AddItem
                    .List(IndexListe, 0) = STDxxxxM44
                    .List(IndexListe, 1) = Ligne
                    .List(IndexListe, 2) = "Révisé après le " & ShData.Cells(1, Colonne).Value
                    IndexListe = IndexListe + 1
                End With
                NbErreurs = NbErreurs + 1
            End With
        End If
    Next Ligne
Next Colonne
If NbErreurs > 0 Then
    With Usf_Erreurs
        .ListBoxTitre.AddItem
        .ListBoxTitre.Column = Array("STD", "Ligne", "Erreur")
        MatriceErreurs = .ListBoxErreurs.List
        QuickOrdre MatriceErreurs(), LBound(MatriceErreurs), UBound(MatriceErreurs), 1, True
        .ListBoxErreurs.List = MatriceErreurs
        .Show
    End With
End If
Set ShData = Nothing
End Sub
Rechercher des sujets similaires à "pas prendre compte certaine durant comparaison"