Script fonctionnel mais problème de répétition

Bonjour à tous et merci pour cette communauté.

Je me permets de vous demander un petit peu d'aide.

J'ai trouvé un super script VBA sur Internet, permettant d'insérer un commentaire automatiquement à partir d'une donnée d'une cellule. Jusque là tout va bien.

Mon souci se pose lorsque je veux répéter cette même action, j'ai l'impression que cela fonctionne totalement aléatoirement.

J'ai mis que 6 commentaires pour comprendre le souci. Mais mon script le fera sur une 50aines de cellules à terme.

Sub Ajout_Commentaire()
Dim CelS As Range, CelDest As Range, AncienCom As Variant

'je prends la case B3 et je la met en commentaire sur plusieurs cellules
Set CelS = Worksheets("Ne pas modifier").Range("B3")
Set CelDest = ActiveSheet.Range("AC3")
Set CelDest = ActiveSheet.Range("BD3")
Set CelDest = ActiveSheet.Range("CE3")

Set CelS = Worksheets("Ne pas modifier").Range("B4")
Set CelDest = ActiveSheet.Range("AC4")
Set CelDest = ActiveSheet.Range("BD4")
Set CelDest = ActiveSheet.Range("CE4")

With CelDest
    On Error Resume Next
    .Comment.Delete
    .AddComment
    .Comment.Shape.TextFrame.AutoSize = True
    .Comment.Text CStr(CelS)
End With

End Sub

Merci pour votre aide.

PS; J'ai aussi essayé de rassembler les cellules sur une seule ligne du script mais ça ne fonctionne pas du tout :

Set CelDest = ActiveSheet.Range("AC3", "AD3")
Set CelDest = ActiveSheet.Cells("AC3", "AD3")

Bonjour et bienvenue sur le forum

Essaie avec ce code :

Sub Ajout_Commentaire()

    'je prends la case B3 et je la met en commentaire sur plusieurs cellules
    Range("AC3,BD3,CE3, AC4,BD4,CE4") = Range("B3")
End Sub

Alors ?

Bye !

Bonjour,

merci de ton aide, malheureusement cela ne fonctionne toujours pas.

Je me demande si ce n'est pas une limite de Excel ?

C'est curieux, ça marche sur mon PC :

Bye :

7classeur1-v1.xlsm (25.72 Ko)
capture

Bye !

Peut-être que c'est l'ajout de commentaire qui ne peut pas être multiple ?

Car là le texte est effectivement dans une cellule, mais si tu fais le test avec la fonction Set CelDest cela ne fonctionne plus.

gmb a écrit :

mais si tu fais le test avec la fonction Set CelDest cela ne fonctionne plus.

Eh Non ! Pas en utilisant CelDest comme tu le fais.

En fait, quand tu écris :

Set CelDest = ActiveSheet.Range("AC3")
Set CelDest = ActiveSheet.Range("BD3")
Set CelDest = ActiveSheet.Range("CE3")

La cellule AC3 prend le nom de ‘’CelDest’’ puis ce nom est attribué à la cellule BD3 et enfin à CE3

Quand elle a lu les 3 instruction, la macro ne retient que la dernière valeur de celDest, c’est-à-dire qu’elle l’associe à la cellule CE3.

C’est pour cela que le report de la valeur de ton commentaire (cellule B3) ne se fait que dans une seule cellule : la denière que tu as appelée celDest.

Pour parvenir à tes fins, tu as plusieurs solutions :

• La plus simple : celle que je t’ai indiquée et qui ne passe pas par le nom de cellules

• Nommer chacune des cellules de distination d’un nom différent et tu pourras alors écrire :

Sub Ajout_Commentaire()
    'je prends la case B3 et je la met en commentaire sur plusieurs cellules
    Set celDest1 = ActiveSheet.Range("AC3")
    Set celDest2 = ActiveSheet.Range("BD3")
    Set celdest3 = ActiveSheet.Range("CE3")

    Set celDest4 = ActiveSheet.Range("AC4")
    Set celDest5 = ActiveSheet.Range("BD4")
    Set celdest6 = ActiveSheet.Range("CE4")

    Union(celDest1, celDest2, celdest3, celDest4, celDest5, celdest6) = Range("B3")
End Sub

• Nommer celDest l’ensemble des cellules et tu pourras alors écrire :

Sub Ajout_Commentaire()
    'je prends la case B3 et je la met en commentaire sur plusieurs cellules
    Set celDest = Range("AC3,BD3,CE3, AC4,BD4,CE4")
    celDest.Value = Range("B3")
End Sub

OK ?

Bye !

Bonjour,

Je comprends mieux merci beaucoup.

Alors le script fonctionne, mais le but c'est de mettre en commentaire et non le contenu dans mes cellules. Et pour le coup j'ai beau le retourner n'y arrive pas pour le refaire fonctionner en commentaire

Sub Ajout_Commentaire()
    'je prends la case B3 et je la met en commentaire sur plusieurs cellules
   Set CelDest = Range("AC3,BD3,CE3")
   CelDest.Value = Range("B3")

   Set CelDest = Range("AC4,BD4,CE4, AC4,BD4,CE4")
  CelDest.Value = Range("B4")

With CelDest
    On Error Resume Next
    .Comment.Delete
    .AddComment
    .Comment.Shape.TextFrame.AutoSize = True
    .Comment.Text CStr(CelS)
End With
End Sub

On ne peut pas mettre un commentaire d'un coup dans un groupe de cellules.

Il faut les passer une après l'autre.

Mais on peut faire ça avec une boucle :

Sub Ajout_Commentaire()
    'je prends la case B3 et je la met en commentaire sur plusieurs cellules
    Set CelDest = Range("AC3,BD3,CE3, AC4,BD4,CE4")
    For Each c In CelDest
        On Error Resume Next
        c.Comment.Delete
        c.AddComment
        c.Comment.Text Text:=Range("B3").Value
    Next c
End Sub

OK ?

Bye !

Hello,

Merci beaucoup pour ces précisions, bon ça devient compliquer. Je vais voir cela plus tard, merci en tout cas pour toutes ces précisions !

Bonne journée.

Rechercher des sujets similaires à "script fonctionnel probleme repetition"