Excel - afficher le contenu d'une cellule

Résolu/Fermé
mic13710 Messages postés 1088 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 13 mai 2021 - 20 sept. 2010 à 12:04
mic13710 Messages postés 1088 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 13 mai 2021 - 21 sept. 2010 à 23:26
Bonjour,

Dans un tableau excel 2003, je souhaiterais lorsque je déplace le curseur dans une cellule afficher sous forme de commentaire le contenu d'une autre cellule.

Je sais comment faire pour mettre une image en commentaire, mais pour une cellule, je sèche. Je ne sais même pas si c'est possible.

Si quelqu'un a une solution (simple ou en vba), je suis preneur.

D'avance merci.


2 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
Modifié par eriiic le 25/09/2010 à 13:14
Bonjour,

une autre proposition :
Private Sub Worksheet_Change(ByVal Target As Range)  
    MajCommentaire Target  
End Sub  

Private Sub Worksheet_SelectionChange(ByVal Target As Range)  
    MajCommentaire Target  
End Sub  

Sub MajCommentaire(Target)  
    ' commentaire auto  
    Dim shComment As Worksheet, lig As Long  
    Set shComment = Worksheets("Feuil1") ' à adapter  
    Target.ClearComments  
    If Left(Target.Formula, Len(shComment.Name) + 3) = "=" & shComment.Name & "!B" Then  
        If IsNumeric(Mid(Target.Formula, Len(shComment.Name) + 4)) Then  
            lig = Mid(Target.Formula, Len(shComment.Name) + 4)  
            Target.AddComment  
            Target.Comment.Visible = False  
            Target.Comment.Text Text:=shComment.Cells(lig, 5).Value  
        End If  
    End If  
End Sub  


Ne marche que pour les colonnes jusqu'à AZ (BA, etc, posent un problème sûrement inutile à traiter ?)
Une formule du type =Feuil1!B4&"toto" ou =Feuil1!B4+12 sera sans commentaire.
Si la formule change le commentaire évolue ou est supprimé.

CommentaireAuto.xls

eric

EDIT: fichier mis à jour et complété grace aux remarques et apports de mic 13710
1
mic13710 Messages postés 1088 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 13 mai 2021 353
20 sept. 2010 à 22:56
Salut Eric,

Ouah ! Ca c'est un beau code !
Merci beaucoup pour ta proposition, elle marche au poil pour associer les commentaires avec les cellules.
J'aurais pensé qu'il y avait une fonction d'excel pour faire cela, mais s'il faut en passer par du vba, pourquoi pas !

J'ai donc copié et adapté ton code a mon projet.
J'ai ensuite limité la zone d'application aux seules cellules concernées en rajoutant les lignes suivantes dans les Sub Worksheet :
If Target.Row >= 10 And Target.Row <= 159 And Target.Column = 2 Then
MajCommentaire Target
End If

Puis j'ai fait des essais, et j'ai rencontré quelques problèmes.

Tout d'abord, les cellules sur lesquelles doivent s'appliquer les commentaires sont protégées (j'avais oublié de le préciser), et même si j'autorise les commentaires (DrawingObjects:=False), la macro plante. Elle ne fonctionne que si j'ôte la protection sur la feuille. Franchement, je ne souhaite pas déprotéger cette feuille pour que les commentaires puissent fonctionner car les utilisateurs sont plutôt du genre "gros doigts" et sont tout à fait capables de me véroler le programme.

Ensuite, la macro plante aussi si je sélectionne plusieurs cellules. Il faudrait qu'elle ne soit active que pour un choix unique de cellule.

Enfin, la dimension par défaut du cadre des commentaires est insuffisante pour afficher tout le texte. Est-ce que la dimension du cadre peut-être variable en fonction du texte a y insérer (largeur fixe par exemple et hauteur variable par exemple), et sinon, est-il possible de définir une dimension du cadre dans la macro ?

Je ne suis pas un spécialiste en vba et je n'ai pas compris l'astuce entre les Sub Worksheet_Change(ByVal Target As Range) et Worksheet_SelectionChange(ByVal Target As Range).

Merci encore une fois pour ton aide.

Michel
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
20 sept. 2010 à 23:27
Oulaaa, que de questions...

les cellules sur lesquelles doivent s'appliquer les commentaires sont protégées
Au .protect ajoute le paramètre UserInterfaceOnly = True
Ca devrait suffire

la macro plante aussi si je sélectionne plusieurs cellules
Au début de la macro principale ajoute :
if target.cells.count >1 then exit sub

la dimension par défaut du cadre des commentaires est insuffisante
Après le .addcomment ajoute :
Target.Comment.Shape.Width = 200 'largeur
Target.Comment.Shape.Height = 100 'hauteur
A toi de trouver les valeurs qui te vont bien.
Quant à régler la hauteur.... amuse toi à trouver le coefficient qui va bien pour Height en fonction de la longueur de la chaine ;-)

Worksheet_Change(ByVal Target As Range)
Fabrique ou supprime le commentaire sur une édition de la cellule, qu'il apparaisse dès la saisie de la formule sans avoir besoin de sélectionner une autre cellule pour revenir sur celle qui doit avoir le commentaire.

Worksheet_SelectionChange(ByVal Target As Range).
Fabrique ou supprime le commentaire sur sélection de la cellule : pour ne pas t'obliger à revalider toutes les formules déjà existante. Le commentaire se met lorsque tu la sélectionnes.
Ou bien tu vides une plage, les commentaires restent : tu peux les enlever en cliquant sur chaque cellule.

eric
0