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 SubMerci 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 SubAlors ?
Bye !
Bonjour,
merci de ton aide, malheureusement cela ne fonctionne toujours pas.
Je me demande si ce n'est pas une limite de Excel ?
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 SubOK ?
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 SubOn 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 SubOK ?
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.
