Excel - afficher le contenu d'une cellule [Résolu/Fermé]

Signaler
Messages postés
1085
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
3 octobre 2020
-
Messages postés
1085
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
3 octobre 2020
-
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

Messages postés
23598
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 octobre 2020
6 428
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
23598
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 octobre 2020
6 428
Je venais te répondre mais plus la peine je vois... :-)

Je le met quand même car ça ouvre d'autres perspectives : mettre en gras ou en couleur des mots etc
                With Target.Comment 
                    .Shape.Width = 150 
                    .Shape.Height = 30 
                    .Visible = True 
                    .Text Text:=shComment.Cells(lig, 5).Value 
                    ' changement police commentaire 
                    .Shape.Select 
                    Selection.Characters(1, Len(shComment.Cells(lig, 5).Value)).Font.Name = "Arial" 
                    Selection.Characters(1, Len(shComment.Cells(lig, 5).Value)).Font.Size = 12 
                    Selection.Characters(1, 11).Font.ColorIndex = 3 
                    .Visible = False 
                    Target.Select 
                End With


Et merci à toi pour le retour, pas mal pour un newbie (qui apprend vite) ;-)

eric
Messages postés
1085
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
3 octobre 2020
327
Bonsoir Eric,

C'est effectivement intéressant.
Pour ma part, je vais en rester là car je suis très satisfait du résultat, surtout la taille automatique du cadre. Le fait de mesurer la surface plutôt que de calculer la longueur des caractères simplifie grandement le calcul de la hauteur.
A noter que le multiplicateur 1.1 (que j'ai passé depuis à 1.15 car j'avais des caractères tronqués) est nécessaire pour tenir compte des retours à la ligne pour les mots longs que le simple calcul de surface ne peut pas évaluer. Les cadres ne sont pas parfaits mais le résultat et très largement suffisant pour mon application.
J'ai un petit peu amélioré le code en y ajoutant à la fin du "If .Shape.Width > 300 Then " la ligne suivante :
.
Shape.TextFrame.VerticalAlignment = xlCenter

Ainsi le texte du commentaire est centré dans la hauteur du cadre.

Et encore merci pour ton aide précieuse.

Michel
Messages postés
23598
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 octobre 2020
6 428
J'ai ré-uploadé mon fichier en tenant compte de tes remarques et tes apports
Félicitations et bonne continuation :-)
eric
Messages postés
1085
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
3 octobre 2020
327
Content de t'avoir aidé aussi.
A la prochaine peut-être.....
Messages postés
1085
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
3 octobre 2020
327
Euh Eric,

Y'a un oubli dans le code de ton fichier : Il manque la déclaration de la variable "cmtarea" dans le dim.
Dim shComment As Worksheet, lig As Long, cmtarea As Long
ça bug sans ça.

@+, Michel
Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
587
Bonjour,

Je ne sais pas si c'est exactement cela mais voici une proposition.

Insérer en VBA dans le code associé à la feuille dans laquelle on souhaite avoir ce comportement, une macro du type :


Private Sub Worksheet_Change(ByVal Target As Range)
    If Target = Range("A1") Then
        Range("B3").Comment.Text Text:=Range("A1").Value
    End If
End Sub



Dans cet exemple on suppose que l'on veut en commentaire de la cellule B3 le texte qui se trouve dans la cellule A1.

Le code de la macro est donc activée chaque fois que la cellule A1 est modifiée.

A+
Messages postés
1085
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
3 octobre 2020
327
Salut Pilas et merci pour ta réponse.

Je n'ai pas encore essayé mais j'y vois deux problèmes dans mon application :
1- j'ai 150 cellules à surveiller
2- je fais des classements sur ces 150 cellules et donc elles changent de place alors que les cellules contenant les commentaires sont toujours à la même place.

Je m'explique.
Pour simplifier, j'ai un fichier avec 2 feuilles.
Sur la première feuille se trouvent listées dans un tableau les 150 lignes de données.
Dans la colonne B se trouvent les noms simples et dans la colonne E les descriptions détaillées correspondantes.
Sur la deuxième feuille j'ai des liens vers les 150 cellules de la colonne B (noms simples) sur lesquels j'opère des classements selon différents critères.
Afin de ne pas avoir à changer à chaque fois de feuille pour consulter la description associée à un nom simple, je souhaiterais pouvoir la faire apparaître sous forme de commentaire directement en posant la souris sur le nom simple (ou au pire, en cliquant dessus).
Il faut donc associer ce commentaire à la cellule correspondante dans la première feuille.
Par exemple : Feuille1 cellule B15 (nom simple), cellule E15 (détail), la cellule de la feuille 2 comportant la formule "=Feuille1!B15" dont la position peut varier selon le classement doit avoir un commentaire toujours associé au contenu de la cellule E15 de la feuille1.
Donc le seul élément de la feuille 2 qui peut renvoyer vers la bonne cellule de la feuille 1 est la formule "=Feuille1!B15".
Pour info, les classements se font sur la même colonne.

Crois-tu qu'en développant à partir de "Sub Worksheet_Change" on puisse réaliser ce que je souhaite ?
Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
587
Je n'ai pas encore regardé si mon exemple peut se généraliser à ton cas mais mon premier reflexe dans le cas décrit est plutôt l'utilisation de RECHERCHEV.

Par exemple si ton libéllé court se trouve en colonne A (de la feuille2) tu peux mettre automatiquement dans une autre colonne de la feuille 2 la formule suivante (en ligne1) puis en copiant vers le bas :

=RECHERCHEV(A1;Feuil1!$B$1:$E$150;4;FAUX) 



ainsi, si tu fais des tris sur ta colonne A, la description ramenée par la formule RECHERCHEV sera toujours la bonne.

A+
Messages postés
1085
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
3 octobre 2020
327
Merci Pilas pour ton aide. Je connais bien ces fonctions de recherches matricielles mais ce n'est pas ce que je cherche.
C'est un commentaire que je souhaite afficher et non effectuer la copie d'une cellule dans une autre.
La solution qu'eriiic propose ci-dessous me semble plus se rapprocher de mon besoin car c'est réellement le détail sous forme de commentaire qui s'affiche.
Je vais donc creuser dans cette direction.

Merci encore d'avoir consacré de ton temps pour me venir en aide.