Function VBA fonctionnant sur une autre feuille

Bonjour,

Je souhaiterais que ma Function fonctionne sur une autre feuille.

Elle marche sans problème sur la feuille ou sont les formules mais ce n'est pas le cas sur une autre feuille (onglet_2).

Je ne suis pas expert en VBA, je souhaites votre aide. merci !

8test.xlsm (20.44 Ko)

Le code est le suivant :

Function COLORIER(s, valeur)
Application.Volatile
Set f = Sheets(Application.Caller.Parent.Name)
Select Case valeur
Case Is = "OK"
couleur = RGB(66, 186, 151)
Transparency = 0.75
Case Is = "KO"
couleur = RGB(192, 0, 0)
Transparency = 0.75
End Select
f.Shapes(s).Fill.ForeColor.RGB = couleur
f.Shapes(s).Fill.Transparency = Transparency
End Function

Bonjour,

Je n'ai pas ouvert le fichier, mais si j'ai bien compris la problématique, voilà un essai :

Function COLORIER(s, valeur, NomFeuille)
    Application.Volatile
    Set f = Sheets(NomFeuille)
    Select Case valeur
        Case Is = "OK"
            couleur = RGB(66, 186, 151)
            Transparency = 0.75
        Case Is = "KO"
            couleur = RGB(192, 0, 0)
            Transparency = 0.75
    End Select
    f.Shapes(s).Fill.ForeColor.RGB = couleur
    f.Shapes(s).Fill.Transparency = Transparency
End Function

Bonjour à tous,

Une autre solution. La mise à jour se lance avec le bouton vert dans la barre d'accès rapide.

Bonjour,

Ma version :

pour chacune des feuilles du classeur, s'il y a des shapes (qui ont le meme nom ) alors elles auront ma meme couleur.

Peut etre Pedro a raison A demande approximative........

9test-1.xlsm (23.36 Ko)

Cdlt

Merci à vous 3 !

C'était simplement faire fonctionner cette macro sur d'autres feuilles.

Les shapes sont sur une feuille et les calculs sur une autre et cela ne fonctionnait pas séparément avec mon code.

La méthode d'Eric est plus complexe mais je vais essayer de la comprendre.

Pedro : dans ton code, je dois remplacer NomFeuille par Onglet_01 ?

Dans ma solution, il faut indiquer dans le tableau structuré t_Onglets, la liste des onglets concernés, bien entendu on suppose que les formes dans le tableau t_Formes sont bien présentes dans les onglets concernés.

Pedro : dans ton code, je dois remplacer NomFeuille par Onglet_01 ?

Non pas dans le code, mais lors de l'utilisation de la fonction dans la feuille. Il te suffit de donner le nom de la feuille sous forme de texte, par exemple :

=COLORIER("Forme1", "OK", "Onglet_01")
Rechercher des sujets similaires à "function vba fonctionnant feuille"