Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

suite même couleur

  • Initiateur de la discussion Initiateur de la discussion perrmi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

perrmi

XLDnaute Occasionnel
bonjour les As d'excel
j'ai un tableau de 70 chiffres
certaines cellules sont colorées (importe la couleur)
j'aimerais extraire de ce tableau les chiffres dans les cellules colorées qui se suivent .
voir fichier joint
merci a tous et toutes
perrmi
 

Pièces jointes

Bonsoir perrmi, JHA,

Plutôt qu'extraire il vaut mieux colorer les cellules par une MFC (noire) utilisant cette fonction VBA :
Code:
Function Coloré(c As Range) As Boolean
Coloré = c.Interior.ColorIndex <> xlNone And c.Interior.ColorIndex <> 2
End Function
Edit : ceci est plus rapide :
Code:
Function Coloré(c As Range) As Boolean
If c.Interior.Color <> 16777215 Then Coloré = True
End Function
Le code doit être placé impérativement dans un module standard.

Fichier .xlsm joint.

A+
 

Pièces jointes

Dernière édition:
Re,

Un phénomène que je n'avais pas remarqué (chez moi sur Excel 2013).

Sur le fichier du post précédent entrez en N11 la formule =Coloré(F8)

Elle renvoie VRAI c'est normal.

Maintenant donnez à F8 la couleur "blanche" ou "Aucun remplissage".

La cellule N11 ne se modifie pas alors que la MFC change la couleur en F8.

A+
 
Bonjour,

Pour la cellule ça parait normal. Un changement de couleur n'entraine pas de Calculate, de plus ta fonction n'est pas volatile.
Il faudrait ajouter à ta fonction Application.Volatile, et faire F9 (ou valider une cellule) pour qu'elle se mette à jour.
Ca, je suppose que tu le savais.

Quant à la MFC on pourrait la qualifier de super-volatile ;-) elle se met en place rien qu'en balayant les couleurs avec la souris, sans même valider. Pour avoir le rendu en temps réel
eric
 
Dernière édition:
Bonjour eriiiic, le forum,
Ca, je suppose que tu le savais.
Bien sûr et au départ j'avais mis Application.Volatile mais en testant j'ai vu que c'était inutile.
Quant à la MFC on pourrait la qualifier de super-volatile ;-) elle se met en place rien qu'en balayant les couleurs avec la souris
Là c'est la propriété de la palette de couleur qui modifie la couleur de la cellule au survol de la souris.

Bon week-end.
 
Re,

La fonction du post #3 ne répond pas vraiment au problème posé.

Car elle traite les cellules adjacentes d'une même ligne alors que perrmi parle de chiffres qui se suivent.

Alors voyez ce fichier (2) avec cette nouvelle fonction :
Code:
Function SuiteColorée(c As Range, P As Range) As Boolean
If c.Interior.Color = 16777215 Then Exit Function
Dim n&: n = c
For Each c In P
    If c.Interior.Color <> 16777215 And (c = n - 1 Or c = n + 1) _
        Then SuiteColorée = True: Exit Function
Next
End Function
Pour tester j'ai créé le tableau M5:V11 qu'on remplit de nombres aléatoires avec cette macro :
Code:
Sub Alea()
'se lance par les touches Ctrl+R
Dim t, ncol%, i&, j%
With Feuil1.[M5:V11] 'plage à adapter
    If .Count = 1 Then Exit Sub
    Randomize
    t = .Value: ncol = UBound(t, 2)
    For i = 1 To UBound(t)
        For j = 1 To ncol
            t(i, j) = Int(1 + 99 * Rnd) 'nombres entiers entre 1 et 99
    Next j, i
    .Value = t
End With
End Sub
Nota : si l'on entre la formule =ALEA.ENTRE.BORNES(1;99) dans la plage la MFC ne va pas *.

* Edit : la MFC va bien si l'on rend la fonction volatile, fichier (2 bis).

A+
 

Pièces jointes

Dernière édition:
Re,

Pour mieux comprendre ce qui se passe j'ai exécuté cette macro :
Code:
Sub TestMFC()
[F8].Interior.Color = 16777215
End Sub
- sur les fichiers (1) et (2) - fonction non volatile - la MFC n'efface pas la couleur noire en F8

- sur le fichier (2 bis) - fonction volatile - la MFC efface bien la couleur noire.

Quand la fonction n'est pas volatile j'en conclus que c'est la palette de couleur qui force le recalcul de la MFC.

A+
 
Je pense que oui, nécessaire pour la visualisation en direct de l'effet de la MFC.
De la même façon qu'une fonction non volatile sera ré-évaluée même en l'absence de modification de ses antécédents si tu la complètes dans une formule par une fonction volatile.
ex: =mafonction(A1)+alea()*0
rend mafonction() volatile (dans cette formule). Nécessaire car excel n'a que le résultat global de stocké, il faut ré-évaluer tous les éléments.
eric
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
142
Réponses
12
Affichages
396
Réponses
11
Affichages
323
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…