Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Microsoft 365Insérer une note dans une cellule = couleur dans cette cellule
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 !
Bonjour le forum. Une question, est-ce qu'il est possible si j'insère une note dans une cellule, que celle-ci prenne une couleur définie.
Merci d'avance.
Ca risque d'etre assez compliqué/lourd inutilement car il n'y a pas d'évenement VBA Worksheet qui correspond à "ajout de note".
Donc typiquement on serait obligé de surveiller SelectionChange (chaque changement de selection), sauvegarder la cellule dans une variable, et au prochain changement checker si la cellule sauvegardée a reçu un commentaire, auquel cas la colorier.
C'est un peu lourd vu que ça se lance à chaque clic. Ca donnerait quelque chose comme ceci :
VB:
Option Explicit
Private lastCell As Range
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.CountLarge = 1 And Not (lastCell Is Nothing) Then
If Not (lastCell.Comment Is Nothing) Then
' coloriage (en rouge)
lastCell.Interior.Color = vbRed
End If
End If
Set lastCell = Target
End Sub
Je plussoie à ce qu'a dit @Saboh12617 sur la lourdeur de l'évènement Worksheet_SelectionChange.
On peut utiliser une macro indépendante qu'on lancera quand on le désire. A la rigueur, on pourrait aussi l'associer à des évènements moins fréquents : sélection de la feuille concernée et ouverture du classeur, etc...
VB:
Sub CouleurNote()
Const PlageConcernee = "c:c,e:f,a5:a20" ' les cellules concernées: ici colonnes C, E à F et plage A5:A20
Dim z, x
Application.ScreenUpdating = False
For Each z In ActiveSheet.Range(PlageConcernee).SpecialCells(xlCellTypeComments)
For Each x In z: x.Comment.Shape.DrawingObject.Interior.Color = RGB(255, 240, 230): Next x
Next z
End Sub
nb: au départ les notes ont un fond jaune clair. Après la macro, les notes de la plage concernée (cellules bleu clair) ont un fond saumon clair.
Voyez le fichier joint et ce code dans ThisWorkbook qui tourne en arrière-plan :
VB:
Private Sub Workbook_Open()
Application.OnTime 1, "ThisWorkbook.ArrierePlan" 'lance la macro
End Sub
Private Sub ArrierePlan()
Dim t, c As Range, com As Comment
Do
t = Timer + 0.5 'temporisation de 0.5 seconde
While Timer < t And t < 86400: DoEvents: Wend
For Each c In ActiveSheet.UsedRange 'si le UsedRange n'est pas trop grand...
Set com = c.Comment
If com Is Nothing Then c.Interior.ColorIndex = xlNone Else c.Interior.Color = vbCyan
Next c
Loop
End Sub
Remarques :
- la macro ne tourne pas quand une autre macro s'exécute, elle redémarre quand celle-ci se termine
- elle prend peu de ressources si le UsedRange n'est pas trop grand
- sur Excel il y a bien d'autres programmes qui tournent en arrière plan.
Voyez le fichier joint et ce code dans ThisWorkbook qui tourne en arrière-plan :
VB:
Private Sub Workbook_Open()
Application.OnTime 1, "ThisWorkbook.ArrierePlan" 'lance la macro
End Sub
Private Sub ArrierePlan()
Dim t, c As Range, com As Comment
Do
t = Timer + 0.5 'temporisation de 0.5 seconde
While Timer < t And t < 86400: DoEvents: Wend
For Each c In ActiveSheet.UsedRange 'si le UsedRange n'est pas trop grand...
Set com = c.Comment
If com Is Nothing Then c.Interior.ColorIndex = xlNone Else c.Interior.Color = vbCyan
Next c
Loop
End Sub
Remarques :
- la macro ne tourne pas quand une autre macro s'exécute, elle redémarre quand celle-ci se termine
- elle prend peu de ressources si le UsedRange n'est pas trop grand
- sur Excel il y a bien d'autres programmes qui tournent en arrière plan.
Merci à vous tous pour votre aide. Je vais pouvoir avancer dans mon projet et pouvoir me consacrer aux autres tâches liés à mon projets.
Meilleures salutations
Merci à vous tous pour votre aide. Je vais pouvoir avancer dans mon projet et pouvoir me consacrer aux autres tâches liés à mon projets.
Meilleures salutations
Avec le fichier du post #4 on ne peut pas créer de nouveaux commentaires quand la macro tourne.
Pour y parvenir le plus simple est d'utiliser un UserForm que l'on ouvre par double-clic sur la cellule.
Le code de la feuille :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
UserForm1.Show
End Sub
Le code de l'UserForm :
VB:
Private Sub CommandButton1_Click()
ActiveCell.ClearComments
If TextBox1.Text <> "" Then ActiveCell.AddComment TextBox1.Text
Unload Me
End Sub
Private Sub UserForm_Initialize()
Dim com As Comment
Set com = ActiveCell.Comment
If Not com Is Nothing Then TextBox1 = com.Text
End Sub
- 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