Actualité informatique
Test comparatif matériel informatique
Jeux vidéo
Astuces informatique
Vidéo
Télécharger
Services en ligne
Forum informatique
01Business

|-  LOGICIELS


|||-  

Mise en forme conditionnelle > 3 conditions

 

21 utilisateurs inconnus
Ajouter une réponse
 

 
Page photos
 
     
Vider la liste des messages à citer
 
 Page :
1
Auteur
 Sujet :

Mise en forme conditionnelle > 3 conditions

Prévenir les modérateurs en cas d'abus 
Zaro
zaro
Bébé forumeur (De 10 à 49 messages postés)
  1. Posté le 19/07/2007 à 10:42:44  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Bonjour, :hello:

 je cherche obtenir plus de 3 condtions pour la mise en forme conditionnelle.
 J'ai tenté d'extrapoler la macro en rejoutant condition 4 .... sans succès.

 Qqn aurait il un script qui pourrait me dépanner(avec l'explication svp).

 merci d'avance

zebretoujours9
Débutant confirmé (de 1 000 à 4 999 messages postés)
  1. Posté le 19/07/2007 à 10:56:26  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
:hello:
 Je suppose que c'est par rapport au logiciel "Excel" que tu demandes cela. A moins que ce soit pour "Calc".

 Zèbretoujours

(Publicité)
zaro
Bébé forumeur (De 10 à 49 messages postés)
  1. Posté le 19/07/2007 à 11:05:45  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
oui dsl  :whistle:

 (demande pour excel 2000)

gorfael
Débutant confirmé (de 1 000 à 4 999 messages postés)
  1. Posté le 19/07/2007 à 12:23:40  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 

Zaro a écrit :

oui dsl  :whistle:
 (demande pour excel 2000)
 


Salut
 pour plus de 3 conditions, il faut passer par VBA :
 - Niveau en VBA ?
 - Conditions ?
 - applicable sur une unique feuille ou sur plusieurs ?

 Le problème de ce type de traitement est qu'on ne superpose pas un format conditionnel au format de la cellule : on le remplace. Ce qui fait que le format initial est perdu. Ce qui fait que si on perd la condition, on ne peut revenir qu'à un format de référence, pas au format qu'avait avant la cellule.

 Le principe :
 On définit un condition pour les cellule concernées :
 Condition 1
 Case 1 : la formule est
 Case 2 : =MFC_01 (par exemple)

 On crée une feuille FORMAT dans laquelle en colonne A on formate les cellules suivant les différents formats voulus, en mettant un n°ordre dans la cellule

 On crée une macro à lancement automatique sur changement de la feuille qui contrôle toutes les cellules qui ont une condition MFC_01 et on vérifie les conditions et applique le format défini dans la feuille FORMAT

 Avantages d'une telle mèthode :
 -inclure ou exclure une cellule de la mise en forme consiste à renseigner la condition 1 de la MFC de la cellule
 - le nombre de formats conditionnels n'est limité que par les performances d'Excel

 Inconvénients :
 - Les cellules doivent avoir un format commun hors conditions
 - Les cellules calculées ne lancent pas la macro Worksheet_Change, puisque, si le résultat visible change, la formule de calcul n'est pas modifiée. Donc, on est obligé à chaque changement de vérifier et mettre à jour le format de l'ensemble des cellules de la feuille
 - Les conditions sont créées en "dur" dans le code de la macro : ça demande certaines compétences pour adapter une nouvelle condition, sauf si les conditions sont des conditions simples : par exemple
 "A" => rouge
 "B" => bleu
 "C" => vert etc...
 on peut inscrire A dans la cellule qui à le fond rouge, etc..., la macro ne faisant qu'une comparaison entre la valeur à tester et les cellules dont on collera le format en cas d'égalité.
 D'où ma question sur les conditions

 A+
 NB Même si je recrées le code de A à Z, l'idée de départ ne viens pas de moi. J'ai piqué celle-ci sur un autre forum, mais mon disque s'étant crashé lamentablement, je n'ai plus la source et donc l'auteur de cette idée plus qu'astucieuse et ne peux lui en attribuer le merite

zaro
Bébé forumeur (De 10 à 49 messages postés)
  1. Posté le 19/07/2007 à 14:20:14  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Merci Gorfael.

 je n'avais pas pensé a la solution que tu préconise (et pour cause, je pense que cela dépasse mes compétences de programmation VBA) :hebe:
 Je suis novice en la matière.

 J'avais expérimenté une autre piste de macro, mais pas pu aller jusqu'au bout... je te l'expose ainsi que les inconvénients identifiés... peut être sauras tu les résoudres...


 j'ai 4 conditions
 A => Rouge
 B => Bleu
 C => Vert
 D => Jaune

 par l'assistant macro, je fais

 Ctrl F => find
 tape A  (respecter casse / cellule entière)
 Ok

 "je suis alors sur la 1ère cellule identifiée"

 puis j'applique la couleur Rouge.

 Ensuite pour répéter la tâche, je n'ai plus qu'à copier X fois ce code (disons 100 fois), et je suis sûr (sachant que A < 100) de changer tous mes A en rouge.

 ... Idem pour les 3 autres lettres.

 MAIS 3 problèmes
 1. mon code est affreusement long.
 => y a t il un scprit pour dire fais mois le scipt A  100 fois ? (idem pour les 4 autres couleurs)

 2. Je n'arrive pas à définir le champs d'application de cette macro.
 En effet, cette macro ne peut fonctionner que sur toute la page. Car si je définit une zone dans la macro, un fois que je cliquerai sur la cellule identifier, je pointe une cellule définie (disons C8) et le C8 viens en dure dans le code... ce sera donc systématiquement C8 qui sera mis en rouge...)

 3. Je ne sais pas comment faire pour que ce code s'applique à plusieurs onglets


 Autre piste de réflexion (ou je n'ai pas pu aboutir).
 N'y a t il pas un scipt du type (dsl suis pas informaticien  ;)

 Range  (A1:Z20)
 IF ActiveCell.FormulaR1C1 = "A"
 THEN With Selection.Interior

.ColorIndex = 6

.Pattern = xlSolid

 De mon coté je me plonge dans ta soluc pour essayer de la faire marcher ^^
 Merci d'avance pour tes lumières...

(Publicité)
gorfael
Débutant confirmé (de 1 000 à 4 999 messages postés)
  1. Posté le 20/07/2007 à 00:10:08  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 

Zaro a écrit :

Merci Gorfael.

 je n'avais pas pensé a la solution que tu préconise (et pour cause, je pense que cela dépasse mes compétences de programmation VBA) :hebe:
 Je suis novice en la matière.

 J'avais expérimenté une autre piste de macro, mais pas pu aller jusqu'au bout... je te l'expose ainsi que les inconvénients identifiés... peut être sauras tu les résoudres...


 j'ai 4 conditions
 A => Rouge
 B => Bleu
 C => Vert
 D => Jaune

 par l'assistant macro, je fais

 Ctrl F => find
 tape A  (respecter casse / cellule entière)
 Ok

 "je suis alors sur la 1ère cellule identifiée"

 puis j'applique la couleur Rouge.

 Ensuite pour répéter la tâche, je n'ai plus qu'à copier X fois ce code (disons 100 fois), et je suis sûr (sachant que A < 100) de changer tous mes A en rouge.

 ... Idem pour les 3 autres lettres.

 MAIS 3 problèmes
 1. mon code est affreusement long.
 => y a t il un scprit pour dire fais mois le scipt A  100 fois ? (idem pour les 4 autres couleurs)

 2. Je n'arrive pas à définir le champs d'application de cette macro.
 En effet, cette macro ne peut fonctionner que sur toute la page. Car si je définit une zone dans la macro, un fois que je cliquerai sur la cellule identifier, je pointe une cellule définie (disons C8) et le C8 viens en dure dans le code... ce sera donc systématiquement C8 qui sera mis en rouge...)

 3. Je ne sais pas comment faire pour que ce code s'applique à plusieurs onglets


 Autre piste de réflexion (ou je n'ai pas pu aboutir).
 N'y a t il pas un scipt du type (dsl suis pas informaticien  ;)

 Range  (A1:Z20)
 IF ActiveCell.FormulaR1C1 = "A"
 THEN With Selection.Interior

.ColorIndex = 6

.Pattern = xlSolid

 De mon coté je me plonge dans ta soluc pour essayer de la faire marcher ^^
 Merci d'avance pour tes lumières...

 


Salut
 Pas tout compris
 Mais une macro qui colore en fonction d'une lettre :



 
 Sub Test()
 'Déclaration des variables -------------------------
 Dim Cel As Range
 Dim F As Worksheet
 'MEI ----------------------------
 application.ScreenUpdating = False
 'Blocage ragraîchissement écran
 'Traitement-------------------​-----
 For Each F In Worksheets
 'Pour chaque feuille du classeur

For Each Cel In F.UsedRange

'Pour chaque cellule de la plage utilisée de la feuille

Select Case Cel.Value

'définir case = valeur de cel

Case "A"

Cel.Interior.ColorIndex = 3

Case "B"

Cel.Interior.ColorIndex = 41

Case "C"

Cel.Interior.ColorIndex = 4

Case "D"

Cel.Interior.ColorIndex = 6

Case Else

Cel.Interior.ColorIndex = xlNone

End Select

Next Cel
 Next F
 application.ScreenUpdating = True
 End Sub
 


je teste toute la plage d'utilisation de chacune des feuille.

 On bloque le rafraîchissement écran pendant la macro, et on le rétablit après : ça accélère le traitement

 La macro tient compte de la casse : "A" est reconnu, mais pas "a". si tu veux que ça fonctionne dans les 2 cas, tu remplaces
 Select Case Cel.Value
 par
 Select Case Ucase(Cel.Value)
 

 Si elle te convient, on peut la déclencher automatiquement sur la feuille en court, soit en cas de changement, soit en cas de changement de feuille.
 Sinon, détailles ce que tu veux obtenir
 A+

zaro
Bébé forumeur (De 10 à 49 messages postés)
  1. Posté le 20/07/2007 à 09:15:29  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Trop fort.

 Merci Oh grand gourou de la macro !! :super:

 Cas résolu...

zaro
Bébé forumeur (De 10 à 49 messages postés)
  1. Posté le 20/07/2007 à 09:39:09  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Juste un petit supplément

 si je veux limiter le "range" d'application sur chacune des feuilles

 comment dois je modifier le script ?

 J'imagine que c'est cette ligne...
 For Each Cel In F.UsedRange

 Par ailleurs, peux tu me conseiller un bon bouquin pour apprendre les syntaxes et ne pas te poser des questions débiles  ;)

 D'avance merci

