Afficher le contenu texte d'une cellule dans son commentaire

Bonjour,

J'essaie de faire apparaître le contenu texte d'une cellule dans son commentaire.

J'ai réussi pour quelques cellules d'une même colonne, mais de Q2 à Q385 la procédure est fonctionnellement trop longue en VBA.

Voilà ce qui fonctionne de façon limité :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target = Range("q2") Then

Range("q2").Comment.Text Text:=Range("q2").Value

End If

If Target = Range("q3") Then

Range("q3").Comment.Text Text:=Range("q3").Value

End If

'etc

End Sub

Aussi, j'ai essayé de faire une boucle, mais ça bogue de temps en temps.

Private Sub Worksheet_Change(ByVal Target As Range)

For i = 2 To 385

With Range("q" & i)

If Target = Range("q" & i) Then ' <--- c'est la ligne qui bogue " erreur incompatibilité de Type"

Range("q" & i).Comment.Text Text:=Range("q" & i).Value

End If

End With

Next i

End Sub

Avez vous une idée, ou un code plus "conventionnel" ?

Merci

Bien à vous

Bonjour Xavierr,

Essaie déjà comme ceci!

Private Sub Worksheet_Change(ByVal Target As Range)
'
Application.EnableEvents=False
Application.ScreenUpdating=False
'
For i = 2 To 385
Range("Q:" & i).Comment.Text Text:=Range("Q:" & i).Value 
Next
'
Application.ScreenUpdating=True
Application.EnableEvents=True
'
End Sub

Fait sans test, en écriture directe, mais ça devrait déjà mieux rouler!

A+

Bonsoir curulis57,

Merci pour ce retour "éclair".

Cependant, la loi de "Murphy" fait une fois de plus son office, sans jeu de mots.

J'ai maintenant une erreur d'exécution "1004", la méthode 'Range' de l'objet '_Worksheet' a échoué.

Je dois avouer que j'ai retranscrit ces lignes de VBA à partir de deux exemples piochés sur le net en pensant naïvement que cela fonctionnerait.

Mais, peut-être faut-il repenser l'ensemble ?

Dans l'attente.

Bien cordialement

Ben, oui...

Range("Q" & i).Comment.Text Text:=Range("Q" & i).Value 

...

Sans les ":"...

Toujours sans test ni connaissance de ton fichier!

A+

Ben voilà,

Sans les ":", erreur "1004" directe -->'Erreur définie par l'application ou par l'objet' sur cette même ligne.

Comprendre mon fichier n'est pas important, mais je peux me tromper. En fait, il suffit d'un fichier vierge (xls pas xlsx) dans lequel on impose un commentaire vierge dans toutes les cellules en colonne Q et exécuter le code pour que le texte saisi n'importe ou dans une cellule comprise entre Q2 et Q 385 fait apparaître le texte de la cellule dans le commentaire dépendant.

J'ai fait des copies d'écran, mais je ne sais pas les insérer. En clair j'utilise le clic droit "insérer un commentaire" dans la première cellule. J'efface tout le texte automatique et je copie le format "commentaire" (vierge) de Qn à Qn(x), et j'applique le code VBA à la feuille concernée.

Après, je teste une ligne au hasard en entrant un texte "à rallonge" et il doit apparaitre dans le commentaire correctement visible dans son intégralité lors du passage de la souris, je ne tiens pas à redimensionner la cellule pour rendre le texte lisible directement, l'environnement ne le permet pas pour des raisons de lisibilité globale.

Voilà, je ne sais pas si je suis clair cette fois.

Bon, j'ajoute un fichier d'exemple, mais attention, passer la souris sur la cellule Q3 et observer. Puis essayer de faire de même dans une autre cellule avec une boucle VBA sans bogue.

Merci de ton acharnement.

95test.zip (7.82 Ko)

Salut Xavierr,

si j'ai bien compris, voici le code demandé avec des options en forme de... commentaires!

Il y a bien sûr encore moyen de créer automatiquement un commentaire pour chaque cellule qui en serait dépourvu...

Private Sub Worksheet_Change(ByVal Target As Range)
'
If Not Application.Intersect(Target, Range("Q:Q")) Is Nothing Then
    'si il n'y a pas de commentaire addossé à la cellule, la macro se termine ici.
    If ActiveCell.Comment Is Nothing Then Exit Sub
    '
    If Target.Value <> "" Then
        '
        'si tu veux autoriser les chaînes vides, il faut supprimer ce IF TARGET... et son END IF, bien sûr!
        '
        'nouveau texte seul dans le commentaire
        Target.Comment.Text Text:=Target.Value
        '
        'nouveau texte à la suite du précédent
        'sComm = Target.Comment.Text
        'Target.Comment.Text Text:=sComm & " " & Target.Value
        '
        'ou avant le précédent
        'sComm = Target.Comment.Text
        'Target.Comment.Text Text:=Target.Value & " " & sComm
        '
        'si tu enlèves & " " &, les deux textes seront accolés sans espace.
    End If
End If
'
End Sub

Pas vraiment besoin de boucle FOR NEXT, me semble-t-il mais, encore une fois, je ne connais rien de tes habitudes de travail!

A+

Merci curulis57, cela me convient, c'est une bonne approche qui résout le problème.

A+

Rechercher des sujets similaires à "afficher contenu texte commentaire"