Selectionner des lignes sous condition

Résolu
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   -  
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   -
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

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

2 questions :
1- la couleur violette est une couleur de cellule ou due à une MFC?
2- pourquoi sélectionner?
0
eljojo_e Messages postés 1155 Date d'inscription   Statut Membre Dernière intervention   154
 
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
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
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
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
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
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
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
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Tu as trouvé l'erreur:

Ligne2 = C.Row
0