rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

Problème sur mise en forme conditionnelle VBA

VincentG, le mardi 27 novembre 2007 à 13:25:50
Bonjour,
Je suis en train de faire une grille excel pour automatiser un calcul des besoins (de type MRP), mes besoins générés ont une mise en forme automatique (besoin = couleur de fond rouge).

en parallèle, j'ai récupéré sur le net une macro qui identifie les cellules d'un tableau ayant une couleur de remplissage.

le hic : ça en marche pas. j'explique, quand je rempli moi même une case en remplissage rouge : ça marche
mais quand je rouge viens en mise en forme automatique : ça marche pas.

il y a peut etre une fonction qui détecte les mises en forme en VBA mais je ne la connais pas.

bref, voici le code de la macro si quelqu'un pouvait m'aidé ou si quelqu'un était confronté à un problème du même genre...

Sub CompteCouleurs()
    Dim rngCell         As Range
    Dim intNbCouleurs   As Integer
    
    For Each rngCell In Range("A1:G30").Cells
        If rngCell.Interior.ColorIndex = 3 Then
            intNbCouleurs = intNbCouleurs + 1
        End If
    Next
    MsgBox intNbCouleurs & " cellules rouges"
End Sub


Merci
Répondre à VincentG  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Raymond PENTIER, le mardi 27 novembre 2007 à 13:32:42
C'est normal :
Quand tu appliques un format, cette caractéristique est attachée à la cellule.
Quand tu demandes une mise en forme conditionnelle, le format est calculé en fonction du contenu.
Un retraité au soleil des Antilles :-)
Raymond
Répondre à Raymond PENTIER

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
VincentG, le mardi 27 novembre 2007 à 13:41:30
Comment pourrais-je donc faire ?
après une mise en forme conditionnelle, ma cellule a bien un nouveau format... la macro pourrait bien détecter celui là

