Affichage popup pour afficher contenu d'une cellule

GTT-76

XLDnaute Nouveau
Bonjour !

J'ai un tableau dans lequel j'ai une colonnes où mes collaborateurs renseignent des commentaires.
Le problème, c'est que les commentaires sont parfois trèèèèèèèèèèès longs... Du coup, ils ne sont visibles qu'en partie dans la cellule...
Mon fichier fonctionne en plein écran, sans la barre de formule et sans les en-têtes, et les afficher n'est pas souhaitable pour moi...
J'ai vu plusieurs sujets sur le net qui parlaient du même problème mais c'était pour des versions antérieures d'Excel et impossible d'adapter les codes pour mon fichier.
Si vous avez des pistes, je suis preneur, merci !
 

GTT-76

XLDnaute Nouveau
Bonsoir,
Tout d'abord, merci pour vos réponses.
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Target.Comment Is Nothing Then
MsgBox Target.Comment.Text
End If
End Sub

Je suis désolé mais une fois le code intégré dans le code de la feuille, il ne se passe absolument rien... Ni en passant sur le texte, ni en cliquant dans la cellule.

VB:
Sub AutoDimensionCommentaire()

Range("A1").Comment.Shape.TextFrame.AutoSize = True
'A1 adresse de la cellule du commentaire
End Sub

En fait ça n'est aps ce que je recherche car j'ai plus de 150 commentaires dans la dite-colonne.
Peut-être me suis-je mal exprimé dans ma requête ?
Merci en tout cas de vous pencher sur mon problème...
 

Phil69970

XLDnaute Barbatruc
GTT-76, Kingfadhel

En fait mon code permet de redimensionner automatiquement le commentaire quelque soit la longueur de celui-ci.
j'ai plus de 150 commentaires dans la dite-colonne.
Pour moi un commentaire n'a pas vocation à être affiché en permanence sauf exception mais seulement au passage de la souris. Si tes commentaires doivent être affiché en permanence peut être c'est la conception même du fichier qui ne va pas. (Ajout d'un champ "Notes" ou "Observation" par exemple)

Cordialement
 

kingfadhel

XLDnaute Impliqué
Capturer 01~1.gif
 

eriiic

XLDnaute Barbatruc
Bonjour à tous,

j'ai l'impression que tu parles de commentaires inscrits dans la cellule. Si oui :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static pl_sav As Range
    Dim pl As Range
    If Not pl_sav Is Nothing Then pl_sav.Comment.Delete
    Set pl_sav = Nothing
    Set pl = Intersect(Target, Range("A:B,D:D"))
    If Not pl Is Nothing Then
        Set pl = pl(1)
        If pl.Text <> "" Then
            If Not Target.Comment Is Nothing Then pl.Comment.Delete
            pl.AddComment Target.Value
            Target.Comment.Shape.TextFrame.AutoSize = True
            Set pl_sav = pl
        End If
    End If
End Sub
Restreint à 3 colonnes, met la plage exacte concernée.
Lors de la sélection d'une cellule je met le texte en (vrai) commentaire de cellule.
Effacé lorsque tu quittes
eric
 

GTT-76

XLDnaute Nouveau
Re-bonsoir,
@kingfadhel En fait, je n'ai pas de commentaire à l'origine dans mes cellules. J'aimerais justement que le système en crée un automatiquement (ou un popupup si on peut le faire d'une manière différente). Je pense que je me suis vraiment mal exprimé dans ma demande, désolé...

Je viens de trouver un code ailleurs, qui fonctionne très bien :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
    Application.ScreenUpdating = False
    If Target.Count > 1 Then Exit Sub
    If Target.Value = "" Then Exit Sub
    Target.ClearComments
    Target.AddComment Target.Value
    Target.Comment.Shape.TextFrame.AutoSize = True
    Application.ScreenUpdating = True
