Macro ne fonctionne pas

Bonjour le forum,

Je vais être franc, j'ai posé une question sur un autre forum sur lequel j'ai mieux l'habitude.

La question était: Comment copier des commentaires dans tout un classeur?

En réponse, une seule. Cette macro super bien expliquée mais petit souci, copie que le rectangle.

Les onglets vont de Janvier 2018 à Décembre 2018.

Les onglets sont identiques et toujours la même cellule A3.

Le texte est le suivant sur deux lignes dans Janvier 2018:

Cliquez cellule A3

Distance Mois Précédent

Sub CopieCommentaires()
Dim R As Worksheet 'déclare la variable R (onglet de Référence)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TC As String 'déclare la variable TC (Texte du Commentaire)

Set R = Worksheets("Janvier 2018") 'définit l'onglet de référence R (celui où il y a le commentaire, à adapter)
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
 TC = R.Range("A3").Comment.Text 'définit le texte du commentaire TC (génère une erreur si A3 ne contient pas de commentaire)
If Err <> 0 Then 'condition : si une erreur a été générée
     MsgBox "il n'y a pas de commentaire ! Action terminée." 'message
     Exit Sub 'sort de la procédure
End If 'fin de la condition
For Each O In Worksheets 'boucle sur tous les onglets O du classseur
     If O.Name <> R.Name Then 'condition : si le nom de l'onglet O est différent du nom de l'onget de référence R
         With O.Range("A3") 'prend en compte la cellule A3 de l'onglet de la boucle
             .Comment.Delete 'supprime un éventuel commentaire déjà existant
             .AddComment 'ajoute un commentaire
             Comment.Text = TC 'définit le texte du commentaire ajouté
         End With 'fin de la prise en compte de la cellule A3
     End If 'fin de le condition
Next O 'prochain onglet de la boucle
End Sub

Merci pour vos éventuelles réponses

Cordialement

Bonjour,

En effet le programme est bien expliqué et ne sert qu'à copier le commentaire, tu souhaites également copier la valeur de la cellule, c'est bien´ça?

Bonjour Ausecour

Non non que les commentaires.

Sauf que ça recopie bien le rectangle des commentaires mais qu'il est vide sans commentaire

Complément:

Je clique sur cette cellule et s'affiche cellule A5

Dans ThisWorkbook

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal R As Range)       'Cliquez cellule A4 La distance du Mois Précédent s'affiche (Pas de Double Clic)
  If R.Address = "$A$3" And R.Count = 1 Then Rows(5).Hidden = Not Rows(5).Hidden: R(1, 2).Select
End Sub

Curieux

Merci à toi

Cordialement

Bonjour,

vérifie le contenu du commentaire à copier et vérifie qu'il n'y a pas d'erreur au moment de l'ajout du commentaire

Sub CopieCommentaires()
Dim R As Worksheet 'déclare la variable R (onglet de Référence)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TC As String 'déclare la variable TC (Texte du Commentaire)

Set R = Worksheets("Janvier 2018") 'définit l'onglet de référence R (celui où il y a le commentaire, à adapter)
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
 TC = R.Range("A3").Comment.Text 'définit le texte du commentaire TC (génère une erreur si A3 ne contient pas de commentaire)
If Err <> 0 Then 'condition : si une erreur a été générée
     MsgBox "il n'y a pas de commentaire ! Action terminée." 'message
     Exit Sub 'sort de la procédure
End If 'fin de la condition
msgbox "commentaire à copier :  " & TC
For Each O In Worksheets 'boucle sur tous les onglets O du classseur
     If O.Name <> R.Name Then 'condition : si le nom de l'onglet O est différent du nom de l'onget de référence R
         With O.Range("A3") 'prend en compte la cellule A3 de l'onglet de la boucle
             .Comment.Delete 'supprime un éventuel commentaire déjà existant
             on error goto 0
             .AddComment 'ajoute un commentaire
             Comment.Text = TC 'définit le texte du commentaire ajouté
         End With 'fin de la prise en compte de la cellule A3
     End If 'fin de le condition
Next O 'prochain onglet de la boucle
End Sub

Rebonjour,

Ça doit être la ligne Comment.text = TC qui ne fonctionne pas, il ne manque pas un . avant le Comment?

Parce que si il manque le point ça ne fait pas Range("A3").Comment.text = TC

ça doit juste déclarer une variable ça se trouve, à vérifier, ça peut être tout bête, je trouvais ça étrange le fait qu'il manque un point à cet endroit...

Merci de me dire si ça résoud

EDIT : je pensé sincèrement que ça vient de ça, le commentaire est enregistré dans TC via ça :

TC = R.Range("A3").Comment.Text

du coup il faudrait que ce soit O.Range("A3").Comment.Text

C'est bien le point qui manque d'après moi faut de frappe j'imagine

