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 :

Ajouter un commentaire VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut Ajouter un commentaire VBA
    Bonjour à tous,

    je bug !

    j'ai un code qui fait un transfert de données entre deux feuilles.
    le but :
    insèrer le commentaire qui :
    • affiche l'ancienne valeur de la cellule dans f2 dans le commentaire
    • indique la source (f1) de la nouvelle valeur
    • ne pas écraser un commentaire existant


    cette ligne de code :
    est normalement responsable de l'insertion du commentaire lors du transfert.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    f2.Cells(id.Row, .Cells(1, j)).AddComment "valeur de la cellule précédente" & f2.Cells(id.Row, .Cells(1, j)).Value & "  source  " & f1.Name
    Cette ligne :
    • Insère le commentaire mais :
    • affiche la nouvelle valeur de la cellule dans le commentaire et non pas l'ancienne
    • indique la source (f1) de la nouvelle valeur
    • écrase un commentaire existant


    Merci pour votre aide

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Bonjour,

    Si tu ne veux pas écraser le commentaire précédent, utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaCellule.Comment.Text Text:=MaCellule.Comment.text & "Commentaire à ajouter..."

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Bonjour,

    •écrase un commentaire existant
    Une proposition pour ne écraser le commentaire précédent
    (moi j'ai travaillé sur la cellule A2 je te laisse adapter)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub Macro1()
    Dim commentaire_prec As String
    'je regarde si il y a déjà un commentaire dans la cellule
    On Error Resume Next
    commentaire_prec = Range("A2").Comment.Text 
    On Error GoTo 0
    If Len(commentaire_prec) = 0 Then Range("A2").AddComment 'si non alors je le crée
     
    Range("A2").Comment.Text Text:=commentaire_prec & Chr(10) & "nouveau commentaire"
     
    End Sub
    •affiche la nouvelle valeur de la cellule dans le commentaire et non pas l'ancienne
    ça dépend a quel moment tu fait ta copie, si tu met le commentaire avant la copie tu aura l'ancienne valeur

    edit: @mat955
    Attention le code que tu propose renvoie une erreur si il n'y a pas de commentaire dans la cellule

    edit2: code corrigé, merci. Ca m'apprendra a changé le nom de ma variable en cours de route pour faire plus joli

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Halaster08,

    Oui, j'ai donné ça à titre d'exemple. je reconnais qu'une belle gestion d'erreur aurait été plus propre

    En ce qui concerne ton code, il est beau, mais je pense que tu as loupé un tout petit truc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Len(commentaire_prec) = 0 Then Range("A2").AddComment 'si non alors je le crée
    J'étais obligé de critiqué pour ne pas perdre la face

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut
    Citation Envoyé par halaster08 Voir le message
    Bonjour,
    Une proposition pour ne écraser le commentaire précédent
    (moi j'ai travaillé sur la cellule A2 je te laisse adapter)
    ta proposition ne s'applique que sur une seule cellule ?
    ça dépend a quel moment tu fait ta copie, si tu met le commentaire avant la copie tu aura l'ancienne valeur
    donc, si je comprends bien,ta macro sera plutôt utiliser seule et non pas intégrer dans le code qui effectue le transfert ?

    merci les gars

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Citation Envoyé par Peerl Voir le message
    ta proposition ne s'applique que sur une seule cellule ?
    Là pour l'exemple oui, comme que le code que tu as proposé, tu peux sans souci l'intégrer dans une boucle

    donc, si je comprends bien,ta macro sera plutôt utiliser seule et non pas intégrer dans le code qui effectue le transfert ?
    Pas du tout, tu peux très bien l'intégrer à ta copie.
    Ce que je dis c'est que tu veux récupérer la valeur de ta cellule avant la copie, tu dois exécuté cette partie du code avant de faire la copie

  7. #7
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonsoir,


    Sur cet exemple, on enregistre en commentaire toutes les valeurs saisies dans les cellules de la colonne 3 avec les dates et heures de modification des cellules.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_Change(ByVal Target As Range)
      Application.EnableEvents = False
      If Target.Column = 3 And Target.Count = 1 Then    ' colonne 3 seulement
        If Target.NoteText = "" Then Target.AddComment    ' Création commentaire
        Target.Comment.Text Text:=Target.Comment.Text & _
           Format(Target.Value, "# ##0.00 €") & " Modifié par:" & Environ("UserName") & _
             " Le " & Now & vbLf
        Target.Comment.Shape.TextFrame.AutoSize = True
      End If
      Application.EnableEvents = True
    End Sub
    Boisgontier

  8. #8
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut
    Citation Envoyé par boisgontierjacques Voir le message
    Bonsoir,


    Sur cet exemple, on enregistre en commentaire toutes les valeurs saisies dans les cellules de la colonne 3 avec les dates et heures de modification des cellules.
    Bonjour, merci pour ton code .
    edit : dans ton code est ce que c'est possible de modifier la colonne 3 par une plage ?

  9. #9
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut
    Citation Envoyé par halaster08 Voir le message

    Une proposition pour ne écraser le commentaire précédent
    (moi j'ai travaillé sur la cellule A2 je te laisse adapter)

    D'après ma compréhension j'ai écris ce code ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    Dim commentaire_prec As String
    On Error Resume Next
    commentaire_prec = .comment.Text
    On Error GoTo 0
    If Len(commentaire_prec) = 0 Then f2.Cells(id.Row, .Cells(1, j)).AddComment 'si non alors je le crée
    f2.Cells(id.Row, .Cells(1, j)).comment.Text Text:=commentaire_prec & Chr(10) & "- source :" & f1.Name
     
    End Sub
    Quand je l’exécute, j'ai une erreur qui pointe sur " .comment " : membre de méthode ou de données introuvable
    à savoir, que je l'ai intégré dans mon code de transfère !! suis-je complètement à coté de la plaque ?
    Bon..Merci pour votre patience

  10. #10
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Avec un code incomplet c'est très difficile de te répondre.
    Impossible de savoir quels sont les valeurs de tes variables ni leur type, visiblement tu dois utiliser des with mais là on ne les vois pas

    Le code ci dessous fonctionne, mais je ne sais pas si ça correspond a ce que tu veux:
    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
    Sub aa()
    Set f1 = ActiveSheet
    Set f2 = ActiveSheet
    Set ID = Cells(1, 1)
    j = 1
     
    Dim commentaire_prec As String
    With f1
    On Error Resume Next
    commentaire_prec = f2.Cells(ID.Row, .Cells(1, j)).Comment.Text
    On Error GoTo 0
    If Len(commentaire_prec) = 0 Then f2.Cells(ID.Row, .Cells(1, j)).AddComment 'si non alors je le crée
    f2.Cells(ID.Row, .Cells(1, j)).Comment.Text Text:=commentaire_prec & Chr(10) & "- source :" & f1.Name
    End With
     
    End Sub

  11. #11
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut
    Re Bonjour,

    Voilà, j'ai trouvé une solution en me basant sur vos réponses et ce code réponds parfaitement au besoin :
    Merci à vous tous

    edit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    If Not id Is Nothing Then
                                tmp = f2.Cells(id.Row, .Cells(1, j))
                                 On Error Resume Next
                                 commentaire_prec = f2.Cells(id.Row, .Cells(1, j)).Comment.Text
                                 On Error GoTo 0
                                 .Cells(i, j).Copy Destination:=f2.Cells(id.Row, .Cells(1, j))
     
                                 If Len(commentaire_prec) = 0 Then f2.Cells(id.Row, .Cells(1, j)).AddComment 'si non alors je le crée
                                 f2.Cells(id.Row, .Cells(1, j)).AddComment.Text Text:="valeur précédente" & tmp & vbLf & "- source :" & f1.Name & " Le " & Now & Chr(10) & commentaire_prec
     
                            End If
                        End If

  12. #12
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Citation Envoyé par Peerl Voir le message
    Tu as raison, voici le fichier test (avec données imaginaire).
    Je n'ouvre pas la fichier joints, cf https://www.developpez.net/forums/d8...s-discussions/

    Peux-tu simplement copier ton code ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2016] Utilisation de la propriété "AddCommentThreaded" pour ajouter un commentaire en VBA
    Par shakapouet dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/06/2019, 17h54
  2. VBA Problème ajout de commentaires + filtre auto
    Par Contrec dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/02/2009, 08h56
  3. [VBA-E]Ajout de commentaires
    Par TOURNIER dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/03/2006, 12h15
  4. Existe il un moyen d'ajouter des commentaire dans un fichier
    Par Edoxituz dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 21/01/2006, 12h31
  5. [VB6] Ajouter un commentaire à une fonction d'une DLL
    Par Ace303 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 05/06/2003, 08h14

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