Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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.
 

cedric45

XLDnaute Nouveau
Ton message fais sens, car le code est en 21,xxx alors que je renseigne mes cellules en 21.xxx.
Une bonne avancée en tout cas reste a retrouver les codes couleurs et automatiser l’exécution a l'ouverture du classeur
 

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()
 

cedric45

XLDnaute Nouveau
Oui j'ai réussi et je te remercie de m'avoir partagé ton code.
je suis en train d'ajouter les lignes + couleur et ensuite viendra l'excution automatique.
J'applique le code a chaque feuille du classeur, c'est bien cela ?
 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…