> Tous les forums > Forum Bureautique
 EXCEL : recopie de la couleur d'une cellule
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
aligator_21
  Posté le 06/06/2018 @ 16:34 
Aller en bas de la page 
Petit astucien

Bonjour à tous,

Je vous soumets mon problème :

J'ai une table associant environ 50 valeurs en entrée à 50 valeurs en sortie (E1 associée à S1, E2 associée à S2....)

Dans la table des données, les valeurs en sortie ont une couleur (~30 couleurs différentes).

Contraintes :

- La même couleur peut être présente plusieurs fois.

- La table des données est dans un onglet spécifque

Le but : utiliser la fonction RECHERCHEV pour trouver la sortie Sx en fonction de Ex et colorer la cellule résultat avec la couleur de Sx dans la table de données.

En espérant avoir été clair.....

Lien vers une image externe

Merci de votre aide...

Publicité
ferrand
 Posté le 06/06/2018 à 17:17 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

Pas totalement... ! Mais où est ton fichier ?

aligator_21
 Posté le 06/06/2018 à 20:57 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

J'ai tenté une copie d'écran.... manifestement sans succès..

Voici le lien : https://cjoint.com/c/HFgs3C1xvkV

ferrand
 Posté le 07/06/2018 à 07:25 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

Pourquoi un double critère (Entrée et Description) là où un seul suffit !

Solution : évènement Change sur B3 et évènement SelectionChange sur B8:B17...

Je vois ça à mon retour, je doix partir...

A+

ferrand
 Posté le 07/06/2018 à 14:36 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

Pas d'apparition depuis, j'élimine donc ton double critère, et ne conserve que le E...

Pour faciliter les manipulations, j'ai mis la saisie de l'entrée en B3 sous liste déroulante...

J'ai aussi déclaré l'adresse de la plage de couleurs comme constante, ce qui facilitera son utilisation. A chaque valeur de E.. correspond une cellule de couleur. Et la cellule B5 doit être mise en couleur selon la valeur de B3.

Const PlgClr As String = "B8:B17"

Première action : changement de la valeur de B3 -

Cela déclenchera une procédure automatique de type Change :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lg%
If Target.Address = "$B$3" Then
If Target Like "E*#" Then
lg = CInt(Replace(Target, "E", ""))
Else
lg = 0
End If
Colorer lg
End If
End Sub

La procédure vérifie que c'est bien B3 qui est modifiée, que sa valeur est d'un type "E" suivi de chiffres, et elle récupère alors la partie numérique qui constitue l'index de ligne de la cellule de référence dans la plage couleurs. Elle lance une procédure de coloration en lui passant cet index. (Si on a effacé, la valeur de B3 ne correspond pas à une couleur, elle passe 0 à la procédure de coloration.)
Pourquoi une proc. de coloration distincte ? Parce que cette proc. ne sera pas la seule à l'utiliser...

Sub Colorer(idx As Integer)
Dim clr&
If idx > 0 Then
clr = Me.Range(PlgClr).Cells(idx, 1).Interior.Color
Else
clr = xlNone
End If
Me.Range("B5").Interior.Color = clr
End Sub

Deuxième action : changement d'une couleur dans la plage couleurs -

Un changement de mise en forme ne déclenche pas d'évènement Change, on ne peut donc s'appuyer que sur l'évènement SelectionChange, en considérant que si une cellule de la plage couleurs a été sélectionnée, la couleur a pu en être changée...

Mais, ce changement ne peut affecter, lors d'un changement de sélection que la cellule qui était sélectionnée auparavant, non celle qui vient d'être sélectionnée. Il faut donc mémoriser si une cellule sélectionnée appartient à la plage couleurs pour lors d'un changement de sélection pouvoir vérifier si la cellule précédemment sélectionnée en faisait partie. On déclare donc une variable destinée à recueillir l'adresse de la cellule sélectionnée lorsqu'elle fait partie de la plage couleur.

Public ClrOld As String

Nb- Variable publique, parce qu'elle sera amenée à être appelée de l'extérieur du module...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lg%
If Target.Count > 1 Then Exit Sub
If ClrOld <> "" Then
With Me.Range("B3")
If .Value Like "E*#" Then
lg = CInt(Replace(.Value, "E", ""))
Else
lg = 0
End If
End With
Colorer lg
End If
If Not Intersect(Target, Me.Range(PlgClr)) Is Nothing Then
ClrOld = Target.Address
Else
ClrOld = ""
End If
End Sub

Lors d'un changement de sélection, on veille à ce que la sélection soit constituée par une cellule unique, puis on vérifie la variable : si sa valeur est "", c'est que la sélection précédente n'était pas concernée par les couleurs, sinon on réaffecte la couleur en fonction de la valeur de B3 (on ne peut savoir si une couleur a été modifiée, ni si c'est celle qui colorait B5, donc sachant que la possibilité existe, on vérifie, ou plutôt on recolore parce que plus simple, ce qui aboutira dans la plupart des cas à remettre la même couleur...).

