1 votes

copier la couleur intérieure de la cellule cliquée vers la cellule active

J'ai une feuille de calcul qui comporte une clé de couleur en haut. Les utilisateurs sont censés définir manuellement la couleur des différentes cellules de la feuille de calcul en fonction du code couleur.

Idéalement, j'aimerais que les utilisateurs puissent mettre en surbrillance/sélectionner une ou plusieurs cellules de la feuille de calcul auxquelles ils souhaitent donner une couleur, puis, en cliquant sur la cellule de la clé de couleur, copier sa couleur intérieure dans les cellules qu'ils ont sélectionnées à l'origine.

Exemple : L'utilisateur sélectionne les cellules A17:D17 et souhaite définir la couleur intérieure de ces cellules de la même manière que la couleur intérieure de la cellule A2 en cliquant simplement sur la cellule A2.

Il peut alors vouloir changer la couleur de A17:D17 en la même couleur que A3 en cliquant sur la cellule A3.

Existe-t-il une macro, une fonction personnalisée ou une boîte combinée permettant de réaliser cette opération ?

Tout conseil serait grandement apprécié

Meilleures salutations, Ben

2voto

Andrew Scagnelli Points 1004

Ajouter un bouton de commande pour chaque couleur pour faire cela. Demandez aux utilisateurs de sélectionner des cellules, puis de cliquer sur le bouton pour changer la couleur. .ColorIndex de l Selection au bouton .ColorIndex .

1voto

Mark Nold Points 3553

@A. L'idée de Scagnelli est une bien meilleure implémentation de ce dont vous avez besoin. Il suffit d'avoir une série de boutons de couleur qui changent l'indice de couleur.

La raison en est que le suivi de la sélection précédente est très difficile. Lorsque vous faites une nouvelle sélection, je ne pense pas qu'Excel sache quelle était votre dernière sélection. Vous pouvez contourner ce problème en définissant une variable globale qui se souviendra de chaque dernière sélection. Ce n'est ni agréable ni recommandé mais c'est possible.

Vous aurez besoin de quelque chose comme ce qui suit dans votre feuille de travail ;

Option Explicit
Dim lastAddress As String

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If lastAddress <> "" Then
   Range(lastAddress).Formula = "Was selected before"
   Range(lastAddress).Interior.ColorIndex = 6
 End If

 lastAddress = Target.Address

End Sub

NB : Vous devrez vérifier si la sélection actuelle est une de vos cellules de couleur avant de lancer l'opération. .Interior.ColorIndex mais je vous laisse le soin de le faire :)

0voto

Anonymous Type Points 1774

En fait, il existe un moyen intégré de faire cela mais je ne sais pas si vos utilisateurs l'apprécieront ou non... s'ils ne l'apprécient pas, ajoutez un bouton de commande personnalisé pour copier la propriété colorIndex.

Processus manuel :

  1. Copiez la cellule contenant la clé de couleur.

  2. Cliquez sur la nouvelle cellule à laquelle vous souhaitez ajouter une couleur, puis faites un clic droit et sélectionnez coller spécial

  3. Sélectionnez l'option Format dans la fenêtre qui apparaît et cliquez sur ok.

La couleur, le formatage, etc. sont copiés sans la valeur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X