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 Sub

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 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 Sub

Beaucoup 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 Sub

La 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 Sub

Merci à 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 Sub

Pourrait-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 Boolean
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
    If Annuler = True Then Exit Sub

    Call LignesRegularisationColonnesExplications

End Sub

Bonjour 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 Sub

Bonsoir 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

10toto.zip (29.19 Ko)

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 Sub

Bonjour 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 = True

et 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 Sub

le 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 If

Ton classeur :

6toto-v2.zip (30.62 Ko)

@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

Rechercher des sujets similaires à "copier coller commentaires"