Parcourir une colonne jusqu'à une cellule en couleur

GrimoireWeiss

XLDnaute Nouveau
Tout d'abord bonjour à tous,

En tant que très grand débutant en vba et pas du tout informaticien, je viens chercher un peu d'aide dans ce forum.

Je souhaite trouver une macro qui parcourrait les cellules d'une colonne active et s'arrêterait sur les cellules en couleur.
Pour être plus précis, je souhaiterais qu'elle ait les comportements suivants.

Doit sauter :
- Les cellules remplies ou vides et sans couleur
- Les cellules remplies ou vides en noir

Doit s'arrêter sur :
- Les cellules remplies ou vides et en couleur (sauf le noir)
- La dernière cellule utilisée dans la colonne (son emplacement peut varier), en indiquant par un message qu'elle a été atteinte.

L'idéal, si possible, serait qu'elle puisse effectuer les recherches vers le bas et le haut (au choix de l'utilisateur).

La seule chose que j'ai pu "bricoler" pour l'instant est le code suivant, avec ses (grosses) lacunes ;-) :

Code:
Sub SearchColorDown()
Do
Selection.Offset(1, 0).Select
Loop Until ActiveCell.Interior.ColorIndex <> xlColorIndexNone
End Sub

Le fichier joint sera peut-être plus clair.

Merci d'avance à ceux qui voudront bien m'apporter leurs lumières !
 

Pièces jointes

  • couleurs.xls
    29.5 KB · Affichages: 96
  • couleurs.xls
    29.5 KB · Affichages: 107
  • couleurs.xls
    29.5 KB · Affichages: 101

jmps

Nous a quitté
Repose en paix
Re : Parcourir une colonne jusqu'à une cellule en couleur

Bonjour GrimoireWeiss,

Une solution en pièce jointe.
Il manque quelques contrôles pour savoir si on est sur la bonne colonne.
 

Pièces jointes

  • Grimoire.xls
    38 KB · Affichages: 149

GrimoireWeiss

XLDnaute Nouveau
Re : Parcourir une colonne jusqu'à une cellule en couleur

Le code ne marchait que pour la colonne A. J'ai donc modifié la variable Der pour qu'il prenne en compte la colonne de la cellule active :

Code:
Sub SearchColorDown()
Dim Der As Long
    Der = Cells(65536, ActiveCell.Column).End(xlUp).Row
    If ActiveCell.Row >= Der Then
        MsgBox "Dernière ligne atteinte."
        Exit Sub
    End If
    Do
        Selection.Offset(1, 0).Select
    Loop Until (ActiveCell.Interior.ColorIndex <> xlColorIndexNone And ActiveCell.Interior.ColorIndex <> 1) Or ActiveCell.Row = Der
End Sub
Sub SearchColorUp()
Dim Der As Long
    Der = 2
    If ActiveCell.Row <= Der Then
        MsgBox "Première ligne atteinte."
        Exit Sub
    End If
    Do
        Selection.Offset(-1, 0).Select
    Loop Until (ActiveCell.Interior.ColorIndex <> xlColorIndexNone And ActiveCell.Interior.ColorIndex <> 1) Or ActiveCell.Row = Der
End Sub
 
Dernière édition:

jmps

Nous a quitté
Repose en paix
Re : Parcourir une colonne jusqu'à une cellule en couleur

Je n'ai qu'une chose à dire GrimoireWeiss :
Bravo !

Comme disait Confucius :
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson."

C'est comme ça que tu progresseras. Pas en quémandant des fichiers tout fais.

A+
 

GrimoireWeiss

XLDnaute Nouveau
Re : Parcourir une colonne jusqu'à une cellule en couleur

Merci jmps,

J'ai l'habitude de chercher par moi-même avant de demander de l'aide. :)

Dans ce cas précis, j'avais atteins mes limites et il me fallait un coup de main.

En regardant ton code, je vois que j'avais en tête toutes les pièces du puzzle (trouver la dernière ligne, exclure une couleur, etc). Je ne savais tout simplement pas comment les "écrire" et les combiner, vu que je connais pas la "grammaire" du vba.

Tu as raison, c'est comme ça qu'on apprend ! :cool:
 

GrimoireWeiss

XLDnaute Nouveau
Re: Re : Parcourir une colonne jusqu'à une cellule en couleur

Rebonjour,

Encore merci à toi jmps pour ton aide.

Je souhaiterais apporter une modification au code pour la recherche des couleurs vers le bas.

Le problème avec le code actuel est qu'il s'arrête à la dernière cellule remplie. Or, il peut arriver que ma véritable "dernière" cellule soit en couleur et vide.

Donc, est-il possible d'intégrer ce paramètre à la variable Der ?

Je joins un fichier avec le code actuel.

Je vais chercher de mon côté ;-)
 

Pièces jointes

  • Grimoire_Amélioration.xls
    37.5 KB · Affichages: 60

Discussions similaires

Statistiques des forums

Discussions
312 677
Messages
2 090 824
Membres
104 677
dernier inscrit
soufiane12