Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo

precedent    sommaire    suivant   


Comment créer un commentaire par macro ?
auteur : SilkyRoad
L'exemple suivant insère un commentaire dans la cellule A1.

Vba

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

Comment vérifier s'il y a un commentaire dans une cellule ?
auteur : SilkyRoad
Vba

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

Comment identifier les cellules qui contiennent des commentaires ?
auteur : 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

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

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

Comment copier un commentaire dans une autre cellule ?
auteur : 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

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

Comment adapter la taille d'un commentaire en fonction du texte qu'il contient ?
auteur : SilkyRoad
Vba

Range("A1").Comment.Shape.TextFrame.AutoSize = True

Comment insérer une image dans un commentaire ?
auteur : SilkyRoad
Vba

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.



Comment lister le contenu des commentaires dans un document Word ?
auteur : SilkyRoad
Vba

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

precedent    sommaire    suivant   

Consultez les autres F.A.Q's


Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2008  Developpez LLC. Tout 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com