Tchou Tchou
Répondre à VincentG

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
VincentG, le mardi 27 novembre 2007 à 18:10:51
quelqu'un pourrait 'il m'éclairer un peu ?
Répondre à VincentG

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
VincentG, le mardi 27 novembre 2007 à 21:27:18
bazutalors :(
Répondre à VincentG

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
VincentG, le mardi 27 novembre 2007 à 22:38:10
baflutalors :(
Répondre à VincentG

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le mardi 27 novembre 2007 à 23:33:05
Bonsoir,

teste la couleur de ta cellule avec ça:
Sub Couleur()
    MsgBox (ActiveCell.Interior.ColorIndex)
End Sub


ce n'est peut-être pas le rouge 3...

eric
Répondre à eriiic

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
VincentG, le mercredi 28 novembre 2007 à 00:54:04
nop, le rouge est bien le chiffre 3
Répondre à VincentG

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le mercredi 28 novembre 2007 à 10:01:49
Bonjour,

Il n'y a aucune raison pour que la macro mise dans ton post 1 fonctionne différemment que la couleur soit mise par mise en forme automatique ou manuellement.
D'ailleurs ce n'est pas plutôt de mise en forme conditionnelle que tu veux parler ? De toute façon ça ne change rien...
Ta macro compte les cellules à fond rouge (3) de la plage désignée.

Je te l'ai modifiée et mise sous forme de fonction personnalisée.
Function CompteCouleurs(Plage As Range, CouleurFond As Range) As Long
    Dim cel As Range
    Dim NbCouleurs As Long, couleur As Long
    couleur = CouleurFond.Interior.ColorIndex
    For Each cel In Plage
        NbCouleurs = NbCouleurs + (cel.Interior.ColorIndex = couleur)
    Next
    CompteCouleurs = -NbCouleurs
End Function


A coller dans un module.
Quand tu fais 'insertion' 'fonction' 'personnalisées' elle te demande 2 parametres :
- la plage à étudier
- une cellule ayant le fond de la couleur à compter
et elle te retourne le nombre de cellules de la plage ayant cette couleur de fond.
Comme ça plus de pb, tu désignes toi même la couleur directement sur la feuille

eric
Répondre à eriiic

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
VincentG, le mercredi 28 novembre 2007 à 13:40:44
Merci pour ton aide, mais le "hic", bien que j'ai fais ce que tu m'as dis point par point, ça ne marche pas.
le résultat = #VALEUR!


je ne vois pas d'où ça peut venir... ça a marché chez toi ?

Vincent
Répondre à VincentG

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le mercredi 28 novembre 2007 à 14:15:33
Oui, bien sûr que ça marche chez moi.
Ca commence à faire bcp de trucs qui devrait marcher sans difficulté...
Pour la fonction désigne la plage et la cellule avec la souris pour éviter des saisies erronées
Quelle version d'excel as tu ?
Il faudrait 2003 ou plus

eric
Répondre à eriiic

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
VincentG, le mercredi 28 novembre 2007 à 14:37:22
J'essayerai chez moi ce soir
là, je suis au boulot, j'ai une version de 97... :)
Merci encore de m'avoir aidé

Vincent
Répondre à VincentG

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
VincentG, le mercredi 28 novembre 2007 à 22:11:06
Malheureusement, ça ne marche pas

Est ce que quelqu'un d'autre peut essayer de voir si ça marche chez lui ?

merci
Répondre à VincentG

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le mercredi 28 novembre 2007 à 22:36:19
Décris ce que tu fais et ce que te retourne la fonction, "ça ne marche pas" n'est pas explicite...
L'as-tu bien mise dans un module et arrives-tu à l'appeler déjà ?
eric

PS: voici un exemple http://www.cijoint.fr/cij61969428533151.xls
si ça ne marche tjs pas chez toi précise ta version et quel est le pb
Répondre à eriiic

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
VincentG, le mercredi 28 novembre 2007 à 22:41:31
voilà ce que je fais :

je copie ton code

j'ouvre ma feuille excel

alt+F11 pour VBA

insertion / Module

je colle

je ferme.

je clique sur une cellule vierge

insérer fonction/ personnalisée / CompteCouleur

Plage ==> sélection à la souris de la zone à traiter
Couleur ==> chiffre n°3 (couleur rouge)

OK

puis apparait #VALEUR! dans la cellule

voilà comment j'ai procédé
Répondre à VincentG

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le mercredi 28 novembre 2007 à 22:52:31
J'ai complété mon message au dessus avec un exemple.

Quand tu fais 'insertion' 'fonction' 'personnalisées' elle te demande 2 parametres :
- la plage à étudier
- une cellule ayant le fond de la couleur à compter
et elle te retourne le nombre de cellules de la plage ayant cette couleur de fond.
Comme ça plus de pb, tu désignes toi même la couleur directement sur la feuille


Pour la fonction désigne la plage et la cellule avec la souris pour éviter des saisies erronées

En 2nd parametre c'est une cellule de la bonne couleur qu'il faut lui donner, pas un n° de couleur
Répondre à eriiic

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
VincentG, le mercredi 28 novembre 2007 à 22:58:31
Quel boulet je fais :)

je mettais tellement axé sur 3 = rouge
pas 3 = pas rouge ...

lol

mille merci pour ton aide (j'ai senti que tu commençais à râler un peu sur la fin :)

à bientôt et merci encore
Répondre à VincentG

17


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le mercredi 28 novembre 2007 à 23:17:24
ouffff !!!! ;-)
bonne soirée
Répondre à eriiic

18


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
VincentG, le jeudi 29 novembre 2007 à 14:01:45
Sinon,
ça ne marche pas pour une mise en forme conditionnelle
pour les cellules remplie à la main avec le pot de peinture , ya pas de pb, ça marche
mais pour les cellules ayant une mise en forme conditionnelle, elle ne sont pas prise en compte...
Répondre à VincentG

19


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Raymond PENTIER, le jeudi 29 novembre 2007 à 15:16:59
Messieurs, messieurs !

Depuis le post 1 j'ai indiqué que les fonctions qui font apparaître une couleur dans les cellules ne sont pas de même nature !
Vous avez tort (sauf votre respect) de penser que la mise en forme conditionnelle a attribué un format à la cellule ; il suffit pour vous en convaincre de cliquer sur Format/Cellule.

Eric, ton affirmation du post 8 n'est pas juste :
Il n'y a aucune raison pour que la macro mise dans ton post 1 fonctionne différemment que la couleur soit mise par mise en forme automatique ou manuellement.
D'ailleurs ce n'est pas plutôt de mise en forme conditionnelle que tu veux parler ? De toute façon ça ne change rien...


Donc vos formules et macros doivent traiter de manière différente les cellules colorées volontairement (j'allais dire manuellement) et celles qui se colorent en fonction de l'assistant "Mise en forme conditionnelle".
VincentG , tu te rends à l'évidence quand tu rédiges ton tout dernier post ...
Un retraité au soleil des Antilles :-)
Raymond
Répondre à Raymond PENTIER

20


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le jeudi 29 novembre 2007 à 16:33:29
Bonjour tout le monde,

Effectivement la propriété ne retourne pas la couleur d'une mise en forme conditionnelle mais toujours la couleur 'cachée dessous'. J'ai étendu le résultat de mes test faits sur une mise en forme automatique (c'est bien ce qui était demandé au post 1) un peu vite...
Par contre là je n'ai aucune idée de comment la tester...
Vu que cette couleur répond à une formule test 'vrai', il faudrait plutôt reprendre cette formule saisie dans le format conditionnel, l'appliquer sur les valeurs des cellules et compter combien répondent à ce test sur la plage.
Faisable par formule.
eric
Répondre à eriiic

22


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le jeudi 29 novembre 2007 à 19:12:25
Pour compléter ma réponse vu que j'ai eu un peu plus de temps, le compte peut s'effectuer avec sommeprod().
Par exemple si la plage avec format conditionnel est A2:D6 et la formule est: =$E$1
On a le compte de cellules remplissant ce critère avec :
=SOMMEPROD(($A$2:$D$6=$E$1)*1)

eric
Répondre à eriiic
Logiciels pertinents trouvés dans les téléchargements
Télécharger HP USB Disk Storage Format Tool 2.0.6HP USB Disk Storage Format Tool - HP USB Disk Storage Format Tool est un petit utilitaire permettant de formater une clé USB ou un lecteur MP4 . Il permet...Catégorie: Formatage/Partitionnement
Licence: Freeware/gratuit
Télécharger Switch Sound Format Converter 1.05Switch Sound Format Converter - Switchest un convertisseur de formats audio pour Windows ou Mac, capable de convertir des fichiers audio à partir de...Catégorie: Conversion audio
Licence: Freeware/gratuit
Télécharger Coloriage 1.1.4Coloriage - Coloriage est un logiciel de coloriage pour jeunes enfants, à la manière de Tux Paint . Il répertorie quelque 220 dessins à...Catégorie: Dessin
Licence: Freeware/gratuit
Télécharger VLC 0.8.6iVLC - VLC Media Player est un lecteur multimédia sous capable de lire de nombreux formats audio et vidéo (MPEG-1, MPEG-2, MPEG-4,...Catégorie: Lecteurs vidéo
Licence: Open Source
Plus de logiciels gratuits sur « Problème sur mise en forme conditionnelle VBA »