Microsoft 365 VBA - valeur texte par défaut en couleur

JiBee

XLDnaute Nouveau
Bonjour,

Je travaille sur un fichier qui sera rempli par d'autres personnes.
Pour guider et donc faciliter le travail de saisie des collègues, je souhaite afficher par défaut des valeurs dans certaines cellules qui seront ensuite complétées.

J'ai donc créé cette ligne de code qui fonctionne :

VB:
If Cells(3, 3) = "" Then Cells(3, 3) = "IDF"

J'ai bien IDF qui s'affiche par défaut.

Mais je souhaite que la couleur de police "en attente de saisie" soit différente de la couleur de police une fois la saisie effectuée, je tente donc d'ajouter une suite à la ligne précédente, mais rien ne marche, voici un exmple de mes tentatives :

VB:
If Cells(3, 3) = "" Then Cells(3, 3) = "IDF" And Cells(3, 3).Font.Color = RGB(192, 192, 192)
Else     Cells(3, 3).Font.Color = RGB(0, 0, 0)

Je voudrais écrire en GRIS CLAIR si la cellule est vide, et donc remplie par défaut par "IDF"
et que la police soit NOIR si on vient saisir unevaleur dans cette cellule.

Quelqu'un pourrait m'aider svp ?

Merci à vous
 

Hasco

XLDnaute Barbatruc
Repose en paix
bonjour,

Vous essayez de tout faire en même temps, c'est pour ça que vous vous emmêler les pinceaux.

Dans les lignes suivantes, on s'occupe de la valeur en premier et ensuite on est la valeur.

VB:
With Cells(3, 3)
    If .Value = "" Then .Value = "IDF"
    If .Value = "IDF" Then .Font.Color = RGB(192, 192, 192) Else .Font.Color = RGB(0, 0, 0)
End With
' ATTENTION Si vous faites ça dans l'évènement change de la feuille vous risquez de tournez en boucle :
C3 change C3 qui change C3 etc
Là au deuxième appel cela s'arrêterait car C3 vaudrait "IDF" et ne serait plus vide mais, faites quand même attention.

Le deuxième if pourrait être fait dans l'interface par mise en forme conditionnelle.
 

JiBee

XLDnaute Nouveau
bonjour,

Vous essayez de tout faire en même temps, c'est pour ça que vous vous emmêler les pinceaux.

Dans les lignes suivantes, on s'occupe de la valeur en premier et ensuite on est la valeur.

VB:
With Cells(3, 3)
    If .Value = "" Then .Value = "IDF"
    If .Value = "IDF" Then .Font.Color = RGB(192, 192, 192) Else .Font.Color = RGB(0, 0, 0)
End With
' ATTENTION Si vous faites ça dans l'évènement change de la feuille vous risquez de tournez en boucle :
C3 change C3 qui change C3 etc
Là au deuxième appel cela s'arrêterait car C3 vaudrait "IDF" et ne serait plus vide mais, faites quand même attention.

Le deuxième if pourrait être fait dans l'interface par mise en forme conditionnelle.
Bonjour et tout d'abord merci pour votre réponse.

La solution VBA ne fonctionne pas, le
VB:
.Font.Color = RGB(192, 192, 192) Else .Font.Color = RGB(0, 0, 0)
bloque et passe en jaune, comme avec mes différentes tentatives.

Par contre, utiliser la mise en forme conditionnelle (que je maitrise un peu plus que le VBA) fonctionne tout à fait !!

Mon problème est donc résolu.

Merci et bon week end
 

Discussions similaires

Réponses
0
Affichages
137

Statistiques des forums

Discussions
312 100
Messages
2 085 293
Membres
102 853
dernier inscrit
jetstream69