Appliquer formule en fonction de la couleur d'une cellule

Fermé
Bonsaiblue Messages postés 3 Date d'inscription lundi 23 novembre 2020 Statut Membre Dernière intervention 24 novembre 2020 - 24 nov. 2020 à 14:52
dabuek Messages postés 15 Date d'inscription jeudi 4 février 2016 Statut Membre Dernière intervention 3 janvier 2023 - 14 déc. 2020 à 10:50
Bonjour,

J'ai des tableaux dont certaines cellules sont colorées avec le code couleur : #FCE4D6
Et j'aimerais appliquer une formule.
Mais le soucis ou je bloque c'est que la formule dépend des cellules non colorées (avant et après la cellule en question), le but étant d'automatiser la formule pour chaque cellules colorées.


Exemple : Si on la cellule B3 est colorée alors on applique la formule suivante :
B3=$B$2+(($B$5-$B$2)/($A$5-$A$2))*(A3-$A$2)


En littéraire la formule serait :
nouvellevaleur = valeur_Notion_existante_juste_avant + ((valeur_Notion_existante_juste_après - valeur_existante_juste_avant)/(temps_existante_juste_après - temps_existant_juste_avant)) * (Nouveau_Temps - temps_existant_juste_avant)


Merci d'avance pour votre aide.

Configuration: Windows / Chrome 86.0.4240.198
A voir également:

1 réponse

dabuek Messages postés 15 Date d'inscription jeudi 4 février 2016 Statut Membre Dernière intervention 3 janvier 2023
14 déc. 2020 à 10:50
Bonjour,
Si je comprends bien votre problème, il faut utiliser une fonction If pour appliquer l'une ou l'autre formule, exact ?
Dans ce cas, comme il n'existe pas sous Excel (j'ai 2019 mais je ne pense pas que la fonction ait été créée sous 365 pour l'instant) une fonction qui permette cela, il suffirait de créer une fonction très simple sous VBA.
Si vous ne savez pas comment faire :
- Dans les options, activez votre onglet Développeur ;
- à partir de cet onglet, créez un nouveau module en cliquant sur le deuxième outil de la barre
d'outils (la bulle doit afficher "Nouveau module") ;
- Dans la fenêtre principale, intégrez ce code :

Function EstEnCouleur(MaCellule As Range) As Boolean
EstEnCouleur = False
If MaCellule.Interior.ColorIndex <> xlColorIndexNone Then
EstEnCouleur = True
End If

End Function


N'oubliez pas de sauvegarder le classeur sous format .xlsm (prenant en charge les macros)

Si vous souhaitez que cette fonction soit utilisable avec plusieurs classeurs différents, vous pouvez aussi faire en sorte d'avoir le classeur contenant le module ouvert en même temps que ceux sur lesquels vous travaillez : toutes les macros et les fonctions des classeurs ouverts fonctionneront aussi pour les autres ouverts.

La fonction a utiliser sera bien sûr Estencouleur(VotreRéférence), et elle renverra une valeur VRAI/FAUX ; du coup elle a sa place en premier paramètre d'une fonction SI().

Voilà, j'espère que cela pourra vous servir ! ;)
0