Bonjour Ausecour,

il ne manque pas un . avant le Comment

bien vu !

Bonjour tous les deux

J'ai ajouté le . à .Comment.Text = TC 'définit le texte du commentaire ajouté

Ce qui donne:

Sub CopieCommentaires()
Dim R As Worksheet 'déclare la variable R (onglet de Référence)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TC As String 'déclare la variable TC (Texte du Commentaire)

Set R = Worksheets("Janvier 2018") 'définit l'onglet de référence R (celui où il y a le commentaire, à adapter)
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
 TC = R.Range("A3").Comment.Text 'définit le texte du commentaire TC (génère une erreur si A3 ne contient pas de commentaire)
If Err <> 0 Then 'condition : si une erreur a été générée
     MsgBox "il n'y a pas de commentaire ! Action terminée." 'message
     Exit Sub 'sort de la procédure
End If 'fin de la condition
MsgBox "commentaire à copier :  " & TC
For Each O In Worksheets 'boucle sur tous les onglets O du classseur
     If O.Name <> R.Name Then 'condition : si le nom de l'onglet O est différent du nom de l'onget de référence R
         With O.Range("A3") 'prend en compte la cellule A3 de l'onglet de la boucle
             .Comment.Delete 'supprime un éventuel commentaire déjà existant
             On Error GoTo 0
             .AddComment 'ajoute un commentaire
             .Comment.Text = TC 'définit le texte du commentaire ajouté
         End With 'fin de la prise en compte de la cellule A3
     End If 'fin de le condition
Next O 'prochain onglet de la boucle
End Sub

ça bug

Erreur de compilation

Affectation à une constante non autorisée

bonjour

essaie avec

.addcomment TC

et supprime la ligne

.comment.text=TC

Sinon avec l'enregistreur de macro j'ai trouvé ça pour changer le contenu d'un commentaire :

Range("A1").Comment.Text Text:="blabla"

du coup il faudrait plutôt mettre .Comment.Text Text:= TC

J'ai testé sur un classeur de test et ça fonctionne écrit comme ça.

Ça donnera donc :

Sub CopieCommentaires()
Dim R As Worksheet 'déclare la variable R (onglet de Référence)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TC As String 'déclare la variable TC (Texte du Commentaire)

Set R = Worksheets("Janvier 2018") 'définit l'onglet de référence R (celui où il y a le commentaire, à adapter)
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
 TC = R.Range("A3").Comment.Text 'définit le texte du commentaire TC (génère une erreur si A3 ne contient pas de commentaire)
If Err <> 0 Then 'condition : si une erreur a été générée
     MsgBox "il n'y a pas de commentaire ! Action terminée." 'message
     Exit Sub 'sort de la procédure
End If 'fin de la condition
MsgBox "commentaire à copier :  " & TC
For Each O In Worksheets 'boucle sur tous les onglets O du classseur
     If O.Name <> R.Name Then 'condition : si le nom de l'onglet O est différent du nom de l'onget de référence R
         With O.Range("A3") 'prend en compte la cellule A3 de l'onglet de la boucle
             .Comment.Delete 'supprime un éventuel commentaire déjà existant
             On Error GoTo 0
             .AddComment 'ajoute un commentaire
             .Comment.Text Text:= TC 'définit le texte du commentaire ajouté
         End With 'fin de la prise en compte de la cellule A3
     End If 'fin de le condition
Next O 'prochain onglet de la boucle
End Sub

Enfin!!!

Merci à toux ceux qui m'ont aidé

Je m'excuse de n'avoir pu fournir de fichier même épuré

Bonne fin de soirée à tous

Option Explicit
Sub CopieCommentaires()
Dim R As Worksheet 'déclare la variable R (onglet de Référence)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TC As String 'déclare la variable TC (Texte du Commentaire)

  Set R = Worksheets("Janvier 2018") 'définit l'onglet de référence R (celui où il y a le commentaire, à adapter)
  On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
  TC = R.Range("A3").Comment.Text 'définit le texte du commentaire TC (génère une erreur si A3 ne contient pas de commentaire)
  If Err <> 0 Then 'condition : si une erreur a été générée
     MsgBox "il n'y a pas de commentaire ! Action terminée." 'message
     Exit Sub 'sort de la procédure
  End If 'fin de la condition
  MsgBox "commentaire à copier :  " & TC
  Application.EnableEvents = False
  For Each O In Worksheets 'boucle sur tous les onglets O du classseur
     If O.Name <> R.Name Then 'condition : si le nom de l'onglet O est différent du nom de l'onget de référence R
       R.Range("A3").Copy O.Range("A3")
     End If 'fin de le condition
  Next O 'prochain onglet de la boucle
  Application.EnableEvents = True
End Sub
Rechercher des sujets similaires à "macro fonctionne pas"