XL 2016 Couleur onglet+afficher/masquer onglet en fonction du résultat d'une cellule

Mulder

XLDnaute Junior
Bonjour à tous,
Je cale sur une problématique qui était au départ (en tout cas je le pensais) simple.
Sur un onglet (dans mon exemple, "feuille de variable"), je renseigne le résultat de tests (ici test1 et test2).
Ce résultat est repris en A1 de chaque onglet nommé test1 ou test2 en fonction du cas.
A terme, il est possible que ce que l'on mentionne dans "feuille de variable" ne soit plus renseigné manuellement mais soit le résultat d'une formule (cette précision peut avoir une incidence sur ma demande ci-dessous).

Je souhaiterai que si le résultat est "RAS", l'onglet se mette en vert et soit masqué ; s'il est "Ecarts !!", l'onglet se mette en rouge et reste affiché.
Ce en fonction de ce que l'on renseigne dans "Feuille de variable".

J'ai travaillé sur un bout de vba dans le code des onglets test1 et test2. Ca ne fonctionne pas, mais je ne vois pas trop pourquoi.

D'autre part, ici, pour le test, je prévois 2 onglets mais en réalité, j'en aurai 8.
Dois-je mettre le code dans chaque onglet ou puis-je le mettre dans le workbook, en nommant les feuilles 1 à 8 et en faisant une boucle pour qu'à chaque modification, peut importe où dans le classeur, il me relance le test sur les 8 onglets ?

D'avance merci !!
 

Pièces jointes

  • Test.xlsm
    17.2 KB · Affichages: 6

jemacado

XLDnaute Nouveau
Bonjour Mulder,
Voir fichier joint.
J'ai ajouté un bouton pour afficher les onglets masqués pour le test.
Suivant la sélection RAS ou Ecarts dans la feuille des variables, quand tu sélectionnes l'onglet, il se masque ou reste afficher.
Si d'autres questions...
Cdlt
jemacado
 

Pièces jointes

  • Mulder_Test.xlsm
    21.2 KB · Affichages: 15

Mulder

XLDnaute Junior
Bonjour jemacado,
Merci pour ton premier retour.
Ton approche oblige à cliquer sur l'onglet pour le faire disparaître (RAS) ou non (Ecarts).
Y'a-t-il moyen de le faire disparaître automatiquement dès la sélection de la valeur RAS dans "Feuille de variable", sans intervention humain supplémentaire ?
 

Mulder

XLDnaute Junior
Suite à échange MP avec jemacado...
Afficher/masquer, en fait je vais mettre de côté, car ça me pose problème à l'utilisation.
Mais RAS=vert et Ecart=Rouge, oui, c'est visible pour l'utilisateur qui saura que les onglets rouges sont à revoir.
Je remets un fichier qui correspond plus à ce que j'attends, car la première version ne correspond pas tout à fait au fonctionnement final que j'attends.

Le fonctionnement :
- feuille de variable contient des données que je dois expliquer (importées d'autres onglets, mais je simplifie ici) ;
- chacune de ces données est reprise dans une feuille de test (ici 2 tests, mais au final 8) pour que je détaille manuellement les données ;
- tant que ça n'est pas détaillé, l'onglet affiche "Ecart" et est en rouge ;
- une fois expliqué, l'onglet affiche "RAS" et est en vert ;
Ces deux conditions, j'arrive à les faire fonctionner une fois que le détail est mis dans les tests.

En revanche, en cas de nouvelle import de données externes qui modifient les données dans Feuille de variable, ce qui est repris dans chaque test a changé également, et ne correspond plus au détail.
Or, actuellement, les onglets restent en RAS/vert alors qu'ils devraient être Ecart/rouge.

Je pense qu'il faut que je passe par un Workbook Change, qui, au moindre changement dans l'ensemble du classeur, permet d'actualiser le contrôle RAS/Ecart des tests (ici test1 et test2 mais au final, test1 à 8 ; subtilité, les onglets de test ne s'appellent pas test mais portent des noms distincts ; je pense qu'il faut que je donne des noms de variables de type Sheet("test1") = 1 ; Sheet("test2") = 2 et que je fasse une boucle de style for i = 1 to 8, mais j'ai du mal à mettre tout ça en musique...)

VB:
Private Sub Workbook_Change(ByVal Target As Range)
    Sheet("Test1") = 1
    Sheet("Test2") = 2
    
    For i = 1 To 2
    
    Choix1 = "RAS"
    Choix2 = "Ecart"

    'If Not Intersect(Target, Cells(1, 1)) Is Nothing Then    'Si le changement à lieu dans la cellule A1 (intersection de la ligne 1 et de la colonne 1)
        Sheet (i)
        If [A1] = Choix1 Then    'Si la nouvelle c'est "oui" alors
            Me.Tab.Color = vbGreen
            'Me.Visible = xlSheetHidden
        End If
        
        If [A1] = Choix2 Then    'sinon
            Me.Tab.Color = vbRed
            'Me.Visible = xlSheetVisible
        End If 'fin de ma première condition
        Next i
  
End Sub

D'avance merci de m'aider sur le point où je pêche...
Mulder
 

Pièces jointes

  • Test.xlsm
    18.2 KB · Affichages: 11

Discussions similaires

Statistiques des forums

Discussions
312 107
Messages
2 085 355
Membres
102 873
dernier inscrit
yayo