Taille automatique EXcel

Bonjour,
J'ai un travail à faire sur Excel avec plein de commentaire, je voulais savoir s'il était possible d'ajuster automatique la taille des commentaires déjà existants et prochains ?
Merci d'avance ^^

3 réponses

  1. Contributeur
    Bonjour,

    pour les existants :
    Sub ajustComm()
        Dim pl As Range, c As Range
        Set pl = Cells.SpecialCells(xlCellTypeComments)
        If Not pl Is Nothing Then
            For Each c In pl: c.Comment.Shape.TextFrame.AutoSize = True: Next c
        End If
    End Sub

    toute la feuille active, sinon spécifier la feuille et/ou la plage concernée
    eric

    0
    1. Bonjour, je vous remercie pour cette réponse
      mais j'utilise très peu excel, où dois-je entrer le code ?
      0
    2. Contributeur
      Bonjour,

      Alt+F11 pour ouvrir l'éditeur.
      Clic-droit sur le projet du classeur à droite, 'Insertion / Module'
      Coller le texte du code dans la fenêtre de droite.
      'Enregistrer sous...', choisir le type *.xlsm pour conserver les macros.
      La macro s'applique à la feuille active lors de son appel.
      eric
      0
    3. Merci ça marche mais du coup pour les textes assez long ça sors de l'écran, dois-je les travailler avec entrée ?
      0
    4. Contributeur
      Bonjour,

      qui limite les lignes à x caractères sans couper les mots, ici 40 car. :
      Sub ajustComm()
          Dim pl As Range, c As Range, ch As String
          Set pl = Cells.SpecialCells(xlCellTypeComments)
          If Not pl Is Nothing Then
              For Each c In pl
                  c.Comment.Text decoupCh(c.Comment.Text, 40)
                  c.Comment.Shape.TextFrame.AutoSize = True
              Next c
          End If
      End Sub
      
      Function decoupCh(ch As String, lMax As Long, Optional suppVbLF = False) As String
          Dim pos As Long
          'insère chr(10) tous les x caractères, sans couper les mots
          If suppVbLF Then ch = Replace(ch, vbLf, " ")
          pos = lMax + 1
          Do
              pos = InStrRev(ch, " ", pos)
              Mid(ch, pos, 1) = vbLf
              pos = pos + lMax + 1
          Loop Until pos >= Len(ch)
          decoupCh = ch
      End Function

      si tu fais des tests de largeur les retour chariot vont s'accumuler.
      Si tu veux les supprimer tous avant d'en remettre ajoute le paramètre , True à :
      c.Comment.Text decoupCh(c.Comment.Text, 40, True)
      Mais ça les enlève tous, y compris les volontaires. Impossible de les distinguer.
      eric
      0
    5. Merci et j'ai comme réponse "Argument ou appel de procédure incorrect", du coup ça marche ...
      0
  2. Bonsoir,

    Sortie du fin fond de mes archives mais fonctionne pas pour les commentaires déjà existant uniquement pour ceux à venir "à voir"

    https://mon-partage.fr/f/zkpZypAL/

    ou

    https://mon-partage.fr/f/al2LKN4f/

    Slts
    0
    1. Contributeur
      Bonjour
      non je ne crois pas que cela soit possible. La seule chose possible et d'automatiser le format selon le remplissage
      et aussi la possibilité de placer un commentaires types quelques part pour faire des copier coller
      crdlmnt
      0