Copier Coller commentaires dans autre cellule
Bonjour le forum
J'ai fait cette macro avec l'enregistreur qui fonctionne bien mais je voudrais y ajouter des msgBox indiquant la cellule à copier et la cellule de destination et une autre msgBox indiquant les commentaires à supprimer dans cellule d'origine.
Mais je pense qu'on peut faire dans la même msBox copier et supprimer. Merci d'avance pour vos retours
Cordialement
Sub CopierCollerSupprimerCommentaires()
Application.CutCopyMode = False
Range("A3").Select
Selection.Copy
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteComments, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("A3").Select
Selection.ClearComments
End SubBonjour,
Une piste à adapter à tes besoins :
Sub Commentaire()
Dim Cel1 As Range
Dim Cel2 As Range
On Error GoTo Fin
Set Cel1 = Application.InputBox("Cellule d'origine", , , , , , , 8)
Set Cel2 = Application.InputBox("Cellule de distination", , , , , , , 8)
Cel1.Copy
Cel2.PasteSpecial xlPasteComments, xlNone
Cel1.ClearComments
Application.CutCopyMode = False
Fin:
End SubBonjour Theze
Très bon début mais ça ne supprime pas les commentaires dans cellule d'origine
J'ai oublié de dire que j'avais cette macro dans la feuille et qu'il fallait que ça la change en même temps en la désactivant puis changeant l'affectation et la reactivant. Compliqué tout ça
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Cette MACRO ne fonctionne pas sur Cellule FUSIONNÉE
If Target.Address = "$A$2" Then 'Cellule à cliquez pour afficher et masquer Colonnes G à I
Call LignesRegularisationColonnesExplications
End If
End SubBeaucoup plus conplexe du coup
Pour résumer:
1 - Il faut aller dans la macro de la feuille Charges 2018 c'est à dire ceci
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Cette MACRO ne fonctionne pas sur Cellule FUSIONNÉE
If Target.Address = "$A$2" Then 'Cellule à cliquez pour afficher et masquer Colonnes G à I
Call LignesRegularisationColonnesExplications
End If
End SubLa mettre en commentaires
Appliquer la macro de Theze puis revenir dans la macro de la feuille et la réactiver (ne pas commenter bloc) et en mettant la nouvelle affectation de ligne (exemple "$A$5" à la place de "$A$2" )
Avec toute mes excuses pour les explications qui ne sont pas claires
Merci à toi
cordialement
Re,
mais ça ne supprime pas les commentaires dans cellule d'origine
"Cel1.ClearComments" supprime bien le commentaire de la cellule source mais comme je ne sais pas ce que fait la Sub "LignesRegularisationColonnesExplications", je ne peux pas te dire pourquoi, chez toi, le commentaire n'est pas supprimé !
Bonsoir Theze
C'est cette macro dans la feuille qui affiche et masque les colonnes de G à I c'est tout.
Il faut faire dans l'ordre:
Désactiver la macro de la feuille (commenter bloc)
Ensuite appliquer ta macro
Les commentaires sont bien copiés mais ils reste encore dans cellule d'origine => clic droit puis effacer commentaires cellule origine
Ensuite il faut revenir dans macro feuille et la réctiver (ne pas commenter bloc)
Exemple: Si je copie les commentaires de la cellule A3 (origine) vers cellule A2 par exemple avec ta macro il faut que je revienne ensuite modifier la macro de la feuille pour mettre A2 et la réactiver.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Cette MACRO ne fonctionne pas sur Cellule FUSIONNÉE
If Target.Address = "$A$3" Then 'Cellule à cliquez pour afficher et masquer Colonnes G à I
Call LignesRegularisationColonnesExplications
End If
End SubMerci à toi
Cordialement
Re,
Et si tu utilisais plutôt le clic droit pour cacher/afficher tes colonnes ?
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$A$3" Then 'Cellule à cliquez pour afficher et masquer Colonnes G à I
Call LignesRegularisationColonnesExplications
Cancel = True
End If
End Sub@Theze
Ah! oui super. Décidement je ne suis pas imaginatif!!!
Mercià toi
Bonne fin de WE
Bien cordialement
Bonjour,
Une piste à adapter à tes besoins :
Sub Commentaire() Dim Cel1 As Range Dim Cel2 As Range On Error GoTo Fin Set Cel1 = Application.InputBox("Cellule d'origine", , , , , , , 8) Set Cel2 = Application.InputBox("Cellule de distination", , , , , , , 8) Cel1.Copy Cel2.PasteSpecial xlPasteComments, xlNone Cel1.ClearComments Application.CutCopyMode = False Fin: End Sub
Bonjour le forum
Theze m'a fait cette macro pour copier les commentaires dans une autre cellule et ça fonctionne super.
Je m'excuse car effectivement ça efface bien les commentaires de la cellule d'origine.
Autre question:
Je suis obligé de désactiver dans la feuille la macro ci-dessous avant de faire éventuellement les modifications de commentaires
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Cette MACRO ne fonctionne pas sur Cellule FUSIONNÉE
If Target.Address = "$A$3" Then 'Cellule à cliquez pour afficher et masquer Colonnes G à I
Call LignesRegularisationColonnesExplications
End If
End SubPourrait-on la mettre dans la macro Sub Commentaire pour la mettre en commenter bloc puis la remettre en ne pas commenter bloc?
Merci à vous pour vos retours
Cordialement
Bonjour,
Utilises une variable déclarée Public dans un module standard pour servir d'interrupteur :
Public Annuler As BooleanPrivate Sub Worksheet_SelectionChange(ByVal Target As Range) 'Cette MACRO ne fonctionne pas sur Cellule FUSIONNÉE
If Target.Address <> "$A$3" Then Exit Sub 'Cellule à cliquez pour afficher et masquer Colonnes G à I
If Annuler = True Then Exit Sub
Call LignesRegularisationColonnesExplications
End SubBonjour Theze et merci
Si j'ai bien compris je copie les 2 macros dans un module standard?
Mais une fois copié il faut manuellement modidier A3 ou A2
Je m'explique si je copie les commentaires qui sont en A3 vers A2 il faut une fois copiés modifier manuellent A3 en A2
Pas mieux à faire?
Cordialement
Désolé, mais j'ai un peu de peine à te suivre !
Si je comprend bien, tu veux cliquer dans la cellule A3, que le commentaire qu'elle contient soit inscrit dans une autre cellule puis que ce commentaire soit supprimé de A3 et ensuite exécuter ta procédure "LignesRegularisationColonnesExplications" ?
Si c'est ça, mettre les deux procédures dans le module de la feuille concernée :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Cette MACRO ne fonctionne pas sur Cellule FUSIONNÉE
If Target.Address <> "$A$3" Then Exit Sub 'Cellule à cliquez pour afficher et masquer Colonnes G à I
Commentaire Target
Call LignesRegularisationColonnesExplications
End Sub
Private Sub Commentaire(Cible As Range)
Dim Cel As Range
On Error GoTo Fin
Set Cel = Application.InputBox("Cellule de distination", , , , , , , 8)
Cible.Copy
Cel.PasteSpecial xlPasteComments, xlNone
Cible.ClearComments
Application.CutCopyMode = False
Fin:
End SubBonsoir Theze
Voici le fichier (TOTO) épuré pour plus de compréhension.
Donc actuellement les Commentaires cellule A3
Je veux donc les copier dans la cellule A2 et faire un clic sur cellule A2 pour pouvoir afficher/Masquer les colonnes de G à I sans repasser par macro feuille et modifier "$A$3" par "$A$2"
Excuses moi pour la réponse tardive mais j'étais absent
Merci à toi
Cordialement
Bonjour,
Donc, si j'ai bien compris ta demande, tu voudrais que si il y a un commentaire dans la cellule A3 que tu puisses le copier dans une autre cellule (A2 par exemple) et dans le cas contraire, si le commentaire n'est plus en A3 tu veux que la sélection de la cellule cache tes colonnes ?
Si c'est ça, teste le code ci-dessous :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Cette MACRO ne fonctionne pas sur Cellule FUSIONNÉE
Dim Com As Comment
If Target.Address <> "$A$3" Then Exit Sub 'Cellule à cliquez pour afficher et masquer Colonnes G à I
Set Com = Target.Comment
'si il n'y a pas de commentaire dans la cellule A3, la sub est appelée
If Com Is Nothing Then
LignesRegularisationColonnesExplications
'sinon, le commentaire est déplacé
Else
Commentaire Target
End If
End SubBonjour Theze
Oui c'est ça.
La macro accroche à: Commentaire Target
Cordialement
Re,
Il faut que tu mettes la sub Commentaire dans le module de la feuille avec la procédure événementielle
Re bonjour Theze
J'ai beau essayé je n'y arrive pas. As-tu essayé de faire "tourné" mon fichier?
Bon je pense qu'on va arrêter là.
Merci de ton implication
Bien cordialement à toi
Re,
Oui j'ai bien essayé avec ton dernier fichier et le code fait bien ce que je lui demande mais est-ce vraiment ce que toi tu veux ? Comme je t'ai dis, j'ai un peu de peine à saisir ce que tu veux vraiment mais il est vrai que j'ai pas toujours la "comprenette" facile
Donc, je clique dans A3, la boite de message s'affiche et demande de sélectionner une cellule, je sélectionne A2, le commentaire est transféré à A2 et supprimé de A3 je resélectionne A3 et là, la sub "LignesRegularisationColonnesExplications" est appelée ! Pour bien tester, j'ai utilisé la ligne de code suivante à la place n'ayant pas la sub "LignesRegularisationColonnesExplications" :
Range("G:I").EntireColumn.Hidden = Trueet les colonnes G à I ont été cachées maintenant, je ne sais pas la suite que tu veux donner ? Sélectionner A2 et transférer à nouveau le commentaire dans A3 puis rendre visible les colonnes G à I ?
@Theze
On ne se comprend pas je crois
Lorsque les commentaires sont transférés dans la cellule A2 et dans la A3 supprimés c'est la cellule A2 qui doit Afficher / Masquer les colonnes G à I. La cellule A3 ne doit plus le faire.
Lorsque tu l'auras fait peux-tu me renvoyer le fichier TOTO STP.
Merci d'avance
Cordialement
Comme ceci alors ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Com As Comment
Set Com = Target.Comment
If Target.Address = "$A$3" Then
If Com Is Nothing Then Exit Sub Else Commentaire Target
End If
If Target.Address = "$A$2" Then
Range("G:I").EntireColumn.Hidden = True
'LignesRegularisationColonnesExplications
End If
End Sub
Private Sub Commentaire(Cible As Range)
Dim Cel As Range
On Error GoTo Fin
Set Cel = Application.InputBox("Cellule de distination", , , , , , , 8)
Cible.Copy
Cel.PasteSpecial xlPasteComments, xlNone
Cible.ClearComments
Application.CutCopyMode = False
Fin:
End Suble fait de cliquer dans A2 quand la boite de message demande la sélection, rappelle la procédure événementielle "SelectionChange()" et comme Target devient A2 c'est ensuite cette partie du code qui est exécuté :
If Target.Address = "$A$2" Then
Range("G:I").EntireColumn.Hidden = True
'LignesRegularisationColonnesExplications
End IfTon classeur :
@Theze
Un GRAND mieux les colonnes G à I sont bien masquées mais je ne peux pas les démasquer en cliquant sur la cellules A2
C'est ce que je veux c'est Masquer / Démasquer
On avance doucement mais surement
A+ peut-être
Cordialement à toi