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 Sub

ensuite 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 Sub

Math

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 Sub

A mettre dans le code d'une feuille. Cette solution peut être adaptée au classeur entier.

Illustration dans le fichier :

149slyboy.zip (8.74 Ko)

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

Si ton problème est résolu, n'oublie pas :

resolu
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

Rechercher des sujets similaires à "mettre couleur base defaut que noir"