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

  • Initiateur de la discussion Initiateur de la discussion JiBee
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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,

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
68
Réponses
3
Affichages
230
Réponses
4
Affichages
137
Retour