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. 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
  2. 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. 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
    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. 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
    4. 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. Modérateur
        Bonjour,

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