Mise en forme conditionnelle silhouette selon base dedonnées

Bonjour,

J'ai fais pas mal de recherches pour trouver un cas similaire au miens mais c'est tellement particulier à définir que rien que le fait de lancer une recherche avec les bons mots clés c'est déjà pas gagné. Il est probable que quelqu'un ai eu le même problème que moi sur le forum et que je sois passé a coté.

Je m'explique.

Je travaille sur un fichier de boucles de détection incendie.

Mon installation comprend 150 boucles numérotés en trois caractères du type :

101

102

160

601

602

622 etc.

Chaque boucle peut avoir plusieurs statuts chacun représentés par une couleur :

Posée <80% en rouge

posée >=80% en rouge hachuré orange

testé en orange

perché en jaune

ces statuts sont croissants c'est à dire qu'au début la boucle n'est pas posé elle reste grise, ensuite le premier détecteur est posé elle passe dans le statut posée <80%, dès que 80% des détecteurs sont posé elle passe dans le statut posée >=80%, ensuite le statut testé et enfin le statut perché avec a chaque fois une évolution des couleurs

ces données sont disponibles sur une autre feuille du même fichier excel dans une base de données qui se met à jour automatiquement, les données sont très faciles à extraire mon problème ne concerne que la mise en forme conditionnelle

J'ai 150 boucles et 4 couleurs par boucle a mettre en forme, je suis persuadé qu'il existe une façon plus simple que de faire 150x4 mises en forme conditionnelles à la main a la base de formules.

Je suis désolé il s'agit d'un fichier confidentiel que je ne peut pas diffuser en revanche je vous met en joins une maquette similaire a ce que je cherche a faire sauf qu'au lieu de quelques boucles j'en ai 150.

Si ma requête est similaire à une autre sur le forum je m'en excuse, en tout cas je suis preneur de toutes vos petites astuces pour me faciliter la vie !

14exemple.xlsx (14.92 Ko)

Merci d'avance !

Bonjour,

Sujet intéressant ...

Je pense que cela doit être facilement automatisable ...

Dès que j'ai un petit moment ... je t'envoie un fichier test ...

Re,

Tu trouveras ci-joint un premier fichier test ...

33test-vico.xlsm (21.00 Ko)

Bonjour merci pour ta réponse rapide !

Alors pour le moment j'ai une "erreur d’exécution 438 propriété ou méthode non gérée par cet objet" dès que je tente de mettre un "O" dans le tableau j'essaye de comprendre la macro, a priori c'est la ligne "Application.ScreeUpdating = False" qui pose problème.

Désolé ...

Il manque un n ...

à insérer pour obtenir :

Application.ScreenUpdating = False

Ah purée oui bien vu !

Du coup impeccable ça marche parfaitement, par contre je ne comprend pas vraiment la macro, peut tu s'il te plait me faire une petite explication des éléments de la macro que je puisse l'adapter à mon document réel ?

Ravi que cela te convienne ...!!!

Ci-joint toutes les explications ... avec des commentaires pour chaque ligne ...

13test-vico.xlsm (21.00 Ko)

Je pense que tu n'a pas envoyé la bonne pièce jointe

Re,

Décidément ... je ne fais que des ...

Je viens de vérifier ... ci-joint la bonne version ...

14test-vico.xlsm (21.70 Ko)

Pas de problèmes, je pense avoir cerné, j'essaye de l'appliquer à mon fichier et je te tiens au courant ! Merci !

[quote="Vico !"]Pas de problèmes, je pense avoir cerné, j'essaye de l'appliquer à mon fichier et je te tiens au courant ! Merci ![/quote]

Bon Courage pour l'adaptation ...

Si tu rencontres des difficultés ... tu ne dois pas hésiter à revenir sur le Forum ...

Bonjour, après quelques essais ça ne fonctionne pas du tout, il ne se passe rien X)

Voici ma macro :

Sub Macro1(ByVal Target As Range)

' Si l'utilisateur intervient sur plus d'une cellule, quitter la macro

If Target.Count > 1 Then Exit Sub

' Si l'utilisateur intervient sur une cellule en dehors de la plage B3:E15, quitter la macro

If Intersect(Target, Range("H2:K143")) Is Nothing Then Exit Sub

' Si l'utilisateur saisit autre chose que O (soit la lettre O en majuscule) , quitter la macro

If Target.Value <> "O" Then Exit Sub

Dim sboucle As Long

Dim scouleur As Long

Dim trouv As Range

' Déterminer le numéro de la boucle sur la même ligne

sboucle = Sheet6.Cells(Target.Row, 1).Value

' Déterminer la couleur de la boucle dans la même colonne sur la première ligne

scouleur = Sheet6.Cells(1, Target.Column).Interior.Color

' Temporairement, ne pas afficher les modifiactions à l'écran

Application.ScreenUpdating = False

' Chercher et trouver la boucle dans la Feuille Plan

With Sheet1

Set trouv = .Cells.Find(What:=sboucle, After:=.Cells(1, 1), LookIn:=xlValues, _

LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _

, SearchFormat:=False)

End With

