Macro de mise en forme conditionnelle
Fermé
Dwell76
Messages postés
7
Date d'inscription
mardi 10 novembre 2015
Statut
Membre
Dernière intervention
30 mars 2016
-
24 mars 2016 à 16:19
Dwell76 Messages postés 7 Date d'inscription mardi 10 novembre 2015 Statut Membre Dernière intervention 30 mars 2016 - 30 mars 2016 à 19:15
Dwell76 Messages postés 7 Date d'inscription mardi 10 novembre 2015 Statut Membre Dernière intervention 30 mars 2016 - 30 mars 2016 à 19:15
A voir également:
- Macro de mise en forme conditionnelle
- Mise en forme conditionnelle excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Dans la table des matières du document à télécharger, le chapitre 6 et ses 2 sections n'apparaissent pas. trouvez l'erreur dans la structure du document et corrigez-la. mettez à jour la table des matières. quel est le mot formé par les lettres en majuscules de la table des matières après sa mise à jour ? - Forum Word
- Mise a jour chrome - Accueil - Applications & Logiciels
9 réponses
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
523
24 mars 2016 à 17:52
24 mars 2016 à 17:52
Bonjour,
La méthode countif devrait pourtant te donner satisfaction.
Envoie un fichier exemple avec les 2 plages.
https://www.cjoint.com/
A+
La méthode countif devrait pourtant te donner satisfaction.
Envoie un fichier exemple avec les 2 plages.
https://www.cjoint.com/
A+
Dwell76
Messages postés
7
Date d'inscription
mardi 10 novembre 2015
Statut
Membre
Dernière intervention
30 mars 2016
25 mars 2016 à 09:51
25 mars 2016 à 09:51
Tout d'abord merci pour la réponse...
voici tout d'abord le document de base
https://www.cjoint.com/c/FCziSlSSbVw
Les variables de la 1ere plage sont en bleu (elle peut être divisée en plusieurs plage si besoin)
L'objectif de ce document est que pour toute saisie dans la première plage, il aille vérifier d'abord si ce nombre existe dans le premier tableau en bas à droite. Si oui, changer la cellule dans une couleur donnée. Si ce nombre n'est pas dans le 1er tableau, aller chercher dans le deuxième où lui sera attribuer un autre code couleur en cas d’occurrence, etc...
Pour en final, si le numéro n'est dans aucun tableau, n'appliquer aucune modification de couleur.
Donc ma première idée fut d'utiliser le "countif" avec le If then else....
D'avance merci
voici tout d'abord le document de base
https://www.cjoint.com/c/FCziSlSSbVw
Les variables de la 1ere plage sont en bleu (elle peut être divisée en plusieurs plage si besoin)
L'objectif de ce document est que pour toute saisie dans la première plage, il aille vérifier d'abord si ce nombre existe dans le premier tableau en bas à droite. Si oui, changer la cellule dans une couleur donnée. Si ce nombre n'est pas dans le 1er tableau, aller chercher dans le deuxième où lui sera attribuer un autre code couleur en cas d’occurrence, etc...
Pour en final, si le numéro n'est dans aucun tableau, n'appliquer aucune modification de couleur.
Donc ma première idée fut d'utiliser le "countif" avec le If then else....
D'avance merci
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
523
25 mars 2016 à 10:47
25 mars 2016 à 10:47
Bonjour,
1) Je n'ai pas compris où se trouvent les plages 1 (plage de saisie) et 2 (plage de contrôle).
Tu évoques le tableau1 puis tableau2, etc ... l'indication en bas à droite est un peu vague.
2) Pourquoi 2 feuilles ?
3) Tu dis que les variables de la 1ere plage (plage de saisie) sont en bleu. Elles sont donc déjà saisies.
Merci de compléter tes explications en donnant un exemple concret : je saisis la valeur xxx dans la cellule Feuil_x!YYY, je contrôle si cette valeur existe dans la plage Feuil_y!TTT:UUU, puis dans la plage Feuil_y!VVV:WWW et ainsi de suite jusqu'à la plage Feuil_y!YYY:ZZZ.
Etc.
A+
1) Je n'ai pas compris où se trouvent les plages 1 (plage de saisie) et 2 (plage de contrôle).
Tu évoques le tableau1 puis tableau2, etc ... l'indication en bas à droite est un peu vague.
2) Pourquoi 2 feuilles ?
3) Tu dis que les variables de la 1ere plage (plage de saisie) sont en bleu. Elles sont donc déjà saisies.
Merci de compléter tes explications en donnant un exemple concret : je saisis la valeur xxx dans la cellule Feuil_x!YYY, je contrôle si cette valeur existe dans la plage Feuil_y!TTT:UUU, puis dans la plage Feuil_y!VVV:WWW et ainsi de suite jusqu'à la plage Feuil_y!YYY:ZZZ.
Etc.
A+
Dwell76
Messages postés
7
Date d'inscription
mardi 10 novembre 2015
Statut
Membre
Dernière intervention
30 mars 2016
25 mars 2016 à 12:37
25 mars 2016 à 12:37
Veuillez m'excuser, je vais préciser
Les Nombres en bleu ont été saisis à titre d'exemple pour les différencier des nombre en noir....Les nombres en bleus sont des variables, je peux les changer à tout moment.... Les nombres en noir n'ont pas d'autre utilité qu'une information de repère.
donc par exemple je souhaite saisir dans n'importe quelle cellule de la plage E11:AY12 une valeur numérique. Je souhaiterais alors que la macro recherche tout d'abord si ce nombre existe dans la plage A22:K28. Si oui, attribué à la cellule saisie, un fond de couleur spécifique.
Sinon, rechercher ce même nombre dans la plage M22:S28. Si le nombre existe dans cette plage, attribuer à la cellule de saisie un autre code couleur de cellule.
Sinon passer à la plage U22:AE28....etc
Tout en sachant que si le nombre saisi n'est dans aucune des plages du bas du document, aucun changement de couleur cellule ne sera affecté.
J'espere avoir été plus clair
Les Nombres en bleu ont été saisis à titre d'exemple pour les différencier des nombre en noir....Les nombres en bleus sont des variables, je peux les changer à tout moment.... Les nombres en noir n'ont pas d'autre utilité qu'une information de repère.
donc par exemple je souhaite saisir dans n'importe quelle cellule de la plage E11:AY12 une valeur numérique. Je souhaiterais alors que la macro recherche tout d'abord si ce nombre existe dans la plage A22:K28. Si oui, attribué à la cellule saisie, un fond de couleur spécifique.
Sinon, rechercher ce même nombre dans la plage M22:S28. Si le nombre existe dans cette plage, attribuer à la cellule de saisie un autre code couleur de cellule.
Sinon passer à la plage U22:AE28....etc
Tout en sachant que si le nombre saisi n'est dans aucune des plages du bas du document, aucun changement de couleur cellule ne sera affecté.
J'espere avoir été plus clair
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Dwell76
Messages postés
7
Date d'inscription
mardi 10 novembre 2015
Statut
Membre
Dernière intervention
30 mars 2016
25 mars 2016 à 12:38
25 mars 2016 à 12:38
j'oubliais...la feuille 2 ne représente qu'un autre essai, ne pas en tenir compte pour ma question. Seule la feuille 1 est à utiliser
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
523
25 mars 2016 à 13:56
25 mars 2016 à 13:56
Ton fichier en retour
https://www.cjoint.com/c/FCzm22NV3Fq
A+
https://www.cjoint.com/c/FCzm22NV3Fq
A+
Dwell76
Messages postés
7
Date d'inscription
mardi 10 novembre 2015
Statut
Membre
Dernière intervention
30 mars 2016
25 mars 2016 à 15:26
25 mars 2016 à 15:26
Merci infiniment Gyrus, celà correspond exactement à ce que je cherchais. Je vais potasser certaines commandes auxquelles je n'avais pas pensé.
Excellente journée
Excellente journée
Dwell76
Messages postés
7
Date d'inscription
mardi 10 novembre 2015
Statut
Membre
Dernière intervention
30 mars 2016
28 mars 2016 à 16:24
28 mars 2016 à 16:24
désolé de revenir vers vous mais il semble que la couleur ne change pas suivant les differentes plages...
Comment puis je améliorer votre macro afin qu'elle traite de cette manière...
si l'élément recherché se trouve en PlageS1 : rouge
PlageS2 jaune
PlageS3 vert
PlageS4 bleu
PlageS5 orange
et que sinon, la fonte repasse en noir ?
j'ai beau avoir essayer de trouver seul, en vain.
d'avance merci
Comment puis je améliorer votre macro afin qu'elle traite de cette manière...
si l'élément recherché se trouve en PlageS1 : rouge
PlageS2 jaune
PlageS3 vert
PlageS4 bleu
PlageS5 orange
et que sinon, la fonte repasse en noir ?
j'ai beau avoir essayer de trouver seul, en vain.
d'avance merci
Dwell76
Messages postés
7
Date d'inscription
mardi 10 novembre 2015
Statut
Membre
Dernière intervention
30 mars 2016
30 mars 2016 à 19:15
30 mars 2016 à 19:15
je pense avoir trouvé la solution en analysant la réponse de Gyrus
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim PlageS1 As Range, PlageS2 As Range, PlageS3 As Range, PlageS4 As Range, PlageS5 As Range, PlageS6 As Range, PlageS As Range
Dim Tablo1
Dim Tablo2
Dim Tablo3
Dim Tablo4
Dim Tablo5
Dim i As Integer
If Target.Count > 1 Then Exit Sub
'Définition des plages de saisie
Set PlageS1 = Range("E5:BI5")
Set PlageS2 = Range("E11:BI11")
Set PlageS3 = Range("E12:BI12")
Set PlageS4 = Range("E18:BI18")
Set PlageS5 = Range("BF16:BH17")
Set PlageS = Application.Union(PlageS1, PlageS2, PlageS3, PlageS4, PlageS5)
'Définition des plages de contrôle
Tablo1 = Array("A22:L28")
Tablo2 = Array("M22:S28")
Tablo3 = Array("U22:AE28")
Tablo4 = Array("AG22:AM28")
Tablo5 = Array("AO22:AY28")
If Not Application.Intersect(Target, PlageS) Is Nothing Then
Target.Interior.ColorIndex = 2
For i = 0 To UBound(Tablo1)
If Application.CountIf(Range(Tablo1(i)), Target) > 0 Then
Target.Interior.ColorIndex = 3
ElseIf Application.CountIf(Range(Tablo2(i)), Target) > 0 Then
Target.Interior.ColorIndex = 6
ElseIf Application.CountIf(Range(Tablo3(i)), Target) > 0 Then
Target.Interior.ColorIndex = 10
ElseIf Application.CountIf(Range(Tablo4(i)), Target) > 0 Then
Target.Interior.ColorIndex = 45
ElseIf Application.CountIf(Range(Tablo5(i)), Target) > 0 Then
Target.Interior.ColorIndex = 43
Exit For
End If
Next i
End If
End Sub
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim PlageS1 As Range, PlageS2 As Range, PlageS3 As Range, PlageS4 As Range, PlageS5 As Range, PlageS6 As Range, PlageS As Range
Dim Tablo1
Dim Tablo2
Dim Tablo3
Dim Tablo4
Dim Tablo5
Dim i As Integer
If Target.Count > 1 Then Exit Sub
'Définition des plages de saisie
Set PlageS1 = Range("E5:BI5")
Set PlageS2 = Range("E11:BI11")
Set PlageS3 = Range("E12:BI12")
Set PlageS4 = Range("E18:BI18")
Set PlageS5 = Range("BF16:BH17")
Set PlageS = Application.Union(PlageS1, PlageS2, PlageS3, PlageS4, PlageS5)
'Définition des plages de contrôle
Tablo1 = Array("A22:L28")
Tablo2 = Array("M22:S28")
Tablo3 = Array("U22:AE28")
Tablo4 = Array("AG22:AM28")
Tablo5 = Array("AO22:AY28")
If Not Application.Intersect(Target, PlageS) Is Nothing Then
Target.Interior.ColorIndex = 2
For i = 0 To UBound(Tablo1)
If Application.CountIf(Range(Tablo1(i)), Target) > 0 Then
Target.Interior.ColorIndex = 3
ElseIf Application.CountIf(Range(Tablo2(i)), Target) > 0 Then
Target.Interior.ColorIndex = 6
ElseIf Application.CountIf(Range(Tablo3(i)), Target) > 0 Then
Target.Interior.ColorIndex = 10
ElseIf Application.CountIf(Range(Tablo4(i)), Target) > 0 Then
Target.Interior.ColorIndex = 45
ElseIf Application.CountIf(Range(Tablo5(i)), Target) > 0 Then
Target.Interior.ColorIndex = 43
Exit For
End If
Next i
End If
End Sub