Lier la couleur de fonds et de police de deux cellules?

James Sunderland

XLDnaute Junior
Bonjour à tous,

J'ai ce problème qui semble simple à résoudre et pourtant...

Comment lier la couleur du fonds et de la police, d'une cellule à une autre, en sachant bien entendu qu'elle pourra être changée?


Mon problème est simple: J'ai un grand tableau qui évalue la situation économique d'un pays en fonction de plusieurs critères colorés (couleur de la police et fonds en vert, noir ou rouge). Voulant faire une synthèse de ce grand tableau, à base des critères les plus importants, je dois obtenir les données essentielles telles qu'elles y sont présentées, dans un autre tableau. La couleur du fonds et des polices doit donc être préservée malgré un changement futur.

En d'autres terme, j'ai la cellule A1 en fonds rouge et police blanche. Je veux que B1 soit exactement présentée comme A1 même si celle-ci change de présentation et de contenu!

Comment faire? :(

Merci d'avance pour votre aide précieuse...

JS.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Lier la couleur de fonds et de police de deux cellules?

Bonjour James Sunderland, bienvenue sur XLD,

Il faut savoir que la simple modification des couleurs d'une cellule ne crée pas d'événement VBA.

Il faut utiliser un événement comme par exemple SelectionChange.

Dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
[B1].Interior.Color = [A1].Interior.Color
[B1].Font.Color = [A1].Font.Color
End Sub
Les changements de couleurs seront exécutés quand on modifiera la sélection.

A+
 

Modeste

XLDnaute Barbatruc
Re : Lier la couleur de fonds et de police de deux cellules?

Bonjour James Sunderland et bienvenue sur ce sacré forum :)

Les cas de figure sont multiples et bâtir une première proposition sur une hypothèse erronée serait du temps et de l'énergie perdus pour tous.
  • Les couleurs sont attribuées par Mise en Forme Conditionnelle ou "à la main"?
  • Quel est le volume des données à traiter (dans le tableau de synthèse, notamment)?
  • Qu'est-ce qui détermine que ce sera B1 qui devra reprendre le contenu et la mise en forme de A1?
  • Tu travailles sur une seule feuille de calcul, deux ... ou plus??
  • etc ...
Est-il possible de fournir, comme support à la réflexion, un exemplaire "allégé" de ton fichier, expurgé de toute information sensible ou confidentielle? Lequel fichier contiendrait des exemples concrets de ce que tu souhaites faire.

Oups! Salut job ... pas rafraîchi (la page, je veux dire! :eek:)
 

James Sunderland

XLDnaute Junior
Re : Lier la couleur de fonds et de police de deux cellules?

Bonjour James Sunderland et bienvenue sur ce sacré forum :)

Les cas de figure sont multiples et bâtir une première proposition sur une hypothèse erronée serait du temps et de l'énergie perdus pour tous.
  • Les couleurs sont attribuées par Mise en Forme Conditionnelle ou "à la main"?
  • Quel est le volume des données à traiter (dans le tableau de synthèse, notamment)?
  • Qu'est-ce qui détermine que ce sera B1 qui devra reprendre le contenu et la mise en forme de A1?
  • Tu travailles sur une seule feuille de calcul, deux ... ou plus??
  • etc ...
Est-il possible de fournir, comme support à la réflexion, un exemplaire "allégé" de ton fichier, expurgé de toute information sensible ou confidentielle? Lequel fichier contiendrait des exemples concrets de ce que tu souhaites faire.

Oups! Salut job ... pas rafraîchi (la page, je veux dire! :eek:)

Merci pour ta réponse.
Je poste ce fichier en lien, qui représente le tableau des USA.
Le volume à traiter est plutôt faible puisque je réalise le même tableau pour 5 autres pays.
Les couleurs sont mises en formes à la main puisque les unités varient souvent.
 

Pièces jointes

  • TEST.xlsx
    12.5 KB · Affichages: 94
  • TEST.xlsx
    12.5 KB · Affichages: 102
  • TEST.xlsx
    12.5 KB · Affichages: 105

James Sunderland

XLDnaute Junior
Re : Lier la couleur de fonds et de police de deux cellules?

Bonjour James Sunderland, bienvenue sur XLD,

Il faut savoir que la simple modification des couleurs d'une cellule ne crée pas d'événement VBA.

Il faut utiliser un événement comme par exemple SelectionChange.

Dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
[B1].Interior.Color = [A1].Interior.Color
[B1].Font.Color = [A1].Font.Color
End Sub
Les changements de couleurs seront exécutés quand on modifiera la sélection.

A+

Merci beaucoup pour votre réponse.
Serait-il possible de détailler cette procédure?
J'ai bien collé ce code, mais que faire après pour l'appliquer?
Pas facile pour moi..
Merci.
 

Pièces jointes

  • TEST.xlsx
    12.5 KB · Affichages: 43
  • TEST.xlsx
    12.5 KB · Affichages: 55
  • TEST.xlsx
    12.5 KB · Affichages: 54

job75

XLDnaute Barbatruc
Re : Lier la couleur de fonds et de police de deux cellules?

Re,

Sur votre fichier le plus simple paraît être de copier les cellules :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Copie [C:C], Range("F5:F" & Rows.Count)
'ici d'autres copies éventuellement
End Sub

Sub Copie(source As Range, dest As Range)
Dim c As Range
For Each dest In dest.SpecialCells(xlCellTypeConstants)
  Set c = source.Find(dest, , xlValues, xlWhole)
  If Not c Is Nothing Then c(1, 2).Copy dest(1, 2)
Next
End Sub
Fichier joint.

A+
 

Pièces jointes

  • TEST(1).xls
    46 KB · Affichages: 65
  • TEST(1).xls
    46 KB · Affichages: 70
  • TEST(1).xls
    46 KB · Affichages: 51

job75

XLDnaute Barbatruc
Re : Lier la couleur de fonds et de police de deux cellules?

Re,

Ah pardon, j'avais oublié de désactiver les événements !!

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Copie [C:C], Range("F5:F" & Rows.Count)
'ici d'autres copies éventuellement
End Sub

Sub Copie(source As Range, dest As Range)
Dim c As Range
Application.EnableEvents = False 'désactive les événements
On Error Resume Next 'sécurité
For Each dest In dest.SpecialCells(xlCellTypeConstants)
  Set c = source.Find(dest, , xlValues, xlWhole)
  If Not c Is Nothing Then c(1, 2).Copy dest(1, 2)
Next
Application.EnableEvents = True 'réactive les événements
End Sub
Fichier (2).

A+
 

Pièces jointes

  • TEST(2).xls
    52.5 KB · Affichages: 61
  • TEST(2).xls
    52.5 KB · Affichages: 76
  • TEST(2).xls
    52.5 KB · Affichages: 75

James Sunderland

XLDnaute Junior
Re : Lier la couleur de fonds et de police de deux cellules?

Job75, merci infiniment mais y a-t-il une autre méthode?

Je suis un peu désabusé car tout ceci est du chinois pour moi...
Comment se fait-il que Microsoft n'ait jamais pensé à donner la possibilité de faire des copier-coller en prenant en compte le changement des couleurs...
 

Discussions similaires

Statistiques des forums

Discussions
312 279
Messages
2 086 738
Membres
103 383
dernier inscrit
indric