IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Faire varier la couleur d'une feuille en fonction d'un critère


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 154
    Points : 60
    Points
    60
    Par défaut Faire varier la couleur d'une feuille en fonction d'un critère
    Bonjour

    Je voulais savoir s'il était possible de donner une couleur à une feuille en fonction d'un critère se trouvant sur celle-ci ?

    Par exemple, j'ai le nom du commercial en E3, et si c'est Jacques, alors la couleur de la feuille se met en bleu, si c'est Paul en vert, si c'est Martin en jaune ...

    D'avance Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par aweb Voir le message
    Bonjour,

    J'imagine qu'il faut comprendre : colorer le nom de l'onglet.

    Dans un module standard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Sub MettreEnCouleur(ByVal OngletEnCours As Worksheet, ByVal Prenom As String)
     
        With OngletEnCours
             Select Case Prenom
                    Case "Jacques"
                         .Tab.Color = RGB(68, 114, 196)
                    Case "Paul"
                         .Tab.Color = RGB(0, 255, 0)
                    Case "Martin"
                         .Tab.Color = RGB(255, 255, 0)
                    Case Else
                         .Tab.Color = RGB(255, 255, 255)
             End Select
       End With
     
    End Sub
    Dans le module de l'onglet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
       If Target.Count > 1 Then Exit Sub
     
       If Not Intersect(Target, Range("E3")) Is Nothing Then
          MettreEnCouleur ActiveSheet, Target
       End If
     
    End Sub

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 154
    Points : 60
    Points
    60
    Par défaut
    Bonjour

    Merci Eric pour votre réponse

    Je n'ai pas réussi à adapter votre code.
    Sur les dernières lignes, pour le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Case Else
     .Tab.Color = RGB(255, 255, 255)
    il indique
    Erreur d'exécution 424" Objet requis.
    Désolé, je suis vraiment débutant en VBA.

    D'avance Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub Mettreencouleurfeuille()
    '
    ' Mettreencouleurfeuille Macro
    '
     
    '
       ' ByVal OngletEnCours As Worksheet
       ' ByVal Prenom As String)
     
        With OngletEnCours
             Select Case Prenom
                    Case "Jacques"
                         .Tab.Color = RGB(68, 114, 196)
                    Case "Paul"
                         .Tab.Color = RGB(0, 255, 0)
                    Case "Martin"
                         .Tab.Color = RGB(255, 255, 0)
                    Case Else
                         .Tab.Color = RGB(255, 255, 255)
             End Select
       End With
     
    End Sub

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par aweb Voir le message
    Bonjour,

    Vu ce que je vois, pas sûr qu'on parle de la même chose...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 154
    Points : 60
    Points
    60
    Par défaut
    J'ai certainement mal posé mon besoin.

    J'ai un classeur excel avec plus de 400 feuilles, toutes identiques dans la construction.

    J'aimerais une macro qui me mettent la feuille (ou l'onglet) d'une couleur en fonction du nom qui est écrit en E3.

    L'idée étant que je passe pas manuellement sur toutes le feuilles pour lancer la macro, mais qu'elle passe automatiquement sur toutes les feuilles du classeur pour lire la cellule E3 et appliquer la bonne couleur à l'onglet.

    Merci encore

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par aweb Voir le message
    Quand tu parles d'onglet, c'est ça que tu essaies d'obtenir ?
    Pièce jointe 551576

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 154
    Points : 60
    Points
    60
    Par défaut
    oui, c'est bien çà

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par aweb Voir le message
    oui, c'est bien çà
    Tu as déjà des macros événementielles dans tes modules d'onglets ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 154
    Points : 60
    Points
    60
    Par défaut
    non, pas de macros évènementielles

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par aweb Voir le message

    Vue la quantité, ça va sans doute quand même mettre une plombe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Sub MettreAJourTousLesOnglets()
     
    Dim I As Integer
     
        With Application
             .ScreenUpdating = False
             .Calculation = xlCalculationManual
        End With
     
        For I = 1 To Sheets.Count
     
            With Sheets(I)
                 Select Case .Range("E3").Value
                    Case "Jacques"
                         .Tab.Color = RGB(68, 114, 196)
                    Case "Paul"
                         .Tab.Color = RGB(0, 255, 0)
                    Case "Martin"
                         .Tab.Color = RGB(255, 255, 0)
                    Case Else
                         .Tab.Color = RGB(255, 255, 255)
                 End Select
            End With
     
        Next I
     
        With Application
             .ScreenUpdating = True
             .Calculation = xlCalculationAutomatic
        End With
     
    End Sub

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par aweb Voir le message
    non, pas de macros évènementielles
    La macro que je viens de mettre en ligne traite l'ensemble du fichier.

    Pour injecter les macros événementielles dans les modules d'onglet, regarde le tuto de SilkyRoad https://silkyroad.developpez.com/VBA/VisualBasicEditor/

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 154
    Points : 60
    Points
    60
    Par défaut
    ça bloque sur la ligne Case "Jacques"Il indique
    erreur d'exécution 13" Incompatibilité de type
    Désolé...

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par aweb Voir le message
    C'est que tu as une cellule E3 dans un de tes onglets qui n'est pas alpha.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 154
    Points : 60
    Points
    60
    Par défaut
    OK, c'est que j'avais une formule en E3 pour aller chercher via une recherchev le nom de la personne sur une base.
    Ces cellules étaient en format "Standard".
    J'ai essayé en les mettant en format "Texte" et çà fonctionne.
    Est-ce qu'il y a un moyen de faire fonctionner la macro avec ces cellules E3 qui comprennent une formule et qui sont donc en format "Standard" ?

    Sinon, lorsque le critère n'est pas respecté, c'est la couleur blanche qui est appliquée (255,255,255).
    Je n'arrive pas à trouver le code pour les laisser en "Aucune couleur" ?

    D'avance Merci

  15. #15
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par aweb Voir le message
    Tu as combien d'onglets où cela ne fonctionne pas ? As-tu un repère dans le nom de ton onglet ou dans l'onglet pour indiquer que le code peut ou ne peut pas s'appliquer ?

    Sinon, pour ta couleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                                Case Else
                                     .Tab.ColorIndex = xlNone

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 154
    Points : 60
    Points
    60
    Par défaut
    En fait, à part 4 onglets généraux où cela fonctionne car je n'ai pas de valeur en E3, ensuite c'est sur tous les onglets que cela ne fonctionne pas, puisqu'ils ont tous la formule en E3.

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par aweb Voir le message
    E
    Tu pourrais indiquer ce que tu as comme formule ? Quels sont les noms de tes onglets généraux ?

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 154
    Points : 60
    Points
    60
    Par défaut
    oui

    La formule en E3 est celle-ci =RECHERCHEV(E2;LISTE!A:G;6;FAUX)

    Le nom de mes onglets dans lesquels E3 contient la formule sont par exemple
    MODELE
    AAR NEUTRE
    Biscuit
    Aminéa
    ...

    Les onglets généraux se nomment
    Produits
    CA
    Volume
    Sommaire
    Liste

    Merci

  19. #19
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par aweb Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    Sub MettreAJourTousLesOnglets()
     
    Dim I As Integer
     
        With Application
             .ScreenUpdating = False
             .Calculation = xlCalculationManual
        End With
     
        For I = 1 To Sheets.Count
     
            With Sheets(I)
                 Select Case .Name
                        Case "Produits", "CA", "Volume", "Sommaire", "Liste"
     
                        Case Else
                             Select Case .Range("E3").Text
                                    Case "Jacques"
                                         .Tab.Color = RGB(68, 114, 196)
                                    Case "Paul"
                                         .Tab.Color = RGB(0, 255, 0)
                                    Case "Martin"
                                         .Tab.Color = RGB(255, 255, 0)
                                    Case Else
                                         .Tab.ColorIndex = xlNone
                             End Select
                  End Select
            End With
     
        Next I
     
        With Application
             .ScreenUpdating = True
             .Calculation = xlCalculationAutomatic
        End With
     
    End Sub

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 154
    Points : 60
    Points
    60
    Par défaut
    SUPER !!!

    çà fonctionne à merveille.

    Merci beaucoup Eric

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 22/08/2013, 17h56
  2. [Toutes versions] Faire apparaître un message dans une cellule en fonction de différents critères
    Par niiiiiiiiiico dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 26/04/2013, 14h43
  3. [plot] Faire varier la couleur d'une courbe
    Par christophe_halgand dans le forum MATLAB
    Réponses: 4
    Dernier message: 25/01/2008, 18h11
  4. Réponses: 4
    Dernier message: 07/02/2007, 23h33
  5. [VBA-E]Faire varier la couleur d'une cellule
    Par benoue dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 24/03/2006, 16h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo