mettre en forme une ligne en fonction de la forme d'une plage de cellules

zeldanat28

XLDnaute Nouveau
Bonsoir,

J'ai créé un tableau avec des listes de choix et des MFC.
Dans une cellule où j'ai une liste de choix, je souhaite, une fois le choix effectué (initiales), colorier les caractères de la ligne en fonction de la couleur de la cellule contenant les mêmes initiales.
En fonction du fichier ci-joint :
- onglet 2009
- en cellule H9, je choisis les initiales NBL
- je souhaite que la ligne entière soit de la même couleur que la cellule C18
et ainsi de suite ...

Pour info, j'ai déjà mis une MFC pour colorier une ligne entière en gris si le choix en colonne F est "GPA"
Je pourrais faire de même pour ma nouvelle demande, mais çà impliquerait d'additionner tout un tas de MFC !
 

Pièces jointes

  • Plan de charge RO PCI V4.xls
    231.5 KB · Affichages: 55
  • Plan de charge RO PCI V4.xls
    231.5 KB · Affichages: 56
  • Plan de charge RO PCI V4.xls
    231.5 KB · Affichages: 58

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : mettre en forme une ligne en fonction de la forme d'une plage de cellules

Bonsoir zeldanat28,

Une piste avec une procédure évènementielle dans le module de la feuille '2009'.

Attention: un changement de couleur ne provoque pas d'évènement change.

Donc si vous modifiez les couleurs de référence des polices des cellules C16 à C19, il faudra soit re-sélectionner un RO pour provoquer un 'évènement 'Change' soit cliquer sur le bouton 'Couleur' pour mettre les bonnes couleurs.

Le code:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xCell As Range
    If Target.Column = Range("H1").Column And Target.Row >= Range("H3").Row _
                And Target.Row <= Range("H10").Row And Target.Count = 1 Then CouleurLigne
End Sub

Sub CouleurLigne()
Dim i As Long, xCell As Range, xInitial As Range
    For Each xCell In Range("H3:H10")
        Set xInitial = Nothing
        Set xInitial = Range("C16:C19").Find(what:=xCell(1, 1), LookIn:=xlValues, lookat:=xlWhole)
        If Not xInitial Is Nothing Then
            Range("A" & xCell.Row & ":K" & xCell.Row).Font.Color = xInitial.Font.Color
        Else
            Range("A" & xCell.Row & ":K" & xCell.Row).Font.Color = RGB(0, 0, 0)
        End If
    Next xCell
End Sub

Nb: J'ai supprimé toutes les feuilles du classeur (sauf la feuille 2009) pour l'alléger en téléchargement sur le site.
 

Pièces jointes

  • Plan de charge RO PCI V4 -v2.xls
    55 KB · Affichages: 71

zeldanat28

XLDnaute Nouveau
Re : mettre en forme une ligne en fonction de la forme d'une plage de cellules

bonjour,

Merci pour votre réponse. J'ai réussi à créer la macro dans mon classeur mais uniquement sur l'onglet 2009.
Je n'arrive pas à le faire sur les autres onglets.
Pourtant j'ai créé la macro pour le classeur entier
En plus je ne me souvient plus comment j'ai fait !
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : mettre en forme une ligne en fonction de la forme d'une plage de cellules

Bonjour zeldanat28,

Merci pour votre réponse. J'ai réussi à créer la macro dans mon classeur mais uniquement sur l'onglet 2009.
Je n'arrive pas à le faire sur les autres onglets.
Pourtant j'ai créé la macro pour le classeur entier
En plus je ne me souvient plus comment j'ai fait !

Pas facile de déterminer la zone des tableaux dans les feuilles '2009' à '2013"' et 'Prospection' car la structure de vos données change d'une feuille à l'autre.
C'est mieux de garder les mêmes structures quand on veut faire les mêmes traitements sur des feuilles homologues!
ex:
  • Feuilles '2010' à '2013"' et 'Prospection': La cellule permettant de trouver la fin de tableau (cellule contenant "Nbre Dossiers") est en colonne C alors que sur la feuille '2009' elle est en colonne B
  • Sur la feuille 'Prospection', il y a deux cellules en colonne C contenant "Nbre Dossiers".
  • "Nbre Dossiers" n'est pas toujours écrit de la même manière: on trouve aussi "Nbre de dossiers".
  • Il peut y avoir des lignes vides intercalées dans certains tableaux.


Tout ceci pour dire:
  • J'ai remplacé les mentions "Nbre dossiers" ou autres à la fin de tableau par "Qté Dossiers".
  • J'ai déplacé les cellules de la feuilles '2009' pour amener la cellule contenant "Qté Dossiers" en colonne C.
  • La gestion d'évènement se fait dans les module des feuilles '2009' à '2013"' et 'Prospection' .
  • Les procédures de coloriage sont dans module1.
  • Le coloriage d'une feuille se produit quand on change une valeur dans la colonne H du tableau.
  • Le coloriage de toutes les feuilles se produit quand on clique sur le bouton 'Colorier tous les tableaux'.
  • Si vous ne modifiez que les couleurs de police des initiales dans une feuille => voir remarque du message #2.
  • Seules les feuilles utiles ont été conservées dans le classeur.
 

Pièces jointes

  • Plan de charge RO PCI V4 -v3.xls
    165.5 KB · Affichages: 62
Dernière édition:

Discussions similaires

Réponses
8
Affichages
221

Statistiques des forums

Discussions
312 782
Messages
2 092 070
Membres
105 180
dernier inscrit
Reidnal