Macro: Changement de couleur d'onglet sous condition
Résolu
OlivGFT
Messages postés
22
Date d'inscription
Statut
Membre
Dernière intervention
-
melanie1324 Messages postés 1504 Date d'inscription Statut Membre Dernière intervention -
melanie1324 Messages postés 1504 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai parcouru beaucoup de forum et je ne trouve pas mon bonheur...
Je cherche une macro excel qui en fonction d'une case me change la couleur de l'onglet:
Si G3 est "OK" alors l'onglet est vert
Si G3 est "PAS OK" alors l'onglet est Rouge.
Je souhaite que cette macro fonctionne pour l'ensemble de mes onglets ( ça peut aller jusqu'a 60 onglets) ( si possible sans inscrire le nom de mes onglets dans le code...)
Pour tous mes onglets c'est bien la case G3 spécifique à chaque onglets qui doit définir la couleur de l'onglet.
j'ai bien une macro que j'ai trouvé mais elle fonctionne que pour un nom d'onglet spécifique:
Sub Onglet()
Range("G3").Select
If Range("G3") = "OK" Then
ActiveWorkbook.Sheets("AZER").Tab.ColorIndex = 5
ElseIf Range("G3") = "PAS OK" Then
ActiveWorkbook.Sheets("AZER").Tab.ColorIndex = 3
End If
End Sub
Merci d'avance pour votre aide
Ps je suis gros gros débutant en macro (et je ne pige pas comment fonctionne les private sub )
J'ai parcouru beaucoup de forum et je ne trouve pas mon bonheur...
Je cherche une macro excel qui en fonction d'une case me change la couleur de l'onglet:
Si G3 est "OK" alors l'onglet est vert
Si G3 est "PAS OK" alors l'onglet est Rouge.
Je souhaite que cette macro fonctionne pour l'ensemble de mes onglets ( ça peut aller jusqu'a 60 onglets) ( si possible sans inscrire le nom de mes onglets dans le code...)
Pour tous mes onglets c'est bien la case G3 spécifique à chaque onglets qui doit définir la couleur de l'onglet.
j'ai bien une macro que j'ai trouvé mais elle fonctionne que pour un nom d'onglet spécifique:
Sub Onglet()
Range("G3").Select
If Range("G3") = "OK" Then
ActiveWorkbook.Sheets("AZER").Tab.ColorIndex = 5
ElseIf Range("G3") = "PAS OK" Then
ActiveWorkbook.Sheets("AZER").Tab.ColorIndex = 3
End If
End Sub
Merci d'avance pour votre aide
Ps je suis gros gros débutant en macro (et je ne pige pas comment fonctionne les private sub )
A voir également:
- Vba couleur onglet
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro maker - Télécharger - Divers Utilitaires
- Macro word - Guide
3 réponses
bonjour,
Tu as plusieurs solutions mais tout dépend de tes désirs :
Une macro qui fonctionne dès que tu changes la valeur de la cellule G3 :
dans visual basic éditor, tu copies colles pour chacun des onglets :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
if target.row = 3 and if target.column = 8 then
If Range("G3") = "OK" Then
ActiveWorkbook.Sheets("AZER").Tab.ColorIndex = 5
ElseIf Range("G3") = "PAS OK" Then
ActiveWorkbook.Sheets("AZER").Tab.ColorIndex = 3
end if
end if
End Sub
Si tu veux une macro qui balaie tout tes onglets en vérifiant la valeur de la cellule G3 :
sub marcochangementcouleuronglet ()
dim feuille as variant
for feuille =1 to sheets.count
If sheets(feuille).range("G3") = "OK" then
Activesheet.Tab.ColorIndex = 5
else
If Range("G3") = "PAS OK" Then
Activesheet.Tab.ColorIndex = 3
end if
end if
next
end sub
si tu veux que la macro fonctionne pour toutes tes feuilles sauf une feuille qui s'papelle synthèse par exemple :
sub marcochangementcouleuronglet ()
dim feuille as variant
for feuille =1 to sheets.count
if sheets(feuille).name <> "Synthèse" then
If sheets(feuille).range("G3") = "OK" then
Activesheet.Tab.ColorIndex = 5
else
If Range("G3") = "PAS OK" Then
Activesheet.Tab.ColorIndex = 3
end if
end if
end if
next
end sub
Tu as plusieurs solutions mais tout dépend de tes désirs :
Une macro qui fonctionne dès que tu changes la valeur de la cellule G3 :
dans visual basic éditor, tu copies colles pour chacun des onglets :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
if target.row = 3 and if target.column = 8 then
If Range("G3") = "OK" Then
ActiveWorkbook.Sheets("AZER").Tab.ColorIndex = 5
ElseIf Range("G3") = "PAS OK" Then
ActiveWorkbook.Sheets("AZER").Tab.ColorIndex = 3
end if
end if
End Sub
Si tu veux une macro qui balaie tout tes onglets en vérifiant la valeur de la cellule G3 :
sub marcochangementcouleuronglet ()
dim feuille as variant
for feuille =1 to sheets.count
If sheets(feuille).range("G3") = "OK" then
Activesheet.Tab.ColorIndex = 5
else
If Range("G3") = "PAS OK" Then
Activesheet.Tab.ColorIndex = 3
end if
end if
next
end sub
si tu veux que la macro fonctionne pour toutes tes feuilles sauf une feuille qui s'papelle synthèse par exemple :
sub marcochangementcouleuronglet ()
dim feuille as variant
for feuille =1 to sheets.count
if sheets(feuille).name <> "Synthèse" then
If sheets(feuille).range("G3") = "OK" then
Activesheet.Tab.ColorIndex = 5
else
If Range("G3") = "PAS OK" Then
Activesheet.Tab.ColorIndex = 3
end if
end if
end if
next
end sub
Merci. J'ai essayé celle ci
"Si tu veux une macro qui balaie tout tes onglets en vérifiant la valeur de la cellule G3 :
sub marcochangementcouleuronglet ()
dim feuille as variant
for feuille =1 to sheets.count
If sheets(feuille).range("G3") = "OK" then
Activesheet.Tab.ColorIndex = 5
else
If Range("G3") = "PAS OK" Then
Activesheet.Tab.ColorIndex = 3
end if
end if
next
end sub
Mais elle ne fonctionne que si je me place sur l'onglet spécifique.
Mon objectif est d'assigner cette macro à un bouton sur un onglet de présentation. Si je me place sur l'onglet présentation et que je clique sur ce bouton tous les onglets l'actualise en fonction de leurs propre valeur en G3. esce possible ?
"Si tu veux une macro qui balaie tout tes onglets en vérifiant la valeur de la cellule G3 :
sub marcochangementcouleuronglet ()
dim feuille as variant
for feuille =1 to sheets.count
If sheets(feuille).range("G3") = "OK" then
Activesheet.Tab.ColorIndex = 5
else
If Range("G3") = "PAS OK" Then
Activesheet.Tab.ColorIndex = 3
end if
end if
next
end sub
Mais elle ne fonctionne que si je me place sur l'onglet spécifique.
Mon objectif est d'assigner cette macro à un bouton sur un onglet de présentation. Si je me place sur l'onglet présentation et que je clique sur ce bouton tous les onglets l'actualise en fonction de leurs propre valeur en G3. esce possible ?
c'est moi qui ai commis une erreur, reprends cette macro :
sub marcochangementcouleuronglet ()
dim feuille as variant
for feuille =1 to sheets.count
If sheets(feuille).range("G3") = "OK" then
sheets(feuille).Tab.ColorIndex = 5
else
If sheets(feuille).Range("G3") = "PAS OK" Then
sheets(feuille).Tab.ColorIndex = 3
end if
end if
next
end sub
sub marcochangementcouleuronglet ()
dim feuille as variant
for feuille =1 to sheets.count
If sheets(feuille).range("G3") = "OK" then
sheets(feuille).Tab.ColorIndex = 5
else
If sheets(feuille).Range("G3") = "PAS OK" Then
sheets(feuille).Tab.ColorIndex = 3
end if
end if
next
end sub