[Excel] Fonction dont résultat est 1 couleur

Fermé
Jodko - 10 août 2010 à 18:41
 Jodko - 12 août 2010 à 15:11
Bonjour,

Je voudrais faire une fonction dans excel dont le résultat est une couleur.

Plus précisément, je voudrais que la fonction recopie la couleur d'une autre cellule.

Je me suis inspiré de la fonction suivante qui compte le nombre de cellules d'une couleur :

Function NBCOLOR(Cible As Range, oRef As Range) As Long
Dim o, i%, k%
Application.Volatile
k = oRef.Interior.ColorIndex
For Each o In Cible
If o.Interior.ColorIndex = k Then i = i + 1
Next
NBCOLOR = i
End Function

Et j'ai tenté le code suivant :

Function COPYCOLOR(Cible As Range) As Long
Dim o, k%
Application.Volatile
k = Cible.Interior.ColorIndex
ActiveCell.Interior.ColorIndex = k
End Function

Sauf que ça m'écrit juste 0 au lieu de recopier la couleur.

Bon, en même temps, je connais pas vraiment les Functions, et Activecell, c'est sûrement plus un truc de Macro.

Merci de votre aide !



A voir également:

2 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
12 août 2010 à 10:12
Salut,
Effectivement, les fonctions renvoient des valeurs, ne font pas des "actions" si tu préfères.
En l'occurence, tu peux effectivement passer par une macro.
Voici un exemple de code qui fonctionne lors d'un double clic dans une cellule :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
On Error Resume Next
    Set moncel = Application.InputBox(prompt:="Cliquez sur la cellule dont vous voulez la couleur", Type:=8)
If Err = 0 Then
On Error GoTo 0
ActiveCell.Interior.ColorIndex = moncel.Interior.ColorIndex
End If
End Sub

Pour le mettre en oeuvre : clic droit sur l'onglet de la feuille concernée / Visualiser le code.
Copier/coller tout le code puis fermer Visual Basic.
Et testez...
voici un classeur exemple
0
Bonjour,

Merci pour cette info. Est ce que tu pourrais me dire comment faire en sorte que la fonction appelle la macro ? Ce afin qu'il n'y ait aucune action nécessaire de la part de l'utilisateur si ce n'est un F9 car le changement de couleur n'implique pas de recalcul des fonctions.


Jodko.
0