Macro Excel - Problème avec ActiveCell.Font.ColorIndex

Macro Excel - Problème avec ActiveCell.Font.ColorIndex - VB/VBA/VBS - Programmation

Marsh Posté le 11-03-2011 à 15:07:45    

Bonjour,
 
Je n'arrive pas à faire marché la fonction EcrireMessage (ou la fonction EcrireMessage qui est identique)
En effet cette fonction doit Écrire le message "Coucou" dans la cellule active et modifier la couleur du texte  
afin qu'il soit afficher en noir et non pas en blanc (valeur par défaut de ma cellule)
 
Voilà mes fonction:  
 
Essais 1:

Code :
  1. Public Function EcrireMessage2() As String
  2.     EcrireMessage2 = "Coucou"
  3.     With ActiveCell.Font
  4.         .Name = "Arial"
  5.         .FontStyle = "Normal"
  6.         .Size = 10
  7.         .Strikethrough = False
  8.         .Superscript = False
  9.         .Subscript = False
  10.         .OutlineFont = False
  11.         .Shadow = False
  12.         .Underline = xlUnderlineStyleNone
  13.         .ColorIndex = 1
  14.     End With
  15. End Function


 
Essais 2:

Code :
  1. Public Function EcrireMessage() As String
  2.     EcrireMessage = "Coucou"
  3.     Call Macro2
  4. End Function
  5. Sub Macro2()
  6.     With ActiveCell.Font
  7.         .Name = "Arial"
  8.         .FontStyle = "Normal"
  9.         .Size = 10
  10.         .Strikethrough = False
  11.         .Superscript = False
  12.         .Subscript = False
  13.         .OutlineFont = False
  14.         .Shadow = False
  15.         .Underline = xlUnderlineStyleNone
  16.         .ColorIndex = 1
  17.     End With
  18. End Sub


 
Dans les deux cas quand je fais dans ma cellule =EcrireMessage() ou =EcrireMessage2') le  
message "Coucou" mais pas en noir !!! La police de la case reste blanche !!!!
 
Merci d'avance pour votre aide.


Message édité par lezert le 11-03-2011 à 15:12:03
Reply

Marsh Posté le 11-03-2011 à 15:07:45   

Reply

Marsh Posté le 11-03-2011 à 16:18:15    

ColorIndex ne me semble pas être une propriété de la Font, mais être une propriété de Interior.
 
Essayer :

With ActiveCell.Font
        .Name = "Arial"
        .FontStyle = "Normal"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
    End With
ActiveCell.Interior.colorindex = 1

Reply

Marsh Posté le 14-03-2011 à 16:03:28    

Ca ne marche pas comme ca.
 
Une fonction ne colore pas une cellule. Une fonction ca renvoit une valeur en fonction ou pas de paramètre(s).
 
Si tu veux faire ce que tu veux, ca demande un peu de "passe-passe".
 
- Utiliser une fonction comme il se doit
- Passer par les evenements des feuilles Excel pour verifier la valeur de la derniere cellule "sélectionnée"
 
Exemple :
Module WorkSheet :

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Range(PlageActive).Value = "Coucou" Then
  3.     Range(PlageActive).Font.ColorIndex = 1
  4. End If
  5. End Sub
  6. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  7. If PlageActive = "" Then
  8.     PlageActive = Selection.Address
  9. End If
  10. PlageSuiv = PlageActive
  11. PlageActive = Selection.Address
  12. End Sub


 
Dans un module :

Code :
  1. Public PlageSuiv As String
  2. Public PlageActive As String
  3. Public Function EcrireMessage() As String
  4.     EcrireMessage = "Coucou"
  5. End Function


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 14-03-2011 à 16:28:13    

Merci pour ta réponse.
 
Par contre cela marche que si on sélectionne d'abord la cellule à la main.  
Mais si la cellule est mise à jour automatiquement, alors ça marche plus.
 
Comment faire pour que une mise à jour de cellule déclenche l'action ?
 
Merci d'avance.


Message édité par lezert le 14-03-2011 à 16:51:09
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed