Monsieur Excel
Pour tout savoir faire sur Excel !

30 mars 2014

La formule active en commentaire

Dans le dernier article, nous avons vu comment afficher dans une cellule le texte de la formule de la cellule voisine à gauche.

Cette solution est assez intéressante pour les personnes qui, comme moi, animent des séminaires de formation autour d’Excel.

En ce qui me concerne, j’enseigne aussi fréquemment à des clientèles internationales. Il m’arrive donc souvent d’utiliser mon Excel en français pour animer une formation en anglais. Dans ce cas, quand j’entre dans mon Excel français une formule un peu complexe dans une cellule, outre le fait que je dis en anglais ce qu’il faut entrer dans la cellule, je renforce mon message en affichant dans la cellule un commentaire avec la formule en anglais, comme vous pouvez le voir dans la copie d’écran ci-dessus.

J’ai pour cela mis dans mon classeur de macros personnelles la macro suivante, à laquelle j’ai attribué un raccourci permettant de l’appeler par [Ctrl]-f :

Sub Formule_comm()
'
' Touche de raccourci du clavier: Ctrl+f
'
    ActiveCell.ClearComments
    ActiveCell.AddComment
    ActiveCell.Comment.Text Text:=ActiveCell.Formula
    ActiveCell.Comment.Visible = True
End Sub

Remarque – Il faut commencer par effacer le commentaire actuel, au cas où il y en aurait un. En effet, quand une cellule possède déjà un commentaire, on ne peut pas lui en ajouter un…


Si l’on veut mettre en commentaire la formule en français, il suffit de remplacer « ActiveCell.Formula » par « ActiveCell.FormulaLocal ».

La seule chose que j’aurais aimé pouvoir faire aurait été de dimensionner le commentaire en fonction de la place prise par le texte… Si vous avez la solution, je suis preneur !



4 Commentaire(s):

  • on peut faire un bricolage de ce genre:
    ActiveCell.Comment.Shape.ScaleWidth 1, msoFalse, msoScaleFromTopLeft
    ActiveCell.Comment.Shape.ScaleHeight 0.27 * (Round(Len(ActiveCell.Comment.Text) / 20, 0)), msoFalse, msoScaleFromTopLeft

    (j'impose 1 de largeur soit environ 20 caractères et j'ajuste la hauteur)

    By Blogger Philippe, sur 11:46 PM  

  • ActiveCell.Comment.Shape.TextFrame.AutoSize = True

    By Blogger AL, sur 8:58 AM  

  • Merci AL, cela fonctionne en effet très bien !

    By Blogger Hervé Thiriez, sur 7:20 PM  

  • On peut sophistiquer un peu plus, en testant si la cellule a déjà un commentaire, et dans ce cas on peut (si on le souhaite) rajouter la formule après le commentaire existant:
    If ActiveCell.Comment Is Nothing Then
    ActiveCell.AddComment
    zcomment = ""
    Else
    zcomment = ActiveCell.Comment.Text & Chr(10)
    Endif
    ActiveCell.Comment.Text Text:= zcomment & ActiveCell.Formula

    J'ai même entrecoupé ce code de petits MsgBox demandant à l'utilisateur (=moi!) ce qu'il préférait faire: comme ça je peux choisir si je remplace le commentaire existant ou le complète, et si je veux la formule anglaise ou francisée... Mais c'est du luxe!

    Encore mille mercis pour votre blog!!!

    By Anonymous Phil, sur 11:35 AM  

Enregistrer un commentaire

<< Accueil