Developpez.com

Club des développeurs et IT pro
Plus de 4 millions de visiteurs uniques par mois

FAQ ExcelConsultez toutes les FAQ

Nombre d'auteurs : 46, nombre de questions : 845, dernière mise à jour : 30 mars 2017 

 
OuvrirSommaireLes cellulesLes commentaires

L'exemple suivant insère un commentaire dans la cellule A1.

Vba
Sélectionnez

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 Sub
Créé le 14 avril 2007  par SilkyRoad
Vba
Sélectionnez

Sub ControleExistenceCommentaire()
    If Range("A1").Comment Is Nothing Then
        MsgBox "Il n'y a pas de commentaire dans la cellule A1."
        Else
        MsgBox "Il y a un commentaire dans la cellule A1."
    End If
End Sub
Créé le 14 avril 2007  par SilkyRoad

Par défaut, un triangle rouge apparait dans l'angle supérieur droit de la cellule si elle contient un commentaire.
Vous pouvez ainsi les identifier facilement.

Vous pouvez aussi faire apparaitre tous les commentaires dans la feuille en utilisant le menu Affichage/Commentaires.

La macro suivante permet de récupérer l'adresse des cellules contenant des commentaires.

Vba
Sélectionnez

Sub listeCommentairesfeuilleActive()
    Dim Cmnt As Comment
    Dim Liste As String
 
    'Compte le nombre de commentaires dans la feuille
    If ActiveSheet.Comments.Count = 0 Then Exit Sub
 
    'Boucle sur les commentaires
    For Each Cmnt In ActiveSheet.Comments
        'Récupère l'adresse de la cellule et le contenu
        Liste = Liste & Cmnt.Parent.Address & " = " & _
        Cmnt.Text & Chr(10) & Chr(10)
    Next Cmnt
 
    MsgBox Liste
End Sub




Cet autre exemple boucle sur les commentaires de la feuille active et colore en rouge les chaînes de caractères égales à "DVP".

Vba
Sélectionnez

Sub modificationCommentaires()
    Dim Cmnt As Comment
    Dim Cible As String
    Dim i As Integer, Valeur As Integer
 
    If ActiveSheet.Comments.Count = 0 Then Exit Sub
 
    For Each Cmnt In ActiveSheet.Comments
        Cible = Cmnt.Text
 
        For i = 1 To Len(Cible)
            Valeur = InStr(i, Cible, "DVP", vbTextCompare)
            If Valeur = 0 Then
                Exit For
                Else
                Cmnt.Shape.TextFrame.Characters(Valeur, 3).Font.ColorIndex = 3
                i = Valeur + 4
            End If
        Next i
    Next Cmnt
End Sub
Créé le 14 avril 2007  par SilkyRoad

Vous pouvez utiliser l'option "Commentaire" du collage spécial:
Menu Edition/Collage spécial/Option Commentaires, après avoir copié la cellule contenant le commentaire.


L'argument xlPasteComments permet d'effectuer la même action par macro:

Vba
Sélectionnez

Sub collageCommentaire()
    'Copie le contenu de la cellule A1
    Range("A1").Copy
    'Colle le commentaire dans la cellule A2
    Range("A2").PasteSpecial Paste:=xlPasteComments
End Sub
Créé le 14 avril 2007  par SilkyRoad
Vba
Sélectionnez

Range("A1").Comment.Shape.TextFrame.AutoSize = True
Créé le 14 avril 2007  par SilkyRoad
Vba
Sélectionnez

With Range("A1")
    .AddComment
    .Comment.Shape.Fill.UserPicture "C:\dossier\NomImage.jpg"
End With



Remarque:
Les images insérées risquent d'augmenter sensiblement la taille de vos classeurs.

Créé le 14 avril 2007  par SilkyRoad
Vba
Sélectionnez

Sub CopieContenuCommentaires_Word()
    Dim Cmt As Comment
    Dim WordApp As Object
 
    'Ouvre une session Word
    Set WordApp = CreateObject("Word.Application")
 
    With WordApp
        .Visible = True
        'Ajoute un nouveau document dans Word
        .Documents.Add
 
        'Boucle sur les commentaires de la Feuil1
        For Each Cmt In Worksheets("Feuil1").Comments
            .Selection.TypeText "Cellule: " & Cmt.Parent.Address & vbCrLf & Cmt.Text
            .Selection.TypeParagraph
            .Selection.InsertBreak Type:=6  '(wdLineBreak) insert un saut de ligne
        Next
    End With
 
    Set WordApp = Nothing
End Sub
Créé le 14 mai 2007  par SilkyRoad

Jusqu'à Excel2003 :
Menu Fichier
Mise en en page
onglet Feuille
Sélectionnez "Tel que sur la feuille" dans le champ "Commentaires"
Cliquez sur le bouton OK pour valider.

Excel2007 :
Sélectionnez l'onglet "Mise en page" dans le ruban.
Cliquez sur le petit icône, dans l'angle inférieur droit du groupe "Options de la feuille de calcul".
A partir de là, la boîte de dialogue est identique aux versions antérieures d'Excel.
Sélectionnez "Tel que sur la feuille" dans le champ "Commentaires".
Cliquez sur le bouton OK pour valider.

Créé le 18 novembre 2008  par SilkyRoad

Vous pouvez profiter des nouvelles fonctionnalités de l'application qui permettent de supprimer les données confidentielles avant de partager un classeur. Il est ainsi supprimer tous les commentaires en une seule fois.

Cliquez sur le bouton Office.
Sélectionnez le menu 'Préparer'.
Choisissez le bouton 'Inspecter le document'.
Assurez vous que l'option 'Commentaires et annotations' est cochée.
Cliquez sur le bouton 'Inspecter', puis sur le bouton 'Supprimer tout'.


Par VBA :

Vba
Sélectionnez

Dim Wb As Workbook
 
Set Wb = ThisWorkbook
Wb.RemoveDocumentInformation xlRDIComments
Créé le 22 mars 2009  par SilkyRoad
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.