IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

liaison de commentaire


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Par défaut liaison de commentaire
    Bonjour,

    Je souhaiterais dans un fichier excel lier les commentaires d'une cellule à celui d'une autre.
    Il me faut lier tout les proprietes du commentaire :
    couleur du texte, la mise en forme, ......

    J'ai attaché un fichier exemple.
    Dans celui-ci je souhaite lier le commentaire de la case D2 avec celui de la cellule B1 (en modifiant celui de B1, celui de D2 est modifié à l'identique)

    Je sais que je dois utiliser une macro, mais mes essais ont ete infructueux.
    Fichiers attachés Fichiers attachés

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Bonjour thigoud, bienvenue sur le forum.
    Tu peux (peut-être) faire ça en utilisant l'événement "selectionchange" de la feuille de calculs mais ce n'est pas évident.
    L'événement se produit quand on change de cellule.
    Si en sortant de cellule B1 le commentaire a été modifié, alors on modifie le commentaire de la cellule D2... (ce que tu demandes)
    Cela implique de mémoriser le texte en entrant dans la cellule et le tester en quittant la cellule. Or il n'existe pas d'événement Exit pour une cellule.
    On doit donc feinter le système.
    Pour ça, il faut mémoriser l'adresse de la cellule active.

    Pour le principe :
    Si la cellule précédente était B1, quelque soit la cellule dans laquelle on va, on vérifie que le commentaire a été modifié.
    Donc, quand on entre dans B1, on doit systématiquement mémoriser le contenue du commentaire.

    Dans la pratique :
    Le seul moyen que je vois est la déclaration de deux variables publiques,
    - une contenant l'adresse de la dernière cellule activée,
    - une contenant le texte du commentaire associé.

    Si B1 est activé, on mémorise le commentaire
    A chaque changement de cellule,
    - on vérifie que la dernière cellule active "était" B1
    - Si B1 était la dernière cellule active, on vérifie si le commentaire a été modifié.
    - S'il a été modifié, on change celui de D2
    Dans tous les cas, avant de sortir de la procédure, on mémorise la nouvelle adresse.

    Reste plus qu'à écrire le code dans la feuille de code de la feuille de calculs, dans l'événement SelectionChange. Ce qui devrait donner à peu près ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Public Adres As String
    Public Commentaire As String
     
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Not Target.Address = "$B$1" Then _
            Range("B1").Comment.Visible = False
     
        If Adres = "$B$1" Then
            If Commentaire <> Range("B1").Comment.Text Then _
                Range("D2").Comment.Text Text:="ce que tu veux" & Chr(10) & Range("B1").Comment.Text
        End If
        If Target.Address = "$B$1" Then
            Range("B1").Comment.Visible = True
            Commentaire = Range("B1").Comment.Text
        End If
        Adres = Target.Address
        If Adres = "$D$2" Then
            Range("D2").Comment.Visible = True
            Else
            Range("D2").Comment.Visible = False
        End If
    End Sub
    Inconvénient de la méthode : Pour qu'elle fonctionne, tu dois te positionner dans la cellule, sinon je ne connais pas celle consistant à identifier le commentaire "actif" (et je doute même qu'elle existe)
    C'est la raison pour laquelle je masque les commentaires quand on en sort de l'une ou l'autre cellule.
    Les commentaires doivent exister en B1 et C2 avant de tester cette procédure
    Bonne soirée

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Par défaut Merci pour la réponse
    Au fait c'est beaucoup plus compliqué que ça, je m'explique:
    J'ai un premier fichier Excel appelé Ref.xls qui contient plein de cellules colorées (il y a un code couleur significatif) avec des commentaires qui ont du texte multicolore (couleurs aussi significatives).
    J'ai d'autres fichiers Excel qui pointent sur ce fichier de référence. c'est là que les problèmes commencent:
    Je n'arrive pas à créer de liens entre les cellules afin de récupérer les couleurs de fond des cellules du fichiers Ref ainsi que les commentaires dans leur intégralité (avec le texte de couleur...)
    Bien sur, le fichier Ref peut évoluer (couleur de fond et commentaires) et je dois me retaper tous les fichiers qui pointe sur celui ci afin de mettre à jour les cellules concernées.
    Voila, c'est un peu compliqué, mais à l'air de l'informatique, je ne pensais pas tomber sur pareil soucis.
    Bien à Vous
    Thigoud

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/09/2006, 15h09
  2. Remerciements, propositions et commentaires
    Par HCath dans le forum Discussions diverses
    Réponses: 57
    Dernier message: 24/08/2006, 10h22
  3. [VB6] mettre en commentaires...
    Par nd25 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/04/2004, 15h15
  4. [VB6] - Mettre un morceau de ligne en commentaire
    Par inotna2099 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 12/11/2002, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo