Excel - afficher le contenu d'une cellule
Résolu/Fermé
mic13710
Messages postés
1087
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
13 mai 2021
-
20 sept. 2010 à 12:04
mic13710 Messages postés 1087 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 13 mai 2021 - 21 sept. 2010 à 23:26
mic13710 Messages postés 1087 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 13 mai 2021 - 21 sept. 2010 à 23:26
A voir également:
- Excel afficher le contenu d'une cellule dans une autre
- Aller à la ligne dans une cellule excel - Guide
- Comment colorer une cellule excel en fonction du contenu d'une autre cellule ✓ - Forum Excel
- Excel cellule couleur si condition texte - Guide
- Déplacer une colonne excel - Guide
- Verrouiller une cellule excel - Guide
2 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
Modifié par eriiic le 25/09/2010 à 13:14
Modifié par eriiic le 25/09/2010 à 13:14
Bonjour,
une autre proposition :
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
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
20 sept. 2010 à 22:56
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
20 sept. 2010 à 23:27
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