Informations CouleurOnglet

Bonjour le forum

Avec l'autorisation de David, voici une fonction personnalisée du regretté Ti_(Thierry Pourtier) en hommage à sa mémoire.
Elle permet de changer la couleur de l'onglet à partir d'une fonction personnalisée utilisée dans une feuille de calcul.
Pour l'utiliser, entrez dans une cellule la formule =CouleurOnglet(SI(A1="ok";3;-1))
L'onglet passera en couleur à l'entrée de la valeur "ok" en A1

VB:
Function CouleurOnglet(ByVal Coul%)
'Changer la couleur d'onglet par une formule personnalisée
'by Ti_ (Thierry Pourtier) le 21-10-2006
If Coul < 0 Then Coul = -4142
Application.Caller.Worksheet.Tab.ColorIndex = Coul
CouleurOnglet = ""
End Function

Voici une variante ou, au premier recalcul, la couleur d'onglet prendra la couleur de fond (choisie parmi les couleurs standard) de la cellule passée en paramètre.

Code:
Function CouleurOnglet2(Target As Range)
'Changer la couleur d'onglet par une formule personnalisée
'by Ti_ (Thierry Pourtier) le 21-10-2006
'Variante 1 By Bernard_XLD, couleur d'onglet d'après la couleur de fond de la cellule passée en argument
Application.Volatile
Application.Caller.Worksheet.Tab.ColorIndex = Target.Interior.ColorIndex
CouleurOnglet2 = Target.Interior.ColorIndex
End Function

Voici une deuxième variante ou, au premier recalcul, la couleur d'onglet prendra la couleur de fond (choisie parmi les couleurs standard) de la cellule contenant la fonction personnalisée.

Code:
Function CouleurOnglet3(Optional Coul& = 0) 'le paramètre optionnel non utilisé évite d'avoir le message d'alerte de fonction sans paramètre
'Changer la couleur d'onglet par une formule personnalisée
'by Ti_ (Thierry Pourtier) le 21-10-2006
'Variante 2 By Bernard_XLD, couleur d'onglet d'après la couleur de fond de la cellule contenant la fonction
With Application
    .Volatile
    .Caller.Worksheet.Tab.ColorIndex = .ThisCell.Interior.ColorIndex
    CouleurOnglet3 = .ThisCell.Interior.ColorIndex
End With
End Function

Bien cordialement, @+
 

Pièces jointes

  • Fonction_CouleurOnglet3.xlsm
    13 KB · Affichages: 16
  • Fonction_CouleurOnglet2.xlsm
    12.9 KB · Affichages: 9
  • Fonction_CouleurOnglet.xlsm
    15.2 KB · Affichages: 7
  • Fonction_CouleurOnglet4.xlsm
    16.8 KB · Affichages: 18
Dernière édition:

steelmich

XLDnaute Nouveau
Bonjour,

Très bonne fonction que vous me faites découvrir là!

J'essaye depuis un certain temps de bricoler depuis la 2eme variante pour l'adapter a mon usage. Je m'explique:
J'ai un tas d'onglets pour suivre des étapes de ventes et production.

J'aimerais mettre en couleur les onglets automatiquement et cela fonctionne, mais quelqu'un sait comment faire pour changer la couleur en fonction des étapes? J'ai 4 a 5 étapes clefs? J'ai une liste déroulante pour donner les étapes ( ex : 1 - devis / 2 - production / 5 - facturation ) et je me suis dit que la 2e variante + mise en forme conditionnelle ca pourrais marcher. Mais je m'en sort pas.

Des idées ?
Merci bcp
 

steelmich

XLDnaute Nouveau
Merci pour la réponse rapide.
Désolé, je suis pas trop au niveau. J'ai un peu cherché comment le placer, mais je n'arrive pas a ce que ce cherche.

C'est bien la ligne 2 a remplacer? ".Volatile.Caller.Worksheet.Tab.ColorIndex = .ThisCell.Interior.ColorIndex"

Merci
Bonne après midi
 
