modifier avec vba l'ensemble des commentaires de la feuille active

  • Initiateur de la discussion Initiateur de la discussion modus57
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

modus57

XLDnaute Occasionnel
Bonjour

J'ai trouvé sur ce forum le code qui permet de modifier avec vba l'ensemble des commentaire d'un classeur:

Dim sh As Worksheet
Dim oComment As Comment
For Each sh In ThisWorkbook.Worksheets
For Each oComment In sh.Comments
With oComment.Shape
.DrawingObject.Text = Replace(.DrawingObject.Text, "2009", année)
End With
Next
Next sh

En modifiant "In ThisWorkbook.Worksheets" par "In ActiveSheet.Comments", çà fonctionne pas

Comment adapter ce code pour modifier avec vba l'ensemble des commentaire de la feuille active.

Un petit coup de pouce SVP.

Merci d'avance.
 
Re : modifier avec vba l'ensemble des commentaire de la feuille active

Bonjour.

Avez-vous essayé de mettre en commentaire, ou de supprimer les lignes 9, puis 3 ?
Moi, non, car vous avez omis de joindre un fichier en exemple.
 
Re : modifier avec vba l'ensemble des commentaire de la feuille active

Bonjour Victor21

Je ne comprend pas le sens de ta question ?

Dans la feuille active il faut remplacer dans tous les commentaires le texte "2010" par la "2012"

Ci-joint fichier
 

Pièces jointes

Dernière édition:
Re : modifier avec vba l'ensemble des commentaire de la feuille active

Bonjour modus, Victor,

modifie comme suit :
Code:
Sub ModifCommentaires()
Dim oComment As Comment
Dim année
année = Year(Date)
For Each oComment In Feuil1.Comments
    With oComment.Shape
        .DrawingObject.Text = Replace(.DrawingObject.Text, "2010", année)
    End With
Next oComment
End Sub

bon après midi
@+
 
Re : modifier avec vba l'ensemble des commentaire de la feuille active

Re,

Essayez :
VB:
Sub ModifCommentaires()

Dim année
année = Year(Date)

    'Dim sh As Worksheet
    Dim oComment As Comment
    'For Each sh In ThisWorkbook.Worksheets
        For Each oComment In Feuil1.Comments
            With oComment.Shape
                .DrawingObject.Text = Replace(.DrawingObject.Text, "2010", année)
            End With
        Next
    'Next sh
    
End Sub

Edit : Bonsoir, Pierrot. Doublé ! Je n'ai pas vu ton clignotant 😉
 
Dernière édition:
Re : modifier avec vba l'ensemble des commentaire de la feuille active

Bonsoir Victor21, Pierrot93

En modifiant "In Feuil1.Comments" par "In Activesheet.Comments", çà fonctionne et cela répond à ma question.

Merci pour votre aide et bonne soirée.
 
Re : modifier avec vba l'ensemble des commentaires de la feuille active

Bonjour Victor21

Je reviens sur cette discussion car la recherche des commentaires est longue, une vingtaine pour la feuille active.

Serait-il possible de limiter la recherche des commentaires à la sélection par exemple :
Range("H5", [I:I].Find("*", [I1], , , , xlPrevious)).Select

J’ai essayé mais cela ne fonctionne pas:
Set Sélection = Range("H5", [I:I].Find("*", [I1], , , , xlPrevious))
For Each oComment In Range(Sélection).Comments

Avez-vous une solution.
 
Re : modifier avec vba l'ensemble des commentaires de la feuille active

Bonjour ChTi160

J'ai essayé "For Each oComment In Sélection.Comments" cela affiche le message suivant :

Erreur d'exécution 438 : Propriété ou méthode non gérée par cet objet.
 
Re : modifier avec vba l'ensemble des commentaires de la feuille active

Bonsoir
en cherchant un peu sur le Net j'ai trouvé ceci que j'ai modifié
(a adapter bien sur) cela permet de travailler sur une plage definie
Code:
Sub ResizeCommentsInSelection()
'Posted by Dave Peterson 2002-02-25
Dim mycell As Range
Dim myRng As Range
Dim lArea As Long

Set myRng = Worksheets("Feuil1").Range("D1:D10")

For Each mycell In myRng.Cells
  If Not (mycell.Comment Is Nothing) Then
    With mycell.Comment
      .Shape.TextFrame.AutoSize = True
      If .Shape.Width > 300 Then
        lArea = .Shape.Width * .Shape.Height
        .Shape.Width = 200
        .Shape.Height = (lArea / 200) * 1.2
      End If
    End With
  End If
Next mycell
End Sub

Le liens vers le Site :Excel Comments VBA

si cela peut être utile
Bonne fin de Soirée
Amicalement
Jean Marie
 
Re : modifier avec vba l'ensemble des commentaires de la feuille active

Bonjour ChTi160

Voici ton code adapter à mes besoins :

Sub ChercheRemplaceCommentsInSelection()
Dim mycell As Range
Dim myRng As Range
Dim année
année = Year(Date)

Set myRng = ActiveSheet.Range("H5", [I:I].Find("*", [I1], , , , xlPrevious))

For Each mycell In myRng.Cells
If Not (mycell.Comment Is Nothing) Then
With mycell.Comment
.Text Text:=Replace(.Text, "2011", année)
End With
End If
Next mycell
End Sub

Merci ChTi160, ainsi qu'a Victor21 & Pierrot93

Question subsidiaire : comment encadrer le code dans un message ?

@ +
 
Re : modifier avec vba l'ensemble des commentaires de la feuille active

Bonjour Modus57
Bonjour le Fil
Bonjour le Forum

pour répondre à ta question

il faut aller dans Mode Avancé (sélectionner le texte a encadrer puis clic sur
Ajouter la Balise [Code] icône #

Bonne Journée
Amicalement
Jean Marie
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
454
Réponses
4
Affichages
734
Retour