Selectionner des lignes sous condition

Résolu/Fermé
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 - 28 oct. 2015 à 16:22
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 28 oct. 2015 à 18:10
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
28 oct. 2015 à 16:33
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 lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 153
28 oct. 2015 à 16:34
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 jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
28 oct. 2015 à 16:34
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 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
28 oct. 2015 à 17:34
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 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
28 oct. 2015 à 16:35
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 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
Modifié par Kuartz le 28/10/2015 à 17:58
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 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
28 oct. 2015 à 17:18
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 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
Modifié par Kuartz le 28/10/2015 à 17:55
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 jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
28 oct. 2015 à 17:58
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 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
28 oct. 2015 à 18:05
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 jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
28 oct. 2015 à 18:10
Tu as trouvé l'erreur:

Ligne2 = C.Row
0