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
Parcequ’actuellement, un commentaire ajouté manuellement commence toujours en gras et sans redimensionnement. Donc on les accumule ainsi, jusqu’à plus tard activer cette macro sur tous

Idéalement, à chaque fois qu’on en ajoute un nouveau manuellement, il serait efficace qu’il soit “corrigé” immédiatement.
En somme, ya-t’il un code qui pourrait détecter l’ajout manuel du dernier commentaire afin de le formater par macro ?
 

Staple1600

XLDnaute Barbatruc
Re

Une piste à creuser (et à blinder sur les bords ;))
Sur mon PC, cela fonctionne (mais c'est lent)
VB:
Option Explicit
Dim nbShp%
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static nbShp
Dim i%
i = Me.Shapes.Count
Application.EnableEvents = False
If i > nbShp Then
  With Me.Shapes(i)
      .TextFrame.AutoSize = -1
      .TextFrame.Characters.Font.Bold = 0
  End With
End If
Application.EnableEvents = True
nbShp = i
End Sub
A mettre dans le code de la feuille.
 

Staple1600

XLDnaute Barbatruc
Re

Je me suis compliqué la tâche précédemment
Ci-dessous je me la simplifie ;)
VB:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
If Not Target.Comment Is Nothing Then
With Target.Comment.Shape.TextFrame
.AutoSize = -1: .Characters.Font.Bold = 0
End With
End If
Application.EnableEvents = True
End Sub
 

ViroMajor

XLDnaute Nouveau
Bien le bonjour Staple

Autant pour moi, en fait, il fait de l’effet à condition de le stimuler... il ne s’actionne que si on place le curseur de souris (en cliquant une fois) sur la cellule concernée, autrement non (passer la souris au-dessus de la case ne suffit pas)

Alors que l’ancien code lui s’actionne immédiatement (quand on a terminé le commentaire sans aucune manipulation supplémentaire), sans qu’on ait à lui donner aucun coup de cravache pour avancer !

Je préfère donc le 1er canasson, même s’il est moins polyvalent (risque de conflits avec certains objets)
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 192
Membres
102 809
dernier inscrit
Sandrine83