Copier plusieurs cellules dans un commentaire

Bonjour,

Je tente de copier coller une série de cellules dans un commentaire :

Range("B4").AddComment
Range("B4").Comment.Text Text:=Range("B4").Value 

Puis je tente plusieurs

Range("B4").AddComment
Range("B4").Comment.Text Text:=Range("B4").Value & vbCrLf & Range("B5")' Je continue jusqu'à B14

Puis je me dis que ca pourrait être plus court ou dans une boucle mais ca marche à moitié vu que ca écrase le dernier enregistrement :

Sub celltocomment ()
 On Error Resume Next
Range("B4").AddComment
For I = 4 To 14
Range("B4").Comment.Text Text:=Range("B" & I).Value & vbCrLf
Next
End Sub

Dans ces moments là j'a envie de me manger une bastos car je me dis t'es à un poil mais comme t'es un bricoleur du dimanche

ca va te pourrir la vie 4 heures

Merci d'avance à qui verra mon erreur de réflexion syntaxique

Mon histoire de récupérer b5 à b14 dans le commentaire de b4 avance ...

Sub celltocomment()
Set commentaire = Range("B4").Comment
Range("B4").AddComment
For I = 5 To 14
Range("B4").Comment.Text Text:=commentaire.Text & Range("B" & I).Value & Chr(10)
Next
End Sub

Ca à l'air de marcher en demandant dans la boucle de reprendre la valeur actuelle dans le commentaire de B4.

Sauf que je dois lancer le script 2 fois pour avoir enfin le contenu des cellules B5àb14 dans le commentaire de B4

sinon c'est du vide aarfff Meeeeeeecredi !

Inverse les 2 premières ligne de ton code

Ajoute le commentaire en premier

Range("B4").AddComment

et ensuite tu asigne ton objet commentaire

Set commentaire = Range("B4").Comment

c'est pour ça que tu devais faire rouler ton code 2 fois.

Juste un problème, chez moi quand je roule le code et qu'il y a déjà un commentaire de créé, ça plante. Tu pourrais faire un test avant de créer le commentaire. Voici un exemple

Sub celltocomment()
'Définit une variable qui va contenir le texte
Dim monCommentaire As String
'Boucle sur les cellules et ajoute le texte à la variable
For I = 5 To 14
    monCommentaire = monCommentaire & Range("B" & I).Value & vbCrLf
Next

'Teste si un commentaire existe déjà dans la cellule
Dim testComment As Comment
Set testComment = Range("B4").Comment
If testComment Is Nothing Then
    'Ajoute le commantaire
    Range("B4").AddComment
End If

'Ajoute le texte au commentaire, si le commentaire existait déjà, écrase l'ancien texte
Range("B4").Comment.Text Text:=monCommentaire

End Sub

Salut Math je regarde ton code et je vais le tester car je venais justement poser le miens

J'ai mis en attaché le source qui contient ce code péniblement écrit toute la soirée et semble fonctionner

Je ne vais plus trop utiliser goto on erreur car il m'a fait perdre des heures niveau raisonnement.

Sub bouton()

Dim cmt As Comment

Dim I As Integer

With Range("A1")

    If Range("A1").Comment Is Nothing Then

        .AddComment

    For I = 2 To 15
        .Comment.Text Text:=Range("A1").Comment.Text & Range("A" & I).Value & Chr(10)
    Next
        .Comment.Shape.TextFrame.AutoSize = True
    Else

    End If

End With

End Sub

A tout de suite et merci d'avance math.


C'est super ton code fonctionne très bien aussi. J'avais inversé dans l'autre code les deux premières lignes mais le goto on error

ne me faisait pas voir qu'il fallait vérifier également si il y avait un commentaire dans la cellule avant de le créer et d'y introduire la boucle car le programme en douce plantait lamentablement.

Merci à toi pour tout !

53celltocomment.xlsm (17.18 Ko)

C'est "dangereux" d'utiliser resume next avec on error car justement ça masque des erreurs. Ton code est clean et en plus est plus simple que le miens. Super bonne soirée

Merci d'avoir regardé mon code

C'est clair mais parfois je n'arrive pas à ne pas l'utiliser. comme dans ce code ici que j'avais posté :

https://forum.excel-pratique.com/excel/erreur-d-execution-13-incompatibilite-de-type-t45284.html

Je reviens sur ce code ci car ce n'est pas la première fois que je tombe nez à nez avec un problème de boucle avec saut

put1 il est 1:13 ca commence à piquer les yeux

En faite j'essais de reproduire la même chôse mais c'est fois pour un deuxième groupe :

A1 reçoit A2:A15 dans le commentaire A1 'j'écris au format XX:XX pour faire plus court.

et

A16 reçoit A17:A30 dans le commentaire A16 '....

Si la boucle1 le fera sans problème en sautant 15 lignes pour placer le commentaire

la boucle2 elle va faire comment si elle est toujours destinée à 2to15 ... et là je bug ?

Allez demain sera une autre journée...

Sub bouton()

Dim cmt As Comment

Dim boucle1 As integer
Dim boucle2 As Integer

For boucle1 = 1 to 30 step 15 ' Je saute de 15 lignes
With Range("A"& boucle1 )

    If Range("A"& boucle1 ).Comment Is Nothing Then

        .AddComment

    For boucle2 = 2 To 15
        .Comment.Text Text:=Range("A"& boucle1 ).Comment.Text & Range("A" & boucle2).Value & Chr(10)
    Next boucle2
        .Comment.Shape.TextFrame.AutoSize = True
    Else

    End If

End With
Next boucle1
End Sub
Rechercher des sujets similaires à "copier commentaire"