Application.Goto trouv

' Colorier la sélection avec la couleur appropriée

Selection.Interior.Color = scouleur

' Retourner à la Feuille du plan général

Sheet1.Select

End Sub

Le fonctionnement sur mon fichier réel est le même mis à part que :

* ça n'est pas l'utilisateur à la main mais une formule qui crée les "O" dans la base de données.

* la base de donnée est en page 6 au lieu de page 2

* elle se situe entre les cellules H2 et K143.

* les couleurs sont en page 6 au dessus de la base de données donc entre H1 et K1

* le plan a colorier se situe entre les cellules B6 et BJ27 sur la feuille 1

J'ai cru avoir adapté mais a priori non. C'est peut être pas très clair je vais essayer de créer une feuille d'exemple ou tout est sur les bonnes plages de cellule avec les bons nom d'onglets.

12exemple.xlsx (19.77 Ko)

Bonjour,

Dès que j'ai un petit moment ... je reprends ton ... dossier ...

Re,

Ci-joint ... ton fichier test en Version 2 ...

22test-vico-v2.xlsm (33.95 Ko)

Bonjour, je regarde tout ça et je te tiens au courant ! Merci !

[quote="Vico !"]Bonjour, je regarde tout ça et je te tiens au courant ! Merci ![/quote]

Il faut faire attention aux boucles manquantes .... ainsi qu'à celles qui apparaissent deux fois .... dans le plan ...

Oui effectivement, en temps normal sur le vrai fichier il n'y aura pas de boucles manquantes, pour les rares qui apparaitrons deux fois je peut trouver une solution, pour l'instant j'ai réussi à adapter mais j'essaye de rajouter une condition a la première case "Pose<90%" (cellule H2) pour que si le nombre d'élément posés soit égal à 0 la boucle reste en gris. le problème c'est que ma fonction SI à a priori trop d'arguments pour intégrer celui-ci

la fonction actuelle est : =SI(E2<0,9*B2;"O";"")

Je voudrais ajouter l'info "SI E2=0 alors H2=""

il n'existe pas une fonction SI avec plusieurs conditions a valider ?

Re,

Si cela ne t'embête pas ... procédons dans l'ordre ...

1. Est-ce-que la Version 2 pour l'adaptation ... fonctionne ou pas ...???

2. Si je comprends bien, il y aurait une nouvelle condition ...une nouvelle légende ...un nouveau test ....

Re,

Dans le fichier que tu as posté, la cellule H2 ne contient aucune formule ... mais du texte : Pose<60%

Maintenant ... tu parles de ... Pose<90% .... perso, j'arrive plus du tout à suivre ...

Manifestement, tu dois travailler sur plusieurs fichiers différents ....

Pour ce qui concerne la question d'imbriquer des SI() ....

un exemple :

=SI(E2=0;H2="";SI(E2<0,9*B2;"O";""))

Bonne Continuation

Oui pardon c'était un poil brouillon surtout pour un Lundi matin !

Oui la version deux fonctionne, j'ai juste du adapter les numéros de feuilles qui étaient de 1 à 6 sur mon fichier et de 3 à 8 sur le fichier test.

Pour les boucles qui manquent ça n'arrivera pas sur mon fichier final.

Pour les boucles qui sont dans plusieurs cellules ça arrivera sur mon fichier final pour certaines boucles, ceci dit pour celles-ci je peut tout à fait mettre en place une mise en forme classique sans macro puisque ça reste marginal.

Le problème que je rencontre :

Actuellement les boucles sont forcément dans un des 4 états

posé<90%

posé>90%

posé & testé

perché

ça fonctionne parfaitement.

Sur la feuille de base de données j'aimerais que les boucles sur lesquels aucuns détecteur n'a été posé n'apparaissent pas dans la première colonne pour qu'elles restent en gris tant qu'on y à pas toucher, en d'autre mots cette colonne devrait s’appeler "posé<9O% mais supérieur à 1 détecteur"

Actuellement pour que le "O" s'affiche dans cette colonne j'utilise une fonction SI qui vérifie que sur cette feuille6 :

La cellule E2 (le nombre de détecteurs posés) soit plus petit que la cellule B2 (le nombre total de détecteurs de la boucle) c'est comme ça que je détermine si c'est inférieur à 90% ou non.

ça donne cette formule dans la case H2 : =SI(E2<0,9*B2;"O";"")

le problème c'est que quand j'ai 0 détecteurs de posés sur une boucle cette formule reste vrai, donc elle passe en "O", j'aimerais rajouter une condition à cette formule qui dit que quand E2=0 la cellule ne doit pas passer en positif, j'ai donc essayé de multiplier avec une autre fonction SI mais je n'y arrive pas j'avais essayer ça :

=SI(E2<0,9*B2;"O";"")*SI(E2=0;"")


J'ai écris mon message sans voir ton dernier, oui 60% ou 90% c'est pareil c'est du provisoire je n'ai moi même pas la vrai info de pourcentage c'est pour ça que ça bouge X)

Rechercher des sujets similaires à "mise forme conditionnelle silhouette base dedonnees"