Impossible d'utiliser AddComment en VBA
Bonjour,
Problème que je rencontre et qui ne doit certainement pas être grand chose mais sur lequel je bute malgré les informations que je glane à gauche et à droite.
Je parviens à lire le commentaire de la cellule active de ma feuille,.... mais impossible ensuite d'y écrire un autre commentaire en VBA.
J'ai systématiquement le message d'érreur " Erreur d'éxécution "1004" : Erreur définie par l'application ou par l'objet" dès la tentative d'éxécution du .AddComment
Ma feuille est toute simple, sans protection ni rien ... basique quoi !
Je ne comprends pas
Sub Lecture()
' Récupérer le contenu actuel du commentaire de la cellule sélectionnée
With ActiveCell
' Lecture du commentaire actuel
Commentaire = .Comment.Text
' Ecriture d'un autre commentaire
.AddComment
.Comment.Visible = False
.Comment.Text Text:=Commentaire + " --> ESSAIS"
End With
End SubMerci à qui pourra me dire mon erreur.
Bonjour,
Un essai en supprimant le commentaire avant de le réécrire ...
Sub Lecture()
' Récupérer le contenu actuel du commentaire de la cellule sélectionnée
With ActiveCell
' Lecture du commentaire actuel
Commentaire = .Comment.Text
' Ecriture d'un autre commentaire
.ClearComments ' supprimer avant de réécrire
.AddComment
.Comment.Visible = False
.Comment.Text Text:=Commentaire + " --> ESSAIS"
End With
End Subric
Merci Ric, cela fonctionne en effet.
Désormais mon texte se copie bien en commentaire de la cellule.
Cependant le fait de faire un .clearComments modifie les caractéristiques de présentation de mon commentaire.
Comment récupérer simplement toutes les caractéristiques de mise en forme de mon commentaire avant d'appliquer un .clearComments, ou au mieux qu'il n'y ait pas de modification de celui-ci lors du "vidage" ?
Si je récupère ces caractéristiques, sera-t-il facile de les ré-appliquer ?
J'ai essayé de passer par des ActiveCell.Comment.Shape.ShapeStyle =... ou autres, mais je n'obtiens que des messages d'erreur ...
Je sais ... je manque d'expérience à priori, et je compte humblement sur l'aide de mes aînés ... lol
Merci d'avance
Didier
- Messages
- 3'678
- Excel
- 365, 2019
- Inscrit
- 11/04/2020
- Emploi
- Formateur bureautique, dvpt de fichiers
Bonjour,
Et pourquoi pas juste ceci ?
Sub Lecture()
' Récupérer le contenu actuel du commentaire de la cellule sélectionnée
With ActiveCell
' Lecture du commentaire actuel
Commentaire = .Comment.Text
' Ecriture d'un autre commentaire
.Comment.Text Text:=Commentaire & " --> ESSAIS"
End With
End SubBonjour Libdedcid, le fil, le forum,
Voici ce que j'ai trouvé et qui pourrait aider à ton besoin ...
Si l'on peut gérer les propriétés ... l'on devrait pouvoir les lire ... mais je n'ai pas testé la lecture des propriétés ...
'''SOURCE : https://excel.developpez.com/faq/?page=Comment
Sub AjoutCommentaire()
Range("A1").AddComment
Range("A1").Comment.Text Text:="Le Forum Excel" & Chr(10) _
& "sur le site Developpez.com"
With Range("A1").Comment.Shape
.Width = 130 'Largeur commentaire
.Height = 90 'Hauteur
.OLEFormat.Object.Font.Size = 14 'Taille du texte
.OLEFormat.Object.Interior.ColorIndex = 34 'Couleur de fond
.TextFrame.Characters.Font.ColorIndex = 11 'Couleur de la police
.TextFrame.Characters.Font.Bold = True 'Ecriture gras
.OLEFormat.Object.Font.Name = "Bangle" 'Type de police
End With
End Subric
Waouuhhhhh
Merci Môssieu 21Formatic !!
C'était tellement simple que je suis passé "à côté" ....
Il me semblait pourtant avoir essayé cette manip mais apparemment ca ne doit pas être le cas puisque aujourd'hui j'obtiens le résultat escompté avec votre proposition simplissime.
Merci infiniment à 21Formatic et Ric pour leur aide.
Belle journée à tout le Forum.
- Messages
- 3'678
- Excel
- 365, 2019
- Inscrit
- 11/04/2020
- Emploi
- Formateur bureautique, dvpt de fichiers
Merci pour ce retour enthousiaste :)
Je n'ai fait qu'essayer aussi. Je n'en avais aucune idée avant ;)
Pour s'amuser ...
Lire les propriétés du commentaire de la cellule "R5" ...
Écrire un commentaire dans la cellule E4 dont le texte est lu dans B2 ...
Donner au commentaire de E4 les propriétés du commentaire de "R5" ...
Sub LireEtEcrireCommentaire()
With ActiveSheet.Range("R5").Comment.Shape
iWidth = .Width
iHeight = .Height
With ActiveSheet.Range("R5").Comment.Shape.OLEFormat.Object
IOLEFormat_Object_Font_Size = .Font.Size
IOLEFormat_Object_Interior_ColorIndex = .Interior.ColorIndex
IOLEFormat_Object_Font_Name = .Font.Name
End With
ITextFrame_Characters_Font_ColorIndex = .TextFrame.Characters.Font.ColorIndex
ITextFrame_Characters_Font_Bold = .TextFrame.Characters.Font.Bold
End With
With ActiveSheet.Range("E4")
.AddComment ' Ecriture d'un autre commentaire
.Comment.Visible = False
.Comment.Text Text:=ActiveSheet.Range("B2").Value
End With
With ActiveSheet.Range("E4").Comment.Shape
.Width = iWidth
.Height = iHeight
.OLEFormat.Object.Font.Size = IOLEFormat_Object_Font_Size
.OLEFormat.Object.Interior.ColorIndex = IOLEFormat_Object_Interior_ColorIndex
.TextFrame.Characters.Font.ColorIndex = ITextFrame_Characters_Font_ColorIndex
.TextFrame.Characters.Font.Bold = ITextFrame_Characters_Font_Bold
.OLEFormat.Object.Font.Name = IOLEFormat_Object_Font_Name
End With
End Subric
- Messages
- 3'678
- Excel
- 365, 2019
- Inscrit
- 11/04/2020
- Emploi
- Formateur bureautique, dvpt de fichiers
Bonjour Libdedcid, le fil, le forum,
Pour s'amuser ...
Lire les propriétés du commentaire de la cellule "R5" ...
Écrire un commentaire dans la cellule E4 dont le texte est lu dans B2 ...
Donner au commentaire de E4 les propriétés du commentaire de "R5" ...Sub LireEtEcrireCommentaire() With ActiveSheet.Range("R5").Comment.Shape iWidth = .Width iHeight = .Height With ActiveSheet.Range("R5").Comment.Shape.OLEFormat.Object IOLEFormat_Object_Font_Size = .Font.Size IOLEFormat_Object_Interior_ColorIndex = .Interior.ColorIndex IOLEFormat_Object_Font_Name = .Font.Name End With ITextFrame_Characters_Font_ColorIndex = .TextFrame.Characters.Font.ColorIndex ITextFrame_Characters_Font_Bold = .TextFrame.Characters.Font.Bold End With With ActiveSheet.Range("E4") .AddComment ' Ecriture d'un autre commentaire .Comment.Visible = False .Comment.Text Text:=ActiveSheet.Range("B2").Value End With With ActiveSheet.Range("E4").Comment.Shape .Width = iWidth .Height = iHeight .OLEFormat.Object.Font.Size = IOLEFormat_Object_Font_Size .OLEFormat.Object.Interior.ColorIndex = IOLEFormat_Object_Interior_ColorIndex .TextFrame.Characters.Font.ColorIndex = ITextFrame_Characters_Font_ColorIndex .TextFrame.Characters.Font.Bold = ITextFrame_Characters_Font_Bold .OLEFormat.Object.Font.Name = IOLEFormat_Object_Font_Name End With End Sub
ric
Non mais !
On ne va pas se laisser embêter par des propriétés de commentaires, quand même