Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Modifier tous les commentaires d’une sélection

  • Initiateur de la discussion Initiateur de la discussion mumusse
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

mumusse

Guest
Bonjour
Je suis très novice en VBA. Je souhaite modifier les commentaires d’une sélection (alignement auto)
J’arrive à modifier tous les commentaires de la feuille active
For Each c In ActiveSheet.Comments
c.Shape.TextFrame.AutoSize = True
Next c
J’arrive à modifier le commentaire de la cellule active je sélectionne une cellule et lance la macro
With ActiveCell.Comment
.Shape.TextFrame.AutoSize = True
End With
J’essaie, sans y parvenir, de faire une macro qui modifie les commentaires d’une plage sélectionnée à la souris
1. Je sélectionne une plage à la souris
2. Je lance la macro
3. Cette macro modifie tous les commentaires présents dans ma sélection
Merci d’avance pour votre aide.
 
Dernière modification par un modérateur:
Re : Modifier tous les commentaires d’une sélection

Bonjour

Un fichier exemple serait le bienvenu pour que nous puissions tester nos propositions.

EDITION: Salut Robert, oui on s'est juste frôlé. On a évité la collision à 2 minutes près 😉
 
Dernière édition:
Re : Modifier tous les commentaires d’une sélection

Bonjour Mumusse, bonjour le forum,

Essaie comme ça :
Code:
Dim cel As Range
For each cel in selection
     With cel.Comment
     '...
     End With
Next cel

[Édition]
Bonjour JM on s'est croisé...
 
Re : Modifier tous les commentaires d’une sélection

bonjour et merci
j'ai essayé mais mon niveau est proche de zéro
Dim cel As Range
For Each cel In Selection
With cel.Comment
.Shape.TextFrame.AutoSize = True
End With
Next cel
End Sub

mais
erreur d'exécution "91"
variable objet ou variable de bloc with non définie
j'ai oublié quoi ?
 
Re : Modifier tous les commentaires d’une sélection

Bonsoir Mumusse, bonsoir le forum,

Tu n'as rien oublié, c'est moi... Si dans ta sélection une cellule n'a pas de commentaire ça plante ! Pour éviter ça, le code corrigé et commenté :
Code:
Sub Macro1()
Dim cel As Range 'déclare la variable cel (CELlule)

For Each cel In Selection 'boucle sur toutes les cellules cel de la sélectoin
    On Error Resume Next 'gestion des erreurs (en cas d'erreur, passe à la ligne suivante)
    With cel.Comment 'prend en compte le commentaire de la cellule cel (provoque une erreur si cel n'a pas de commentaire)
        If Err <> 0 Then Err = 0: GoTo suite 'si un erreur a été générée, annule l'erreur, va à l'étiquette "suite"
        .Shape.TextFrame.AutoSize = True 'taille automatique du commentaire
    End With 'fin de la prise en compte du commentaire de la cellule cel
suite: 'étiquette
On Error GoTo 0 'annule la gestion des erreurs
Next cel 'prochaine cellule de la boucle
End Sub
 
Re : Modifier tous les commentaires d’une sélection

bonsoir barbatruc

tous mes remerciements ça fonctionne
j'ai beaucoup de boulot en VBA mais je vais m'y mettre cet hiver
bonne fin de journée
 
Bonjour,
J'ai besoin de votre précieuse aide.
Je ne connais rien au VBA ni aux macros🙁, mais je pense que la macro fournie à Mumusse en 2012 😳pourrait résoudre mon soucis.
Je souhaite mettre à jour une information à l'intérieur des commentaires qui se trouvent sur ma feuille de calcul.
J'ai toute une plage qui contient pour chaque cellule un même commentaire que je souhaiterai modifier pour l'ensemble de la plage de cellules concernée.
Exemple : pour la plage J11:J278
le commentaire #DC-1{-&706804-&706805=4}@EXP!$J$5@EXP!$J$6@CA:' CENTRES - NATURES'!$B$2@DC:VALL contient la valeur $B$2 qui doit être remplacée par la valeur $B$9
(Le commentaire provient du paramétrage de la cellule par un complément provenant de notre logiciel de compta et qui nous permet d'extraire des données de notre logiciel directement dans un tableau Excel mis en forme librement par nous).
Ce paramétrage insert un commentaire dans la cellule concernée. Je n'ai pas de moyens de mettre à jour de façon globale la totalité des cellules, je dois les traiter unes à unes (ce qui fait beaucoup de travail 😕...)
Quelqu'un pourrait-il m'aider S.V.P ?
D'avance merciiiii 🙂
 
Bonjour Compta compta, bonjour le forum,

Si ta plage est fixe, remplace Selection par Range("J11:J278"), sinon, sélectionne d'abord la plage et lance la macro ensuite :
Sub Macro1()
Dim cel As Range 'déclare la variable cel (CELlule)

For Each cel In Selection 'boucle sur toutes les cellules cel de la sélectoin
On Error Resume Next 'gestion des erreurs (en cas d'erreur, passe à la ligne suivante)
With cel 'prend en compte le commentaire de la cellule cel (provoque une erreur si cel n'a pas de commentaire)
If Err <> 0 Then Err = 0: GoTo suite 'si un erreur a été générée, annule l'erreur, va à l'étiquette "suite"
.Comment.Shape.TextFrame.AutoSize = True 'taille automatique du commentaire
.Comment.Delete
.AddComment
.Comment.Text Text:="#DC-1{-&706804-&706805=4}@EXP!$J$5@EXP!$J$6@CA:' CENTRES - NATURES'!$B$9@DC:VALL"
End With 'fin de la prise en compte du commentaire de la cellule cel
suite: 'étiquette
On Error GoTo 0 'annule la gestion des erreurs
Next cel 'prochaine cellule de la boucle
End Sub
 
Merci pour ta réponse Robert !
Le soucis (et je ne l'ai peut-être pas précisé 😳) c'est que chaque cellule contient un commentaire différent.
C'est à dire, dans l'exemple que j'ai pris, le début du commentaire #DC-1{-&706804-&706805=4}....... 706804 et 706805 correspondent à des comptes comptables. Dans une autre cellule, il peut très bien y avoir #DC-1{&601104+&626000=4}.......
Ta solution peut-elle fonctionner dans ce cas ?
 
Re,

Non ça ne marchera pas ce que je t'ai proposé. Essaie comme ça :


Sub Macro1()
Dim cel As Range 'déclare la variable cel (CELlule)

For Each cel In Selection 'boucle sur toutes les cellules cel de la sélectoin
On Error Resume Next 'gestion des erreurs (en cas d'erreur, passe à la ligne suivante)
With cel 'prend en compte le commentaire de la cellule cel (provoque une erreur si cel n'a pas de commentaire)
If Err <> 0 Then Err = 0: GoTo suite 'si un erreur a été générée, annule l'erreur, va à l'étiquette "suite"
.Comment.Shape.TextFrame.AutoSize = True 'taille automatique du commentaire
.Comment.Text Text:=Replace(.Comment.Text, "$B$2", "$B$9")
End With 'fin de la prise en compte du commentaire de la cellule cel
suite: 'étiquette
On Error GoTo 0 'annule la gestion des erreurs
Next cel 'prochaine cellule de la boucle
End Sub
 
MAGNIFIQUE !!! Ca fonctionne parfaitement !
Grand merci car grâce à toi, j'échappe à des heures de boulot rébarbatif 😵 !!!
Tout ça me donne encore plus envie de me plonger dans l'univers mystérieux du VBA et des macros !
Merci encore 😉 !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
1 K
M
Réponses
4
Affichages
1 K
MANTE
M
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…