Copie Commentaires VBA

Bonjour à tous

J'ai un souci de decalage du commentaire depuis bord gauche de la cellule :

j'effectue une copie de la cellule A1 par exemple sur la A2 , ensuite je deplace ce commentaire qui ne se place pas automatiquement à la meme position que dans la cellule initiale (on se demande bien pourquoi , d'autant que la forme et la police etc ..sont bien les memes ! ) :

Selection.ShapeRange.IncrementLeft 200

Selection.ShapeRange.IncrementTop 200

Jusque là tout va bien , sauf que cette copie se fait jusqu'a "A800 " parfois .. dès la 50ème ligne on voit nettement un decalage qui se fait sur la gauche . Le commentaire etant en "centré" je me suis apercu que c'etait sa largeur qui diminuait toutes seule au fur et à mesure de la copie Peu visible au debut mais avec le nombre de ligne sa fini par se voir

(Position haute = 0 souci)

Bidouille tentée :

Selection.ShapeRange.ScaleWidth 1.005005, msoFalse, msoScaleFromTopLeft

Là nouveau pb soit ca s'agrandit mais pas moyen de trouver un coeff qui permet de stabiliser la largeur (trop petit , trop grand )

QQ1 à une solution ?

Bonjour,

Tu ne postes aucun code ...

A mon avis, tu peux toujours reformatter tous les commentaires de ta feuille avec une macro dédiée ...

James007 a écrit :

Bonjour,

Tu ne postes aucun code ...

A mon avis, tu peux toujours reformatter tous les commentaires de ta feuille avec une macro dédiée ...

le code est basique :

Rows(lig - 3).Select

Application.CutCopyMode = False

Selection.Copy

Rows(lig - 2).Select

ActiveSheet.Paste

puis

Cells(lig - 2, 1).Comment.Shape.Select True

Cells(lig - 2, 1).Comment.Text Text:=("*" & No_Haut & "*")

Selection.ShapeRange.IncrementLeft Me.MargeGaucheCodeBarre

Selection.ShapeRange.IncrementTop Me.MargeHauteCodeBarre

Selection.ShapeRange.ScaleWidth 1.005005, msoFalse, msoScaleFromTopLeft

si ca peut aider

Re,

Ce que tu viens de poster est, à mes yeux, incomplet ...

Ci-dessous un code à adapter à ta situation :

Sub AjusterComments()
' auteur: Dana DeLouis  16-09-2000

  Dim MyComments As Comment
  Dim lArea As Long
  For Each MyComments In ActiveSheet.Comments
    With MyComments
      .Shape.TextFrame.AutoSize = True
      If .Shape.Width > 300 Then
        lArea = .Shape.Width * .Shape.Height
        .Shape.Width = 200
        ' Facteur choisi 1.1 ... mais à tester et à adapter ............ 
        .Shape.Height = (lArea / 200) * 1.1
      End If
    End With
  Next MyComments
End Sub

J'espère que cela te sera utile ....

Je viens de trouver une solution et peut être un peu plus facile à modifier ensuite

Merci pour les # aides

For Each c In ActiveSheet.Comments

c.Shape.Width = 450

c.Shape.Height = 100

c.Shape.Left = c.Parent.Left + 40

c.Shape.Top = c.Parent.Top + 300

Next c

Pour les futurs lecteurs du Forum ... Merci d'avoir partagé la solution que tu as trouvée ...

Rechercher des sujets similaires à "copie commentaires vba"