XL 2016 Macro auto-redimensionner toutes les notes

ViroMajor

XLDnaute Nouveau
Bonjour à tous,

Version Excel : 365. Via cette mouture, les anciens commentaires sont devenus des “notes” et ce qui s’intitule des commentaires désormais inclus la mention de l’auteur avec horodatage avec possibilité de fil de discussion par réponses intercalées

A cet instant, j’ai ce bout de code, qui assigné à une touche clavier en se plaçant sur la cellule concernée, auto-redimensionne comme envisagé (à la juste taille de texte), cependant note par note, une à la fois.

VB:
Option Explicit
Sub AutoSize_comment()
    With ActiveCell
        With .Comment
            .Shape.TextFrame.AutoSize = True
        End With
    End With
End Sub

Je serais intéressé d’auto-redimensionner toutes les notes (anciens commentaires) à la fois d’une même feuille ou d’un classeur entier. Est-ce possible ? Merci à vous
 

ViroMajor

XLDnaute Nouveau
Oar auti-redimensionner, j’entends passer de ça

1030463


à ça

1030464


sans avoir à intervenir manuellement
tout partout...
 

ViroMajor

XLDnaute Nouveau
vu que trop facile, oermets moi de rajouter une question bonus version numéro complémentaire de tirage

La nouvelle mouture d’Excel me transforme tous les anciens commentaires en notes en rajoutant l’auteur en ligne tout en dessous du texte existant. Ce qui surcharge bêtement

1030465


y’aurait moyen de supprimer cette ligne “texte inutile” (en réalité, le nom par défaut de l’auteur)

en ça

1030466


Si jamais, ça m’enleverait une écharde du pieds...
 

Staple1600

XLDnaute Barbatruc
Re

Essaie la précédente macro ainsi modifiée
VB:
Sub cAutoSizeII()
Dim c As Excel.Comment
With Application
.ScreenUpdating = False
  For Each ws In Worksheets
    For Each c In ws.Comments
      c.Shape.TextFrame.AutoSize = -1
      c.Text VBA.Replace(c.Text, .UserName, vbNullString)
    Next c
  Next ws
End With
End Sub
 

ViroMajor

XLDnaute Nouveau
Merci ! Ca fonctionne si tant est que l’on paramètres le bon Username dans les options ;)
Est-ce possible en sus de supprimer la ligne (retour à la ligne) laissée vide là où le username est effacée ?
Après ça, je serais paré pour le grand ménage de printemps (de saison)
Merci encore. je pense que ce sera utile à d’autres...
 

Staple1600

XLDnaute Barbatruc
Re

Il y a l'enregistreur et aussi le temps qui passe (les archives)
Ci-dessous 3ième version
(complétée avec une macro d'avril 2004 rédigée par le grand David McRitchie)
VB:
Sub cAutoSizeIII()
Dim c As Excel.Comment, NoNom$, X&
With Application
NoNom = LCase(.UserName) & ":" & Chr(10): X = Len(NoNom)
.ScreenUpdating = False
  For Each ws In Worksheets
    For Each c In ws.Comments
    If Left(LCase(c.Text), X) = NoNom Then c.Text Mid(c.Text, X + 1)
    c.Shape.TextFrame.AutoSize = -1
    Next c
  Next ws
End With
End Sub

NB: Il reste un petit défaut à cette 3ième macro (je te laisse trouver lequel ;) )
 

ViroMajor

XLDnaute Nouveau
Bonjour, petite question

VB:
Sub cAutoSize()
Dim c As Excel.Comment
For Each ws In Worksheets
For Each c In ws.Comments
c.Shape.TextFrame.AutoSize = -1
c.Shape.TextFrame.Characters.Font.Bold = False
Next c
Next ws
End Sub

Plutôt qu’avoir à lancer cette macro manuellement suite à avoir manipulé de nouveaux commentaires, n’y-a-t’il pas moyen que l’auto-redimenssionnement et formatage se fasse automatiquement lors de l’ajout de chaque nouveau commentaire ? sinon, ça oblige à lancer cette macro agissant sur tout le classeur (peut prendre du temps à s’exécuter) de temps en temps. Pas optimal. Mieux vaudrait que ça se fasse au fur et à mesure
 

ViroMajor

XLDnaute Nouveau
Hello Staple

Ceux (les notes nouvelle version, ou anciens commentaires) créés manuellement (un par un). Une fois terminés / contenu édité / “fermés“, idéalement il faudrait que la macro d’auto-redimenionnement / formatage se lance toute seule, mais juste appliquée à ce dernier commentaire précisément.