Nb- En fait on se sert de la variable comme d'une variable booléenne et on aurait donc pu se contenter d'une variable de ce type... mais des développements futurs pourront peut-être être amenés à utiliser l'adresse contenue dans la variable...

2e partie de la procédure : elle met à jour la variable en lui affectant l'adresse de la sélection actuelle, qui servira au prochain changement de sélection, la valeur "" si la sélection n'est pas dans la plage couleurs.

Il faut noter que si l'on change la couleur d'une cellule et que celle-ci correspond à la couleur de B5 selon la valeur de B3, la couleur sera modifiée en B5, mais lorsqu'on déplacera la sélection...

Lorsque l'on ouvre le fichier, les variables ne sont pas initialisées. Pour que le dispositif puisse s'appliquer dès le départ, on met en place une procédure à l'ouverture du fichier :

Private Sub Workbook_Open()
With Feuil1
.Activate
If Not Intersect(ActiveCell, .Range("B3:B18")) Is Nothing Then
Feuil1.ClrOld = ActiveCell.Address
End If
End With
End Sub

La proc. vérifie l'emplacement de la cellule active, et si elle se trouve dans la plage B3:B18, initialise la variable ClrOld.

Cordialement.

https://www.cjoint.com/c/HFhmJynru2u

NB- CJoint ayant pris la déplorable manie de transformer les extensions xlsm en xlsx, penser à rétablir l'extension xlsm après enregistrement et avant d'ouvrir le fichier.

aligator_21
 Posté le 07/06/2018 à 20:23 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Je te remercie pour cette réponse rapide, longue et très détaillée.

Je prendrai le temps ce we d'essayer de comprendre tout ça et de l'intégrer à mon fichier.

Encore merci et bonne soirée

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
8,00 €Câble antivol Ewent EW1241 (1.5 m, à combinaison) à 8 €
Valable jusqu'au 20 Octobre

Amazon fait une promotion sur le câble antivol Ewent EW1241 qui passe à 8 € seulement au lieu de 12 €. Ce câble de 1,5 m est universel et facile à utiliser avec n'importe quel ordinateur portable ou de bureau avec un slot de sécurité. intégré. Protégez votre ordinateur contre le vol grâce à la serrure à combinaison à 4 chiffres.


> Voir l'offre
149,99 €LEGO 10274 Creator Expert ECTO-1 SOS Fantômes à 149,99 €
Valable jusqu'au 18 Octobre

Amazon fait une promotion sur le LEGO 10274 Creator Expert ECTO-1 SOS Fantômes qui passe à 149,99 € au lieu de 180 €. Idéal pour les fans de SOS Fantômes et les passionnés de LEGO, ce modèle ECTO propose des heures de plaisir et une expérience de construction enrichissante pour les adultes. Le véhicule ECTO-1, qui mesure plus de 22,5 cm de haut, 47 cm de long et 16,5 cm de large, déborde de détails authentiques. Le set comporte 2352 pièces.


> Voir l'offre
69,99 €Casque gamer Logitech G635 (DTS Headphone : X v2.0) pour PC, Mac, XBox, PS4, Switch à 69,99 €
Valable jusqu'au 18 Octobre

Amazon fait une belle promotion sur le casque gamer Logitech G635 qui passe à à 69,99 € livré gratuitement alors qu'on le trouve ailleurs à partir de 120 €. Ce casque est compatible PC, Mac, Xbox One, PS4 et Nintendo Switch. Plongez au coeur de l'action avec le casque Logitech G635 et son son surround DTS Headphone:X 2.0. Ce dernier crée une précision positionnelle exceptionnelle en jeu pour que vous puissiez entendre vos ennemis se faufiler derrière vous et ainsi anticipez leurs attaques. Équipé de transducteurs Pro-G 50 mm en maillage hybride vous allez entendre encore plus de détails avec un son d'une grande profondeur et d'une clarté incroyable. De plus, il est équipé d'un microphone unidirectionnel avec fonction de sourdine ! Quant au rétro-éclairage Lightsync RGB entièrement personnalisable, il réagira aux actions se passant dans votre jeu pour une immersion encore plus grande.


> Voir l'offre

Sujets relatifs
Changement couleur cellule excel / mise en forme conditionnelle / formule
Plus de recopie de cellule sur excel 97
(Macro Excel) Sélectionner cellule en fonction de sa couleur
Excel 2007 couleur dans une cellule non imprimable
couleur dans cellule excel
excel 2007 cellule en couleur dans 10ans ?
excel 2007 cellule en couleur après la date ?
tableur excel+cellule couleur
macro de recopie de la couleur fond de la cellule
Excel: lier couleur cellule entre 2 feuilles
Plus de sujets relatifs à EXCEL : recopie de la couleur d''une cellule
 > Tous les forums > Forum Bureautique