Mettre une couleur de base par défaut autre que le noir
Bonjour
J'ai un problème à vous soumettre...J'ai fait une recherche exhaustive sur votre forum (et d'autres forums également) et je n'ai pas trouvé une réponse à cette question.
J'aimerais savoir comment changer la couleur de base d'une feuille sans pour autant changer la couleur de texte déjà inscrit dans cette feuille.
Exemple :
J'ai ma feuille, ligne, coulonne, entête, tout le tralala. j'inscrit, des "x", des "1", des dates, un peu de tout, partout dans cette feuille...Tout ça en noir.
Puis il survient une situation où, pour différencier l'avant et l'après, je dois changer de couleur de texte, genre tout mettre le nouveau texte en rouge.
Alors j'aimerais avoir un truc, une astuce, pour pourvoir changer la couleur du texte, sans être obliger de cliquer sur le bouton de "couleur de texte" à chaque fois.
J'aimerais souligner que l'option Mise en texte conditionnelle ne répond pas à cette situation. Je ne veux pas que tout les "x" soit en rouge ou que toute une colonne soit en bleu.
Je veux seulement qu'à un moment x, tout soit en noir, un moment y tout soit en rouge et un moment z tout soit en violet, etc.
En espérant être assez clair.
Merci de lire et de tenter de m'aider à trouver une solution à mon problème.
Sly
Bonjour Slyboy et bienvenue sur le forum,
Voici un petit code en VBA qui pourrait t'aider.
- Procedure ModeCorrection: Affiche un choix de couleur. La couleur choisi sera la couleur du texte entré.
- Procedure ModeNormal : Retour à la normale
- Le reste du code est pour afficher le choix de couleur
à placer dans un module
'****************************************************************************************
' Code pour afficher un dialog pour choisir une couleur et récupérer son code
' Source : http://www.mrexcel.com/forum/showthread.php?t=34891
'****************************************************************************************
Private Declare Function ChooseColor Lib "comdlg32.dll" Alias _
"ChooseColorA" (pChoosecolor As ChooseColor) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Type ChooseColor
lStructSize As Long
hwndOwner As Long
hInstance As Long
rgbResult As Long
lpCustColors As String
flags As Long
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Private Function ShowColor() As Long
Dim ChooseColorStructure As ChooseColor
Dim Custcolor(16) As Long
Dim lReturn As Long
ChooseColorStructure.lStructSize = Len(ChooseColorStructure)
ChooseColorStructure.hwndOwner = FindWindow("XLMAIN", _
Application.Caption)
ChooseColorStructure.hInstance = 0
ChooseColorStructure.lpCustColors = StrConv(CustomColors, _
vbUnicode)
ChooseColorStructure.flags = 0
If ChooseColor(ChooseColorStructure) <> 0 Then
ShowColor = ChooseColorStructure.rgbResult
CustomColors = StrConv(ChooseColorStructure.lpCustColors, _
vbFromUnicode)
Else
ShowColor = -1
End If
End Function
'****************************************************************************************
' Fin du code
'****************************************************************************************
' Affiche le choix des couleurs, si une couleur est choisi, le texte entré sera de cette
'couleur
Sub ModeCorrection()
With ThisWorkbook
.CouleurTexte = ShowColor
If .CouleurTexte > 0 Then
.AppliqueCouleur = True
Else
.AppliqueCouleur = False
End If
End With
End Sub
'Annule la couleur automatique des cellules
Public Sub ModeNormal()
ThisWorkbook.AppliqueCouleur = False
End Subensuite dans ThisWorkbook
-Procedure Workbook_SheetChange: à chaque changement dans une cellule, on vérifie si on veut changer la couleur avec la variable AppliqueCouleur, si oui on donne la couleur de la variable CouleurTexte
Public AppliqueCouleur As Boolean
Public CouleurTexte As Long
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If AppliqueCouleur Then
Target.Font.Color = CouleurTexte
End If
End SubMath
Bonjour math, slyboy, forum,
Voici une solution beaucoup plus simple (simpliste ?) qui pourrait convenir.
On met une couleur de remplissage à la cellule A1 (par exemple). Cette couleur sera considérée comme celle "par défaut" des prochains textes que l'on écrit, avec le code suivant :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If IsEmpty(Target) Then Target.Font.ColorIndex = [A1].Interior.ColorIndex
End SubA mettre dans le code d'une feuille. Cette solution peut être adaptée au classeur entier.
Illustration dans le fichier :
Merci Math et vba-new
J'ai essayé celle de vba-new et ça marche tempête....j'ai conservé la tienne également Math, ça peut être utile également.
Encore milles mercis.
Sly
vba-new a écrit :Si ton problème est résolu, n'oublie pas :
Non, non, je ne l'avais pas oublié....je l'ai testé un peu partout, ça marche toujours aussi bien
Merci encore la gang !!!
Sly