End Sub
C'est exactement ce que je cherchais; lorsque je clique sur une cellule, le commentaire se crée automatiquement. Dès lors, il reste bien actif mais seulement au passage de la souris sur la cellule, puis se masque lorsqu'on en sort.

Du coup, je l'ai combiné au tien et ça fonctionne à merveille, le MsgBox s'affiche bien avec le commentaire de la cellule.
Je cherche maintenant à changer la taille de la police de cette MsgBox, je ne sais pas si c'est possible ?

Merci à vous tous.
 

Phil69970

XLDnaute Barbatruc
Bonjour à tous

Je cherche maintenant à changer la taille de la police de cette MsgBox, je ne sais pas si c'est possible ?
Je pense que tu parles du commentaire.

Je te propose :

VB:
Sub Commentaire()
With Range("J3")
    .ClearComments
    .AddComment
    .Comment.Visible = True
    .Comment.Text Text:="C'est super:" & Chr(10) & "Test"   'Le texte du commentaire
    .Comment.Shape.OLEFormat.Object.Font.Bold = True        'Police en gras
    .Comment.Shape.OLEFormat.Object.Font.ColorIndex = 5     'Couleur de la police ici bleu
    .Comment.Shape.Fill.ForeColor.SchemeColor = 47          'Couleur de fond du commentaire ici orange
End With
End Sub

Cordialement
 
Dernière édition:

GTT-76

XLDnaute Nouveau
Merci @Phil69970 pour ce code !
Néanmoins, ça implique que le commentaire reste affiché, chose que je ne souhaite pas.
C'est pour ça que la MsgBox était une bonne alternative, avec effacement du commentaire à la sortie.
Ou est-ce qu'on peut rajouter un bout de code pour que le commentaire s'efface qi on sélectionen une autre cellule ? Ou qu'on en survole juste une autre ?

Edit : non, j'avais oublié d'enlever un morceau de code, donc le commentaire se masque automatiquement à la sortie de la cellule. Et donc, dernière question, est-il possible que le commentaire soit placé ailleurs sur la feuille lorsqu'il s'affiche ?
Merci !
 

GTT-76

XLDnaute Nouveau
Bonjour @eriiiic , bonjour à tous.

J'ai bien testé ta solution, ça fonstionne très bien pour créer le commentaire, l'afficher et le supprimer en cliquant sur une autre cellule. Mais ça ne répond pas à ma dernière question "est-il possible que le commentaire soit placé ailleurs sur la feuille lorsqu'il s'affiche ? ".
Merci à toi.
 

Phil69970

XLDnaute Barbatruc
Bonjour à tous
dernière question, est-il possible que le commentaire soit placé ailleurs sur la feuille lorsqu'il s'affiche ?

Essaye ce code dans un nouveau fichier vierge :
Avec ta souris fait défiler la feuille et après clic et recommence .... et observe

VB:
'Dans un module
Sub Commentaire()
With Range("J3")
    .ClearComments
    .AddComment
    .Comment.Visible = True
    .Comment.Text Text:="C'est super:" & Chr(10) & "Test"   'Le texte du commentaire
    '.Comment.Shape.Top = Range("J13").Top                  'Ne sert pas ici
    .Comment.Shape.Left = Range("J13").Left
    DerLigVisible = Split(ActiveWindow.VisibleRange.Address, "$")(4)
    EcartLigne = DerLigVisible - 16
    .Comment.Shape.Top = Range("J" & EcartLigne).Top
    .Comment.Shape.OLEFormat.Object.Font.Bold = True    'Police en gras
    .Comment.Shape.OLEFormat.Object.Font.ColorIndex = 5 'Couleur de la police
    .Comment.Shape.Fill.ForeColor.SchemeColor = 47      'Orange
    .Comment.Shape.TextFrame.AutoSize = True
End With
End Sub

'Dans le code de la feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Commentaire
End Sub

Bonne journée
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 709
Messages
2 081 769
Membres
101 816
dernier inscrit
Jfrcs