Bonjour,
Un essai avec une zone de texte [affichée / masquée] (un TextBox) :
Double clic dans une cellule : affiche la zone de texte pour saisie (permet de modifier un commentaire existant)
Entrée dans la zone de texte : valide le commentaire et masque la zone de texte. Note : si la zone de texte est effacée, Entrée efface le commentaire.
Échap. dans la zone de texte ou Clic sur une autre cellule : masque la zone de texte sans modifier le commentaire
Pour saisir un retour à la ligne dans la zone de texte : Maj+Entrée ou Ctrl+Entrée
Je n'ai pas essayé mais la longueur du texte est peut-être limitée à 255 caractères.
Le code :
Option Explicit
Public cible As Range
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
Set Me.cible = Target
Call SaisirCommentaire
Cancel = True
End If
End Sub
Private Sub SaisirCommentaire()
Me.cible.Font.Bold = False
With Me.TextBox1
.Top = Me.cible.Top
.Left = Me.cible.Offset(0, 1).Left + 10
.MultiLine = True
.Visible = True
If Me.cible.Comment Is Nothing Then
.Text = Me.cible.Text & " "
Else
.Text = Me.cible.Comment.Text
End If
End With
End Sub
Private Sub TextBox1_Change()
Me.TextBox1.Activate
End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal shift As Integer)
If KeyCode = 27 Then ActiveCell.Activate
If KeyCode = 13 And shift = 0 Then
With Me.cible
If Not .Comment Is Nothing Then .Comment.Delete
If Me.TextBox1.Text <> "" Then
.AddComment Me.TextBox1.Text
.Font.Bold = True
End If
.Offset(1).Activate
End With
End If
End Sub
Private Sub TextBox1_LostFocus()
Me.TextBox1.Visible = False
End Sub