XL 2016 Reproduire la mise en forme d'une cellule sur une autre page

cedric45

XLDnaute Nouveau
Bonjour a tous,
J'utilise un tableau excel avec plusieurs pages, sur la 1ere page je rentre les numéros de dossier (1/ligne) avec coordonnés et récapitulatif
en page 2 le pointage des heures passées sur chaque dossier
en page 3 les dépenses par dossier.

J'applique une couleur différente en fond de cellule pour chaque dossier (21.001, 21.002, 21.003...) et j'aimerai retrouver cette mise en forme sur les autres pages des que je rentre le numéro de dossier dans une cellule.

Avez vous une idée pour réaliser cette manipulation automatiquement ??

merci d'avance
 

Staple1600

XLDnaute Barbatruc
Re

Je n'ai pas parlé de solution.
Mais d'idée (tout comme toi d'ailleurs)
Idée qui serait la ... suivante: joindre un fichier Excel exemple afin qu'on puisse se faire une idée de la problématique, et avoir une base pour faire nos tests ;)[/ISPOILR]
 

cedric45

XLDnaute Nouveau
re,
en utilisant la mise en forme conditionnelle je crée une regle de valeur sur la cellule (21.001) avec un format de remplissage de couleur. je vais créer x regles que de dossier.
Pour le moment cela semble remplir mon besoin,
reste a trouver comment copier cette regle sur les autres pages, est ce possible ?
 

cedric45

XLDnaute Nouveau
non je n'avais pas fait attention a la 2eme partie du message.
voici le fichier.
Je crée la règle de valeur/couleur cellule sur la page 1 et ensuite avec l'outil reproduction de mise en forme j'applique sur les pages 2 et 3 du classeur. Avec cette solution je dois remettre en forme les bordures de cellule si elles sont différente dans les pages 2 et 3.
Ma nouvelle question est il possible lors de la création de la règle en page 1 des plages de selection sur les pages 2 et 3 ?
 

Pièces jointes

  • Classeur2.xlsx
    10.6 KB · Affichages: 15

Staple1600

XLDnaute Barbatruc
Re

Test OK chez moi
(NB: j'ai du changer les couleurs pour faire mes tests)
VB:
Sub test_mfc()
Dim ws As Worksheet, rng As Range
For Each ws In Worksheets
Set rng = ws.UsedRange
rng.FormatConditions.Delete
rng.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="21,005"
rng.FormatConditions(1).Interior.ColorIndex = 36
rng.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="21,004"
rng.FormatConditions(2).Interior.ColorIndex = 39
rng.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="21,003"
rng.FormatConditions(3).Interior.ColorIndex = 28
Next
End Sub
PS: Voir sur le net (si besoin) comment on éxécute une macro VBA dans Excel.
 

Staple1600

XLDnaute Barbatruc
Re

Ajout de la bordure pour la condition 1
VB:
Sub test_mfc_II()
Dim ws As Worksheet, rng As Range
For Each ws In Worksheets
Set rng = ws.UsedRange
rng.FormatConditions.Delete
rng.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="21,005"
rng.FormatConditions(1).Interior.ColorIndex = 36
rng.FormatConditions(1).Borders.ColorIndex = 3 'bordures
rng.FormatConditions(1).Borders.LineStyle = xlContinuous 'bordures
rng.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="21,004"
rng.FormatConditions(2).Interior.ColorIndex = 39
rng.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="21,003"
rng.FormatConditions(3).Interior.ColorIndex = 28
Next
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

=>cédric45
On a tous débuté un jour;)
Mais toi, et moi on a fait du chemin depuis le CP ;)
Donc toi et moi savons lire
Moi, je curieux de nature.
Toi, tu connais ta naure ;)
Mais si tu es curieux, tu sauras utiliser les ressources du Web pour trouver les infos nécessaires pour éxécuter du VBA.

Mais c'est Noel, alors je vais te faciliter la tâche ;)

NB: je ne joins plus de fichier Excel sur aucun forum depuis le 22 mai 1968, trois heures de l'aprés-midi.
 

Staple1600

XLDnaute Barbatruc
Re

Chez moi, le séparateur décimal est la virgule
Le code VBA proposé est le résultat pour sa grande part de l'enregistreur de macros
Enfin, j'ai testé le code sur le fichier exemple que tu as joint et comme précisé dans le message#8, le test est concluant.

J'en déduis que tu as réussis à éxécuter mon code VBA?

Pour une éxécution automatique, voir la procédure événementielle WorkBook_Open()
 

Staple1600

XLDnaute Barbatruc
Re

Voici une version plus courte (normalement avec les couleurs d'origine du fichier exemple)
Non le code parcourt toutes les feuilles du classeur actif
Donc il suffit de lancer la macro une seule fois
VB:
Option Explicit
Option Base 1
Sub test_mfc_III()
Dim ws As Worksheet, rng As Range, i%, couleurs, valeurs
valeurs = Array(21.003, 21.004, 21.005)
couleurs = Array(36, 40, 15)
For Each ws In Worksheets
Set rng = ws.UsedRange
rng.FormatConditions.Delete
For i = 1 To 3
rng.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:=valeurs(i)
rng.FormatConditions(i).Interior.ColorIndex = couleurs(i)
Next i
Next ws
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 312
Membres
102 860
dernier inscrit
fredo67