Excel : Colorer une plage de cellule avec une

Résolu/Fermé
Zébulon - 4 janv. 2008 à 15:15
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 30 nov. 2011 à 12:10
Bonjour,

J'aimerai savoir si il est possible de colorer une plage de cellule en fonction de la valeur d'une cellule grace à une formule de calcul. Les plages de cellules concernées sont déja utilisées dans un format de cellules conditionnelles.

Il me faudrait un code couleur pour différents type d'appartement : T1;T2;T3;T4;T5;Studio ect.......
Je ne souhaite pas utiliser VBA si possible et préfére une solution du type formule imbriquée dans la mesure du possible.

Merci de votre contribution.

Cordialement
Daniel
A voir également:

30 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
5 janv. 2008 à 07:13
Bonjour,

Tu peux modifier les couleurs en T36:T40, pour que la mise à jour se fasse il faut modifier une cellule d'un appartement.
Si la legende se termine par D (duplex) la zone colorée passe de 4 à 8 lignes
Teste et dis moi si ça correspond à ce que tu voulais
http://www.cijoint.fr/cij805358412435.xls
eric
0
Merci Eric, c'est tout à fait ce que je voulais. Je l'ai testé, apparament cela fonctionne comme je l'espérais.

Seul petit problème le T4D mis sur le RDC colore les lignes en dessous le tableau. Est-il possible de borner la coloration?

De plus, serait-ce trop de te demander quelque explications afin que je puisse reproduire le code VBA sur d'autres grilles? Je découvre la programation VBA.

Dans tous les cas un grand merci pour ta collaboration.
Daniel
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
5 janv. 2008 à 19:39
T4D mis sur le RDC colore les lignes en dessous le tableau
Le duplex utilise 8 lignes contre 4 pour les autres apparts. Un duplex au RDC ne va pas jusqu'au 1er ? C'est un 1/2 duplex alors... :-)
C'est faisable de rechercher la bordure double trait mais c'est compliquer le prg et le jour où ce n'est plus cette bordure la coucleur part sur 65000 lignes... C'est mieux d'avoir une régularité dans le tableau pour eviter les traitement particuliers. Sinon on peut colorer systématiquement 4 lignes, ou seulement un bandeau d'une ligne. Pour cela agit sur le 1er parametre du .resize(lignes, colonnes)

Et si tu veux reproduire, clic-droit sur l'onglet de la feuille puis 'Visualiser le code' et coller le code suivant que je t'ai documenté :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim cel1 As Range, cel2 As Range
    If Intersect(Target, Range("ZoneCouleur")) Is Nothing Then Exit Sub ' si zone non concernée fini
    Application.ScreenUpdating = False 'désactive rafraichissement écran
    For Each cel1 In Range("ZoneCouleur") ' pour chaque cellule de ZoneCouleur
        For Each cel2 In Range("Legende") ' et pour chaque cellule de Legende
            If cel1.Value = cel2.Value Then
                'si même valeur alors mettre couleur de la légende
                ' sur 4 lignes (+4 si légende se termine par D), et sur 3 colonnes
                cel1.Resize(4 + (Right(cel2.Value, 1) = "D") * -4, 3).Interior.ColorIndex = cel2.Interior.ColorIndex
            End If
        Next cel2
    Next cel1
    Application.ScreenUpdating = True ' rétablir rafraichissement écran
End Sub


eric
0
Bonjour, Eric

Excuse moi de te relancer. Mais j'ai un petit problème lors de la recopie du code VBA sur une grille modèle.

J'ai un message "erreur d'éxécution '13' Imcompatibilité de type.
Le débogeur surligne la ligne " If cel1.Value = cel2.Value Then"

le curseur mis sur "cel1" fait apparaitre une bulle avec "cel1. value = erreur 2007"
le curseur mis sur "cel2" fait apparaitre une bulle avec "cel2. value = "T1" " ce qui est lla valeur de la première cellule mis en légende.

Si tu pouvais éclairer ma lanterne je t'en serais for reconnaisant.

Cordialement
Zébulon
0
Raymond PENTIER Messages postés 58397 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 26 avril 2024 17 094
7 janv. 2008 à 13:49
Bonjour, Zébulon.
Bien que ton sujet soit désormais résolu, mais au cas où tu aurais à traiter d'autres immeubles n'ayant pas la même configuration, je me permets quelques remarques pour travailler sans VBA :
* Au lieu d'appliquer une mise en forme conditionnelle unique pour toute la feuille, tu en fais une par groupe de 3 colonnes : en effet tu as au maximum 4 types de logements par tranche.
* Dans le cas du duplex, tu répètes en BD10 l'indication "T4D" figurant en BD6, au besoin en mettant une police de taille 1 ou 2.
* Tu n'expliques pas comment tu marques l'état de réservation/vente d'un logement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
9 janv. 2008 à 19:06
Bonsoir zébulon,

