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

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Bonjour,

    2 questions :
    1- la couleur violette est une couleur de cellule ou due à une MFC?
    2- pourquoi sélectionner?
    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,
      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
        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.
      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
        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.
      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.
        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..
      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
        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.
          1. Contributeur
            Tu as trouvé l'erreur:

            Ligne2 = C.Row