(Publicité)
gorfael
Débutant confirmé (de 1 000 à 4 999 messages postés)
  1. Posté le 20/07/2007 à 12:41:25  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Salut Zaro
 si je veux limiter le "range" d'application sur chacune des feuilles
 comment dois je modifier le script ?
 J'imagine que c'est cette ligne...
 For Each Cel In F.UsedRange

 Pas loin, si toutes tes feuilles on la même plage (A8:Z20):



 
 For Each Cel In F.Range("A8:Z20" )
 



 sinon :



 
 Sub Test()
 'Déclaration des variables -------------------------
 Dim Cel As Range
 Dim Plage_T As String
 Dim F As Worksheet
 'MEI ----------------------------
 Application.ScreenUpdating = False
 'Blocage ragraîchissement écran
 'Traitement-------------------​-----
 For Each F In Worksheets
 'Pour chaque feuille du classeur

'Choix de la plage de travail --------------

Select Case UCase(F.Name)

'ucase permet les erreurs de minuscules/majuscules

Case "FEUIL1"

Plage_T = "A1:B8"

Case "FEUIL2"

Plage_T = "C12,C15,C17"

Case "FEUIL3"

Plage_T = "A1:B8,A10:B20,C13,D15"

Case Else

'pour les feuilles ne correspondant pas aux noms cités