A-priori je dirais plus que c'est une erreur dans ta feuille qu'un problème de copie de macro.
Regarde quelle est la référence de la cellule cel1 au moment de l'erreur et si elle ne contient pas une valeur d'erreur sur la feuille.
Si oui il faut traiter cette erreur sur la feuille, si non ou si cette valeur d'erreur est 'normale' il faudra voir pour faire un traitement spécifique. Si cette cellule est dans une des colonnes masquées on pourrait aussi ne pas contrôler ces cellules.
Contrôle aussi ta zone "ZoneCouleur" si elle correspond bien à la zone interessante.
Difficile d'en dire plus sans la feuille en question
eric
0
Bonsoir Eric

J'ai regardé les zones nommées et je n'arrive pas à voir où j'ai commis une erreur.
Si tu as un peu de temps, merci de jeter un coup d'oeil à mon dossier, je te joins le lien.
http://www.cijoint.fr/cij52963993807.xls

Cette grille me sert de modéle pour les différentes opérations je la modifie en fonction de la configuration des opérations réalisées. Est-ce exploitable avec VBA?

Merci d'avance pour ta réponse.

Cordialement
Zébulon
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
10 janv. 2008 à 00:41
J'ai ajouter un contrôle en cas d'erreur dans une cellule et je ne traite plus également les colonnes masquées.
Je t'ai aussi ajouté 3 lignes en début de programme :
Const nbLigApp As Integer = 4
Const nbLigDuplex As Integer = 8
Const nbCol As Integer = 3
ça te permettra de modifier facilement le nombre de lignes à colorer pour un appart normal et un duplex (dernière lettre = D"), ainsi que le nombre de colonnes en cas d'évolution de ta feuille

http://www.cijoint.fr/cij896866836912.xls

Bonne soirée
eric
0
Bonjour,

Merci Eric. La macro modifiée fonctionne à merveille. J'ai suivi tes conseils je n'ai nommé que les colonnes visibles en ZoneCouleur.
J'ai appliqué la macro à la feuille grille PK en modifiant le nombre de ligne et de colonne.
Par contre j'ai du déplacer les colonnes Type au début de la feuille pour colorer les lignes.

Quelle est l'instruction pour colorer sur la gauche de cel1?

Aurais tu un ouvrage de référence à me conseiller pour apprendre les bases de VBA .

Encore un grand MERCI pour tes conseils et instructions.

Bonne soirée
Zébulon
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
11 janv. 2008 à 23:24
Bonsoir zébulon,

je n'ai nommé que les colonnes visibles en ZoneCouleur
C'est une bonne idée aussi de faire comme ça mais en fait je l'avais intégré dans la macro.

Pouir colorer à gauche de cel1 il suffit d'ajouter offset(nbLig,nbCol) après cel1 dans:
cel1.Resize(nbLigApp + (Right(cel2.Value, 1) = "D") * CorrectionDuplex * -1, nbCol).Interior.ColorIndex = cel2.Interior.ColorIndex
offset te crée un décalage de nbLig ligne et nbCol colonne par rapport à ta référence.
Pour décaler à gauche il te faut nbCol négatif et comme tu ne veux pas d'offset sur la ligne => nbLig =0

Ex pour un offset de 3 colonnes à gauche :
cel1.Offset(0,-3).Resize(nbLigApp + (Right(cel2.Value, 1) = "D") * CorrectionDuplex * -1, nbCol).Interior.ColorIndex = cel2.Interior.ColorIndex

Pour ce qui est des livres vba tu as par exemple 'le guide complet vba pour excel 2003' (micro application) qui était bien fait avec pas mal de petits exemples sans pour autant avoir du bourrage avec des pages et des pages de code.
Tu peux aussi aller faire un tour sur https://office.developpez.com/ ou tu trouveras des faq, tutoriels et aussi critique de qcq livre sur vba.

Bonne soirée
eric
0
Bonjour,
moi je cherche a mettre une couleur dans une case si une autre case contient quelque chose

c'est a dire si B1=x alors b2=couleur

merci d'avance pour votre réponse
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
30 nov. 2011 à 12:10
Bonjour
Tu te mets sur une vieillequestion de 2008, crée-toi ta propre question
eric
0