Dresser la liste des cellules d'une plage dont le texte est bleu

Magic_Doctor

XLDnaute Barbatruc
Bonjour à tous.
J'ai une plage de cellules, par exemple : [B6:H43]
Dans cette plage il y a de nombreuses cellules dispersées (non forcément contiguës) dont le texte est bleu (code : 12611584)

Comment s'y prendre pour dresser la liste de toutes les cellules dont le texte est bleu ?

Merci pour toute aide
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Dresser la liste des cellules d'une plage dont le texte est bleu

Bonsoir Docteur, bonsoir le forum,

Essaie comme ça :

Code:
Sub Macro1()
Dim PL As Range 'déclare la variable PL (PLage)
Dim CB As Range 'déclare la variable CB (Cellules Bleues)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim MSG As String 'déclare la variable MSG (MeSsaGe)

Set PL = Range("B6:H43") 'définit la plage PL
For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL
    If CEL.Font.Color = 12611584 Then 'condition : si la couleur de la police de la cellule CEL est bleue
        'définit le message MSG (si MSG est vide, l'adresse de la cellule CEL, sinon rajoute un saut à la ligne)
        MSG = IIf(MSG = "", CEL.Address(0, 0), MSG & Chr(13) & CEL.Address(0, 0))
    End If 'fin de la condition
Next CEL 'prochaine cellule de la boucle
MsgBox MSG 'renvoie l'addresse de la plage CB des cellues bleues dans un message
End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Dresser la liste des cellules d'une plage dont le texte est bleu

Bonsoir à tous,

Un essai :
VB:
Sub ListeEnBleu()
Dim xcell As Range, tablo(), n&
  For Each xcell In Range("B6:H43")
    If xcell.Font.Color = 12611584 Then
      n = n + 1
      ReDim Preserve tablo(1 To 1, 1 To n)
      tablo(1, n) = xcell.Address(0, 0)
    End If
  Next xcell
  Range("j:j").Clear
  Range("j1") = "En bleu"
  If n > 0 Then Range("j2").Resize(n) = Application.Transpose(tablo)
End Sub
 

Pièces jointes

  • Magic_Doctor- Liste cellules en bleu- v1.xlsm
    18 KB · Affichages: 23
Dernière édition:

DoubleZero

XLDnaute Barbatruc
Re : Dresser la liste des cellules d'une plage dont le texte est bleu

Bonjour, Magic_Doctor, Robert :), mapomme :), le Forum,

Une autre suggestion...

Code:
Option Explicit
Sub Bleu_lister()
    Dim c As Range
    Application.ScreenUpdating = False
    Columns(11).Clear
    For Each c In Range("b6:h43")
        If c.Font.Color = 12611584 And c <> "" Then Range("k" & Rows.Count).End(xlUp)(2) = c.Address(0, 0) & " - " & c.Value
        Columns(11).Sort Range("k1"), xlAscending, Header:=xlNo
    Next
    Application.ScreenUpdating = True
End Sub

A bientôt :)
 

Magic_Doctor

XLDnaute Barbatruc
Re : Dresser la liste des cellules d'une plage dont le texte est bleu

Bonsoir Robert, mapomme, DoubleZero,

Merci pour vos solutions.

Celle de mapomme résoud pratiquement le problème. La liste des cellules dont la police est bleue est bien dressée. Seulement, je voudrais la récupérer dans une macro et non sur la feuille. Dans la macro, à chaque élément de cette liste sera rattaché une macro événementielle. Je m'explique :
Je veux en fait qu'après avoir entré une valeur dans chacune de ces cellules et l'avoir validée en cliquant sur la touche "Enter", au lieu qu'automatiquement (par défaut) la cellule juste au-dessous soit sélectionnée, la sélection se maintienne sur la cellule où l'on vient de rentrer la valeur (nettement plus pratique si l'on veut faire des essais en modifiant la valeur d'une même cellule).
Appelons l'ensemble de ces cellules "plage"
VB:
Private Sub Worksheet_Change(ByVal target As Range)
	If Not Intersect(target, [plage]) Is Nothing Then target.Select
End Sub

Comment s'y prendre ?
 

job75

XLDnaute Barbatruc
Re : Dresser la liste des cellules d'une plage dont le texte est bleu

Bonsoir Magic_Doctor, Robert, mapomme, DoubleZero,

Ta dernière demande Magic_Doctor ne "colle" pas avec la 1ère car alors pourquoi faire une liste ?

Dans le code de la feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [B6:H43]) Is Nothing And Target.Count = 1 _
  Then If Target.Font.Color = 12611584 Then Target.Select
End Sub
A+
 

Magic_Doctor

XLDnaute Barbatruc
Re : Dresser la liste des cellules d'une plage dont le texte est bleu

Bonsoir job,

Et bien voilà, tu as réglé le problème en un tournemain !
Bon, c'est vrai, j'ai tendance à un peu compliquer...
En tout cas merci pour ton aide.

Et la solution de mapomme, je la conserve, car elle pourra toujours servir.

Buenas noches a todos
 

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 424
Membres
103 206
dernier inscrit
diambote