Selectionner des lignes sous condition

Résolu
Bonjour,

Dans un très long tableau, je cherche à sélectionner les lignes entre 2 couleurs. Je m'explique, je sélectionne une cellule du tableau et je veux sélectionner les lignes jusqu'à la prochaine ligne en violet.

J'ai essayé un code mais sans succès :

Sub TEST()

DL = Sheets("NATIONAL").Cells(Application.Rows.Count, 23).End(xlUp).Row

Ligne = ActiveCell

For i = Ligne To DL

Do While Range("A" & i).Interior.Color <> RGB(128, 0, 128)
    Rows(i).Select
Loop

Next i

End Sub


Merci d'avance pour votre aide.

Cordialement.

7 réponses

  1. Modérateur
    Bonjour,

    2 questions :
    1- la couleur violette est une couleur de cellule ou due à une MFC?
    2- pourquoi sélectionner?
    0
    1. Bonjour,

      Essaye ca plutot :
      Sub TEST()

      DL = Sheets("NATIONAL").Cells(Application.Rows.Count, 23).End(xlUp).Row

      ligne = ActiveCell.Row

      For i = ligne To DL

      If Range("B" & i).Interior.Color = RGB(128, 0, 128) Then
      Rows(ligne & ":" & i).Select
      End If
      Next i

      End Sub


      Cordialement,
      0
      1. Contributeur
        Bonjour,

        J'avais fait cela il y a quelque temps, il faudra mettre un point d'arrêt et adapter:

        https://forums.commentcamarche.net/forum/affich-31994139-comment-savoir-si-une-cellule-est-colorer-ou-non-sur-vba#2
        0
        1. Je n'ai pas spécialement besoin de ça, la cellule étant colorée en violet sans MFC, pas besoin de condition (si couleur....). Je voudrais juste avoir accès à la ligne après ma cellule sélectionnée jusqu'à la prochaine ligne violette et je rajoute à ma demande (pardon, pas pris en compte au départ) ou jusqu'à la prochaine ligne vide.
          0
      2. Bonjour,

        pour la ligne cellule active:

        Ligne = ActiveCell.Row


        ensuite si la couleur est d'une MFC, prendre le meme test pour le code VBA
        0
        1. Exact, il s'agissait d'une erreur de ma part après de nombreux tests, merci. Je l'ai corrigée mais le code ne marche toujours pas.
          0
      3. Bonjour,

        Non, ce n'est pas une MFC, simplement une couleur de cellule.

        On n'est pas obligé de sélectionner, je vais simplement copier/coller ces données. Je cherche simplement à y avoir accès. Je vais regarder ton lien cs_Le Pivert, merci.
        0
        1. J'ai essayé ce code mais il ne marche pas :

           Dim Col As Range, C As Range
           
           Ligne = ActiveCell.Row
           
           For Each C In Range(Cells(Ligne, 1), Cells(5000, 1))
           
            If C.Interior.Color = RGB(128, 0, 128) Then
            C.Row = Ligne2
            Range(Cells(Ligne, 1), Cells(Ligne2, 23)).Select
            Exit For
            End If
            Next
          
          End Sub


          Pourtant j'avais bon espoir..
          0
      4. Contributeur
        Dans mon code tu as tout pour faire ce que tu veux, numéro de ligne et colonne, il faut bien les placer!
        Tu as les commentaires
        0
        1. Trouvé. Le code modifié :

          Dim C As Range
           
           Ligne = ActiveCell.Row
           
           For Each C In Range(Cells(Ligne + 1, 1), Cells(5000, 1))
           
            If C.Interior.Color = RGB(128, 0, 128) Then
            Ligne2 = C.Row
            Range(Cells(Ligne + 1, 1), Cells(Ligne2 - 1, 23)).Select
            Exit For
            End If
            Next
          
          End Sub


          Il me faut encore prévoir que si il n'y a pas de ligne violette, alors jusqu'à la dernière ligne mais ca devrait le faire.

          Merci à tous.
          0
          1. Contributeur
            Tu as trouvé l'erreur:

            Ligne2 = C.Row
            0