Plage_T = ""

End Select

'coloriage--------------------​---

If Plage_T <> "" Then

'Si plage_T n'est pas vide

For Each Cel In F.Range(Plage_T)

'Pour chaque cellule de la plage utilisée de la feuille

Select Case Cel.Value

'définir case = valeur de cel

Case "A"

Cel.Interior.ColorIndex = 3

Case "B"

Cel.Interior.ColorIndex = 41

Case "C"

Cel.Interior.ColorIndex = 4

Case "D"

Cel.Interior.ColorIndex = 6

Case Else

Cel.Interior.ColorIndex = xlNone

End Select

Next Cel

End If
 Next F
 Application.ScreenUpdating = True
 End Sub
 


on teste les plages définies dans chaque select case correspondante
 Attention au fait que c'est une syntaxe anglaise et que le séparateur n'est pas le point-virgule ";", mais la virgule ","

 Par ailleurs, peux tu me conseiller un bon bouquin pour apprendre les syntaxes
 Je ne peux te conseiller aucun bouquin : ils sont chers pour le temps où ils sont utiles.
 Le VBA est presque toujours traité en tant qu'annexe
 Le VBA est spécifique à chaque version (par un jeu de référence de bibliothèques qui changent).
 Quand tu recherches une idée, le bouquin ne sert à rien, et selon la loi de Murphy, il y a de grandes "chances" que ce que tu cherches ne s'y trouve pas :)

 Je ne dis pas qu'il ne faut pas en acheter, mais je n'en conseillerai aucun.
 Pour se former, il y a les macros "apprentissages" (nouvelle macro) qui sont super pour la syntaxe.
 Ensuite, il y a des forums comme celui-ci et celui-là
 Pour Excel, moi, je préfère XLD, parce qu'il ne traite que d'Excel et surtout parce qu'on peut transmettre des fichiers (c'est plus facile que de décrire complétement un problème ou une solution, et comme je suis feignant :whistle: ).

 et ne pas te poser des questions débiles  ;)
 Si tu pense ça, tu vas avoir de gros problèmes :fou:
 Les questions sont le seul moyen que je connaisse d'avoir une réponse.
 Une question n'est jamais débile. Elle peut le sembler à celui à qui on la pose, mais le questionneur ne le pense pas. Et ce qui te semble évident ne l'ai pas forcément pour l'autre, et comme c'est évident, tu dois pouvoir l'expliquer facilement, non ? Donc, pourquoi se priver du "bonheur" de fanfaronner devant le demandeur  :D

 Fucius qui n'était pas con disait un truc du style :
 Il n'est pas grâve d'avoir des lacunes, ce qui est grâve, c'est de ne pas voukoir les combler.

 Zt pour les questions "débiles", je suis un maître : tant que je ne comprends pas, j'insiste. Et à mon âge, je ne suis pas prêt dde changer.
 Et si je le fais, pourquoi interdirai-je à quelqu'un de me faire la même chose ?
 A+

 Page :
1

Aller à :
 

Sujets relatifs
Mise en forme conditionnel Exel 2007? mise a jour du bios
mise en veille impossible [résolu] pbl de peer to peer depuis mise en réseau wi fi AOL BOX
EXCEL : Mise en forme conditionnelle Mise en page sur Word
Mise à jour de Java Quelle est la durée de mise en veille de vos écran(s) ?
Quelles conditions pour être dans la légalité? mise à jour microsft publisher
Plus de sujets relatifs à : Mise en forme conditionnelle > 3 conditions

Les 5 sujets de discussion précédents Nombre de réponses Dernier message
[resolu] Problème mises à jour après réparation de Windows 25
excel : touche alternative de déplacement 1
vener voir 1
Désinstallation le logiciel carte créative audigy2 zs Résolu 7
mettre google sur mon navigateur orange 1