MFC AVEC VBA : Colorer 2 cellules contigües en fonction de la valeur d'une trois
Résolu
amiralS
Messages postés
46
Date d'inscription
Statut
Membre
Dernière intervention
-
amiralS Messages postés 46 Date d'inscription Statut Membre Dernière intervention -
amiralS Messages postés 46 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je voudrais mettre en couleur la police de trois cellules contigües en fonction de la valeur prise par une des trois (la plus à droite)
Sur ma feuille excel j'ai des résultats d'un cross. Huit tableaux accolés avec pour chaque niveau de classe et sexe.
Une colonne: Places puis à la droite de celle ci une colonne Noms et à la droite de celle ci une colonne classes qui doit me servir de valeur de référence pour une mise en forme conditionnelle
A = Places B = Noms C= Classes ( les classes de 3ème Filles - 301/302/303/304)
D = Places E = Noms F = Classes ( les classes de 3ème Garçons - 301/302/303/304)
G = Places H = Noms I = Classes ( les classes de 4ème Filles - 401/402/403/404)
J = Places K = Noms L = Classes ( les classes de 4ème Garçons - 401/402/403/404)
M = Places N = Noms O = Classes ( les classes de 5ème Filles - 501/502/503/504)
P = Places Q = Noms R = Classes ( les classes de 5ème Garçons - 501/502/503/504)
S = Places T = Noms U = Classes ( les classes de 6ème Filles - 601/602/603/604/605/606)
V = Places W = Noms X = Classes ( les classes de 6ème Garçons - 601/602/603/604/605/606)
Je voudrais par exemple si je prends comme référence 302 (la classe de 302) que chaque référence "302" prenne une couleur (bleue par exemple) et que les deux cellules qui se trouve à sa gauche prennent aussi cette couleur. Quand je parle de la couleur c'est le texte que je veux mettre en couleur.
J'aimerai pouvoir mettre en forme toute la feuille d'un seul coup avec toutes les classes sachant que je peux mettre des couleurs identiques pour 301/401/501/601(le 01 est commun aux différents niveaux) idem pour 02/03/04 - 605 et 606 sont uniques. Les colonnes vont de A à X et j'ai au plus une centaine de lignes dans une colonne.
Merci pour votre aide
Je voudrais mettre en couleur la police de trois cellules contigües en fonction de la valeur prise par une des trois (la plus à droite)
Sur ma feuille excel j'ai des résultats d'un cross. Huit tableaux accolés avec pour chaque niveau de classe et sexe.
Une colonne: Places puis à la droite de celle ci une colonne Noms et à la droite de celle ci une colonne classes qui doit me servir de valeur de référence pour une mise en forme conditionnelle
A = Places B = Noms C= Classes ( les classes de 3ème Filles - 301/302/303/304)
D = Places E = Noms F = Classes ( les classes de 3ème Garçons - 301/302/303/304)
G = Places H = Noms I = Classes ( les classes de 4ème Filles - 401/402/403/404)
J = Places K = Noms L = Classes ( les classes de 4ème Garçons - 401/402/403/404)
M = Places N = Noms O = Classes ( les classes de 5ème Filles - 501/502/503/504)
P = Places Q = Noms R = Classes ( les classes de 5ème Garçons - 501/502/503/504)
S = Places T = Noms U = Classes ( les classes de 6ème Filles - 601/602/603/604/605/606)
V = Places W = Noms X = Classes ( les classes de 6ème Garçons - 601/602/603/604/605/606)
Je voudrais par exemple si je prends comme référence 302 (la classe de 302) que chaque référence "302" prenne une couleur (bleue par exemple) et que les deux cellules qui se trouve à sa gauche prennent aussi cette couleur. Quand je parle de la couleur c'est le texte que je veux mettre en couleur.
J'aimerai pouvoir mettre en forme toute la feuille d'un seul coup avec toutes les classes sachant que je peux mettre des couleurs identiques pour 301/401/501/601(le 01 est commun aux différents niveaux) idem pour 02/03/04 - 605 et 606 sont uniques. Les colonnes vont de A à X et j'ai au plus une centaine de lignes dans une colonne.
Merci pour votre aide
A voir également:
- MFC AVEC VBA : Colorer 2 cellules contigües en fonction de la valeur d'une trois
- Excel compter cellule couleur sans vba - Guide
- Find vba - Astuces et Solutions
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
4 réponses
Bonjour
Sans voir le classeur, on ne peut guère t'aider
en attendant, il semble que la couleur serait fonction de l'unité (pour 504--->)
Si oui le principe serait
a complèter pour les 2 cellules à gauche et ce que l'on veut peut-^tre en voyant le classeur avec des explications précises du fonctionnement voulu
Sans voir le classeur, on ne peut guère t'aider
en attendant, il semble que la couleur serait fonction de l'unité (pour 504--->)
Si oui le principe serait
Niv = Cells(2, "E") Mod 100
Select Case Niv
Case 1
ActiveCell.Font.Color = -16776961 'rouge
Case 2
ActiveCell.Font.Color = -6279056 'violet
'etc jusquu'à 6
End Select
a complèter pour les 2 cellules à gauche et ce que l'on veut peut-^tre en voyant le classeur avec des explications précises du fonctionnement voulu
Mettre le classeur sans données confidentielles en pièce jointe sur
https://mon-partage.fr/
Puis faire un clic « copier le raccourci » et lecoller dans votre message
Ce code fonctionne mais c'est fastidieux et il doit être possible de faire plus court.
Sub couleurClasse()
Dim finligne As Byte
Dim NumeroLigne As Byte
finligne = ActiveSheet.UsedRange.Rows.Count + 1 'Variable nombre de lignes
NumeroLigne = 2 'Variable ligne en cours
While NumeroLigne < finligne
If Range("c" & NumeroLigne).Value = "302" Then
Range("B" & NumeroLigne).Font.Color = RGB(0, 0, 255)
Range("a" & NumeroLigne).Font.Color = RGB(0, 0, 255)
Range("c" & NumeroLigne).Font.Color = RGB(0, 0, 255)
End If
If Range("c" & NumeroLigne).Value = "304" Then
Range("B" & NumeroLigne).Font.Color = RGB(255, 0, 0)
Range("a" & NumeroLigne).Font.Color = RGB(255, 0, 0)
Range("c" & NumeroLigne).Font.Color = RGB(255, 0, 0)
End If
If Range("c" & NumeroLigne).Value = "301" Then
Range("B" & NumeroLigne).Font.Color = RGB(255, 0, 255)
Range("a" & NumeroLigne).Font.Color = RGB(255, 0, 255)
Range("c" & NumeroLigne).Font.Color = RGB(255, 0, 255)
End If
If Range("F" & NumeroLigne).Value = "302" Then
Range("D" & NumeroLigne).Font.Color = RGB(0, 0, 255)
Range("E" & NumeroLigne).Font.Color = RGB(0, 0, 255)
Range("F" & NumeroLigne).Font.Color = RGB(0, 0, 255)
End If
If Range("f" & NumeroLigne).Value = "304" Then
Range("d" & NumeroLigne).Font.Color = RGB(255, 0, 0)
Range("e" & NumeroLigne).Font.Color = RGB(255, 0, 0)
Range("f" & NumeroLigne).Font.Color = RGB(255, 0, 0)
End If
If Range("f" & NumeroLigne).Value = "301" Then
Range("d" & NumeroLigne).Font.Color = RGB(255, 0, 255)
Range("e" & NumeroLigne).Font.Color = RGB(255, 0, 255)
Range("f" & NumeroLigne).Font.Color = RGB(255, 0, 255)
End If
If Range("i" & NumeroLigne).Value = "402" Then
Range("g" & NumeroLigne).Font.Color = RGB(0, 0, 255)
Range("h" & NumeroLigne).Font.Color = RGB(0, 0, 255)
Range("i" & NumeroLigne).Font.Color = RGB(0, 0, 255)
End If
If Range("i" & NumeroLigne).Value = "404" Then
Range("g" & NumeroLigne).Font.Color = RGB(255, 0, 0)
Range("h" & NumeroLigne).Font.Color = RGB(255, 0, 0)
Range("i" & NumeroLigne).Font.Color = RGB(255, 0, 0)
End If
If Range("i" & NumeroLigne).Value = "401" Then
Range("g" & NumeroLigne).Font.Color = RGB(255, 0, 255)
Range("h" & NumeroLigne).Font.Color = RGB(255, 0, 255)
Range("i" & NumeroLigne).Font.Color = RGB(255, 0, 255)
End If
If Range("l" & NumeroLigne).Value = "402" Then
Range("j" & NumeroLigne).Font.Color = RGB(0, 0, 255)
Range("k" & NumeroLigne).Font.Color = RGB(0, 0, 255)
Range("l" & NumeroLigne).Font.Color = RGB(0, 0, 255)
End If
If Range("l" & NumeroLigne).Value = "404" Then
Range("j" & NumeroLigne).Font.Color = RGB(255, 0, 0)
Range("k" & NumeroLigne).Font.Color = RGB(255, 0, 0)
Range("l" & NumeroLigne).Font.Color = RGB(255, 0, 0)
End If
If Range("l" & NumeroLigne).Value = "401" Then
Range("j" & NumeroLigne).Font.Color = RGB(255, 0, 255)
Range("k" & NumeroLigne).Font.Color = RGB(255, 0, 255)
Range("l" & NumeroLigne).Font.Color = RGB(255, 0, 255)
End If
ETC...
NumeroLigne = NumeroLigne + 1
Wend
End Sub
Sub couleurClasse()
Dim finligne As Byte
Dim NumeroLigne As Byte
finligne = ActiveSheet.UsedRange.Rows.Count + 1 'Variable nombre de lignes
NumeroLigne = 2 'Variable ligne en cours
While NumeroLigne < finligne
If Range("c" & NumeroLigne).Value = "302" Then
Range("B" & NumeroLigne).Font.Color = RGB(0, 0, 255)
Range("a" & NumeroLigne).Font.Color = RGB(0, 0, 255)
Range("c" & NumeroLigne).Font.Color = RGB(0, 0, 255)
End If
If Range("c" & NumeroLigne).Value = "304" Then
Range("B" & NumeroLigne).Font.Color = RGB(255, 0, 0)
Range("a" & NumeroLigne).Font.Color = RGB(255, 0, 0)
Range("c" & NumeroLigne).Font.Color = RGB(255, 0, 0)
End If
If Range("c" & NumeroLigne).Value = "301" Then
Range("B" & NumeroLigne).Font.Color = RGB(255, 0, 255)
Range("a" & NumeroLigne).Font.Color = RGB(255, 0, 255)
Range("c" & NumeroLigne).Font.Color = RGB(255, 0, 255)
End If
If Range("F" & NumeroLigne).Value = "302" Then
Range("D" & NumeroLigne).Font.Color = RGB(0, 0, 255)
Range("E" & NumeroLigne).Font.Color = RGB(0, 0, 255)
Range("F" & NumeroLigne).Font.Color = RGB(0, 0, 255)
End If
If Range("f" & NumeroLigne).Value = "304" Then
Range("d" & NumeroLigne).Font.Color = RGB(255, 0, 0)
Range("e" & NumeroLigne).Font.Color = RGB(255, 0, 0)
Range("f" & NumeroLigne).Font.Color = RGB(255, 0, 0)
End If
If Range("f" & NumeroLigne).Value = "301" Then
Range("d" & NumeroLigne).Font.Color = RGB(255, 0, 255)
Range("e" & NumeroLigne).Font.Color = RGB(255, 0, 255)
Range("f" & NumeroLigne).Font.Color = RGB(255, 0, 255)
End If
If Range("i" & NumeroLigne).Value = "402" Then
Range("g" & NumeroLigne).Font.Color = RGB(0, 0, 255)
Range("h" & NumeroLigne).Font.Color = RGB(0, 0, 255)
Range("i" & NumeroLigne).Font.Color = RGB(0, 0, 255)
End If
If Range("i" & NumeroLigne).Value = "404" Then
Range("g" & NumeroLigne).Font.Color = RGB(255, 0, 0)
Range("h" & NumeroLigne).Font.Color = RGB(255, 0, 0)
Range("i" & NumeroLigne).Font.Color = RGB(255, 0, 0)
End If
If Range("i" & NumeroLigne).Value = "401" Then
Range("g" & NumeroLigne).Font.Color = RGB(255, 0, 255)
Range("h" & NumeroLigne).Font.Color = RGB(255, 0, 255)
Range("i" & NumeroLigne).Font.Color = RGB(255, 0, 255)
End If
If Range("l" & NumeroLigne).Value = "402" Then
Range("j" & NumeroLigne).Font.Color = RGB(0, 0, 255)
Range("k" & NumeroLigne).Font.Color = RGB(0, 0, 255)
Range("l" & NumeroLigne).Font.Color = RGB(0, 0, 255)
End If
If Range("l" & NumeroLigne).Value = "404" Then
Range("j" & NumeroLigne).Font.Color = RGB(255, 0, 0)
Range("k" & NumeroLigne).Font.Color = RGB(255, 0, 0)
Range("l" & NumeroLigne).Font.Color = RGB(255, 0, 0)
End If
If Range("l" & NumeroLigne).Value = "401" Then
Range("j" & NumeroLigne).Font.Color = RGB(255, 0, 255)
Range("k" & NumeroLigne).Font.Color = RGB(255, 0, 255)
Range("l" & NumeroLigne).Font.Color = RGB(255, 0, 255)
End If
ETC...
NumeroLigne = NumeroLigne + 1
Wend
End Sub
Bonjour Amirals
https://mon-partage.fr/f/pLdfGI9m/
mais je regrette de t'avoir aider pour avoir taxé mon aide de "fastidieux", un grand Merci pour ta réaction assez typique de ton milieu professionnel
https://mon-partage.fr/f/pLdfGI9m/
mais je regrette de t'avoir aider pour avoir taxé mon aide de "fastidieux", un grand Merci pour ta réaction assez typique de ton milieu professionnel
Bonsoir,
Je suis désolé qu'une incompréhension se soit glissée dans la discussion. Je voulais d'abord lever le doute sur une phrase "Ce code fonctionne mais c'est fastidieux et il doit être possible de faire plus court." qui voulait qualifier ma manière de procéder et donc d'apprendre à simplifier mon code et qui a été comprise autrement et j'en suis responsable.
Ensuite je viens de récupérer le classeur avec ton code, clair et court pour réaliser la mise en couleur des divers classes. Il fonctionne très bien.
Je te remercie pour cette contribution.
amiralS
Je suis désolé qu'une incompréhension se soit glissée dans la discussion. Je voulais d'abord lever le doute sur une phrase "Ce code fonctionne mais c'est fastidieux et il doit être possible de faire plus court." qui voulait qualifier ma manière de procéder et donc d'apprendre à simplifier mon code et qui a été comprise autrement et j'en suis responsable.
Ensuite je viens de récupérer le classeur avec ton code, clair et court pour réaliser la mise en couleur des divers classes. Il fonctionne très bien.
Je te remercie pour cette contribution.
amiralS
Bonjour,
Il y a une incompréhension qui amène à vos commentaires et je reconnais mon erreur.la première phrase de ma réponse "Ce code fonctionne mais c'est fastidieux et il doit être possible de faire plus court" j'aurais dû la mettre en fin de message pour montrer qu'elle s'appliquait à ma méthode et non à vos réponseS
Pour ma part je veux juste dire que pour faire avancer les choses j'ai d'abord accédé à la demande de michel_m en joignant un fichier exemple puis comme je n'attends pas que l'on fasse le travail à ma place, je cherche en même temps pour apprendre. j'ai mis dans une réponse ce que j'avais élaboré comme solution à mon problème et c'est MA méthode que je trouve fastidieuse. Volontairement j'ai rempli le cadre intitulé "Votre réponse" (donc la mienne pour moi et ainsi informer les contributeurs de ce que je fais de mon côté) et non les cadres "commenter la réponse de michel_m" , et "commenter la réponse eriiic".
Je vous remercie d'avoir pris le temps de me répondre
amiralS
Il y a une incompréhension qui amène à vos commentaires et je reconnais mon erreur.la première phrase de ma réponse "Ce code fonctionne mais c'est fastidieux et il doit être possible de faire plus court" j'aurais dû la mettre en fin de message pour montrer qu'elle s'appliquait à ma méthode et non à vos réponseS
Pour ma part je veux juste dire que pour faire avancer les choses j'ai d'abord accédé à la demande de michel_m en joignant un fichier exemple puis comme je n'attends pas que l'on fasse le travail à ma place, je cherche en même temps pour apprendre. j'ai mis dans une réponse ce que j'avais élaboré comme solution à mon problème et c'est MA méthode que je trouve fastidieuse. Volontairement j'ai rempli le cadre intitulé "Votre réponse" (donc la mienne pour moi et ainsi informer les contributeurs de ce que je fais de mon côté) et non les cadres "commenter la réponse de michel_m" , et "commenter la réponse eriiic".
Je vous remercie d'avoir pris le temps de me répondre
amiralS
https://mon-partage.fr/f/rwQTMA0Q/