re,

après quelques recherches, .displayformat n'est utilisable qu'en Vba pur, pas en fonction personnalisée.
il faut utiliser autre chose
voila une variation sur la couleur en valeur, de 1 à 56 dans les couleurs de base, de la cellule passée en argument.
Vous pouvez stocker dans cette cellule une formule au résultat variant selon l'étape(rester dans les valeurs de cellule de 0 à 56, 0 pour sans couleur)

Bien cordialement, @+
VB:
Function CouleurOnglet4(Target As Range)
'Changer la couleur d'onglet par une formule personnalisée
'by Ti_ (Thierry Pourtier) le 21-10-2006
'Variante 3 By Yeahou, couleur d'onglet d'après la valeur de la cellule passée en argument (de 0 à 56)
Application.Volatile
If IsNumeric(Target.Value2) Then
    Dim Coul&
    If Target.Value2 < 1 Then Coul = -4142 Else Coul = IIf(Target.Value2 > 56, 56, Target.Value2)
    Application.Caller.Worksheet.Tab.ColorIndex = Coul
    CouleurOnglet4 = ""
End If
End Function
 
Dernière édition:

steelmich

XLDnaute Nouveau
merci pour la réactivité, je vais essayer de arriver a mes fins avec tout ces éléments!

Je retravaille l'ensemble du ficher donc ca va prendre un peu de temps, mais c'est cool de pouvoir compter sur vos aides!
 
Re,

pour info, les 56 couleurs de base dans Excel

56 couleurs de base.png
 

LAETI-TOINOU

XLDnaute Occasionnel
Bonjour,
Cette fonction m'intéresse beaucoup.
Par contre, n'y connaissant rien en VBA, comment faut-il faire pour intégrer cette fonction dans un document ?
 
Bonjour LAETI-TOINOU, le forum

Il faut ouvrir l'éditeur VBE (avec Alt F11 par exemple), insérer un module standard et copier dedans la fonction qui vous intéresse. Après elle s'utilise comme une fonction standard (dans le fichier ou elle a été ajouté) et vous la trouverez dans les fonctions Excel, que vous pourrez filtrer sur "personnalisées".
Sinon, j'ai ajouté dans le premier post de la discussion quatre fichiers vierges avec juste la fonction, un pour chaque version.

Bien cordialement, @+
 

LAETI-TOINOU

XLDnaute Occasionnel
Bonjour LAETI-TOINOU, le forum

Il faut ouvrir l'éditeur VBE (avec Alt F11 par exemple), insérer un module standard et copier dedans la fonction qui vous intéresse. Après elle s'utilise comme une fonction standard (dans le fichier ou elle a été ajouté) et vous la trouverez dans les fonctions Excel, que vous pourrez filtrer sur "personnalisées".
Sinon, j'ai ajouté dans le premier post de la discussion quatre fichiers vierges avec juste la fonction, un pour chaque version.

Bien cordialement, @+
Bonsoir Yeahou,

Merci pour votre retour.
Par contre, je ne comprends vraiment pas le fonctionnement.
En effet, j'ai suivi les instructions ci-dessous :
"...Elle permet de changer la couleur de l'onglet à partir d'une fonction personnalisée utilisée dans une feuille de calcul.
Pour l'utiliser, entrez dans une cellule la formule =CouleurOnglet(SI(A1="ok";3;-1))
L'onglet passera en couleur à l'entrée de la valeur "ok" en A1..."

sur un des 4 fichiers que j'ai téléchargés, mais rien de ne se passe.

Aurais-je encore raté une étape.

Comme indiqué sur mes précédents post, je suis novice de chez novice, bien qu'EXCEL m'intéresse beaucoup.
Plus on apprend, plus on a envie d'apprendre (surtout grâce à ce forum).

Merci de bien vouloir m'apporter quelques précisions supplémentaires.

Bonne soirée.

Laëtitia
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
315 127
Messages
2 116 534
Membres
112 770
dernier inscrit
vetosalah