calculs dans un commentaire

Attila451

XLDnaute Occasionnel
Bonjour,
Je cherche à faire une boucle qui additionne 2 cellules d'une même ligne a2+b2, le résultat apparait en c3 puis est coupé pour être collé dans un commentaire en b2.
La boucle simplifiée à 3 lignes fonctionne sauf pour le collage du résultat, la formule est collée dans le commentaire au lieu du résultat, je ne trouve pas de methode pour coller la valeur et non la formule (en rouge)

Sub Evolution()
Dim num_lig As Long
num_lig = 2
For num_lig = 2 To 4

Cells(num_lig, 3) = Cells(num_lig, 1) + Cells(num_lig, 2)
Cells(num_lig, 2).Select
Cells(num_lig, 2).AddComment
Cells(num_lig, 2).Comment.Visible = False
Cells(num_lig, 2).Comment.Text Text:="AM:" & Chr(10) & ""
Cells(num_lig, 3).Select
ActiveCell.FormulaR1C1 = ""
Cells(num_lig, 2).Select
ActiveCell.Comment.Visible = True
Cells(num_lig, 2).Comment.Shape.Select True
Cells(num_lig, 2).Comment.Text Text:="Cells(num_lig, 1) + Cells(num_lig, 2)" & Chr(10) & ""
Cells(num_lig, 2).Select
ActiveCell.Comment.Visible = False
Next
End Sub

Sinon, au lieu d'effectuer le calcul dans une cellule, est il possible de le faire directement dans un commentaire ?
Merci d'avance pour vos lumières !
 

Pièces jointes

  • Commentaires.xlsm
    16.4 KB · Affichages: 36

Hieu

XLDnaute Impliqué
Bonjour,

Une idée, en supprimant les lignes inutiles :
VB:
Sub Evolution()
Dim num_lig As Integer
On Error Resume Next
For num_lig = 2 To 4
    Cells(num_lig, 2).AddComment
    Cells(num_lig, 2).Comment.Text Text:="Albert MARINI:" & Chr(10) & "" & Cells(num_lig, 1) + Cells(num_lig, 2)
Next
End Sub
 

job75

XLDnaute Barbatruc
Bonsoir Attila451, Hieu,
Code:
Private Sub Worksheet_Change(ByVal R As Range)
With [A2:B1000] 'plage de 2 colonnes à adapter au besoin
  Set R = Intersect(R, .Cells)
  If Not R Is Nothing Then
    For Each R In Intersect(R.EntireRow, .Cells).Rows 'si entrées/effacements multiples
      R.Cells(2).ClearComments 'RAZ
      If Application.Count(R) Then
        With R.Cells(2).AddComment
          .Text CStr(Val(Replace(CStr(R.Cells(1)), ",", ".")) + Val(Replace(CStr(R.Cells(2)), ",", ".")))
          .Shape.TextFrame.AutoSize = True 'ajustement des dimensions du commentaire
        End With
      End If
    Next
  End If
End With
End Sub
A+
 

Pièces jointes

  • Commentaires(1).xlsm
    22.3 KB · Affichages: 57

Attila451

XLDnaute Occasionnel
Bonjour,
Merci pour votre aide ! A mon niveau de débutant, je retiens le "on error resume next" qui permet d'éviter d'effacer tous les commentaires pour les regenerer, et la syntaxe text: avec le "&" pour générer le calcul dans le texte du commentaire, c'est ce qui me manquait !
Encore Merci !
 

Attila451

XLDnaute Occasionnel
Avec une petite variante si une ligne est vide :

Sub Calculs_Dans_Commentaires()

Dim num_lig As Long
num_lig = 2
On Error Resume Next

For num_lig = 2 To 10

If Cells(num_lig, 2) <> "" Then
Cells(num_lig, 2).AddComment
Cells(num_lig, 2).Comment.Text Text:="" & Cells(num_lig, 1) + Cells(num_lig, 2)
Else
Cells(num_lig, 2).ClearComments
End If

Next

End Sub
 

Discussions similaires

Réponses
8
Affichages
481

Statistiques des forums

Discussions
312 204
Messages
2 086 198
Membres
103 154
dernier inscrit
jefferson6488