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