IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comment détecter l'ajout d'un commentaire ou d'une note [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 88
    Par défaut Comment détecter l'ajout d'un commentaire ou d'une note
    Bonjour,

    Connaissez-vous un moyen pour intercepter l'ajout et la modification d'une note car il semblerait qu'il n'existe pas d'évènement particulier rattaché à la création d'une note.

    Mon besoin serait de faire suivre une note qui vient d'être créée dans une feuille sur les feuilles suivantes.

    Exemple : sur la feuille 1 une note est ajoutée en A5, aussitôt je la duplique en A5 sur les feuilles 2,3....13
    Si cette note est ensuite modifiée sur la feuille 7, aussitôt elle est dupliquée sur les feuilles 8,9...13 laissant les notes des feuilles 1,2...7 inchangées.

    J'avais pensé me sortir d'affaire avec le petit code suivant mais je viens de m'apercevoir que bien qu'il fonctionne à peut prêt il ne correspond pas vraiment à mes attentes car si j'active une des feuilles précédent la feuille 7, ce code se lancera de nouveau et écrasera les modifications apportés dans la cellule A5 des feuilles 7,8,9...13 alors que je voudrais que ça ne se fasse que si c'est une nouvelle note qui est ajoutée ou si une note est modifiée mais pas systématiquement quand j'active une feuille.


    Si vous avez une idée pour contourner ce problème, je suis preneur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Private Sub Worksheet_Activate()
    Dim Ind, F, N As Integer
     
    Application.EnableEvents = False
    Application.ScreenUpdating = False
     
    'Copier-coller toutes les Notes rattachées aux cellules A3 à A49 de la feuille précédente
    'sur l'ensembles des 12 feuilles suivantes
    'Vérifier que l'index de la feuille active soit compris entre 2 et 13
    If ActiveSheet.Index > 1 And ActiveSheet.Index < 14 Then
        'récupère l'index de la feuille active
        Ind = ActiveSheet.Index
        'Passe en revue chaque cellule comprise entre A3 et A49 sur la feuille précédente
        For N = 3 To 49
            'test si cette cellule est vide
            If Sheets(Ind - 1).Cells(N, 1).Value <> "" Then
                'vérifier si un commentaire est rattaché à cette cellule
                If Not Sheets(Ind - 1).Cells(N, 1).Comment Is Nothing Then
                    'copier le commentaire
                    Sheets(Ind - 1).Cells(N, 1).Copy
                    'Coller ce commentaire sur chacune des feuilles suivantes jusqu'à la feuille 13 maxi
                    For F = Ind To 13
                        Sheets(F).Activate
                        Sheets(F).Cells(N, 1).PasteSpecial Paste:=xlPasteComments, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                    Next F
                End If
     
            Else
                'on sort de la boucle dès la 1ere cellule vide car les autres cellules en dessous sont forcement vide
                Exit For
            End If
     
        Next N
     
    'Revenir sur la feuille de départ
    Sheets(Ind).Activate
     
    End If
     
    Application.EnableEvents = True
    Application.ScreenUpdating = True
     
    End Sub

  2. #2
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour,
    j'ai l'habitude sur mes onglets protégés de "réouvrir" la saisie des notes à travers un form. L'activation se fait par exemple sur double clic ou via l'insertion d'option dans le menu contextuel Cell. On ouvre alors un formulaire avec une grosse zone de texte et trois boutons ok / annuler / supprimer.

    Du coup comme c'est toi qui va générer la note tu pourras faire les duplications que tu veux.

    Deux remarques : on perd la mise en forme élaborée (couleur, gras etc.) des notes, et la déprotection pour insérer/supprimer la note doit être totale, le UserInterfaceOnly ne suffit pas.

    Ça ressemble à ça :

    Nom : Sans titre.png
Affichages : 124
Taille : 2,8 Ko

    Avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Option Explicit
    Private Sub OK_Click()
    On Error GoTo fin_OK
    DeProt Selection.Parent, True
    With Selection.Cells(1)
        .ClearComments
        With .AddComment(Replace(Me.MonTexte.Value, Chr(13), ""))
            .Shape.Height = 160
            .Shape.Width = 160
        End With
    End With
    fin_OK:
    Prot Selection.Parent
    Unload Me
    End Sub
    Private Sub DEL_Click()
    On Error GoTo fin_del
    DeProt Selection.Parent, True
    With Selection.Cells(1)
        .ClearComments
    End With
    fin_del:
    PoseLog Selection, LogComm
    Prot Selection.Parent
    Unload Me
    End Sub
     
    Private Sub EXIT_Click()
    Unload Me
    End Sub
     
    Private Sub UserForm_Activate()
    With Selection.Cells(1)
        Me.Caption = Me.Caption & .Address
        On Error Resume Next
        Me.MonTexte = .Comment.Text
    End With
    End Sub
    Les sub prot et deprof sont des utilistaires qui encapsulent la (de)protection des feuilles.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 88
    Par défaut
    Citation Envoyé par Tête de chat Voir le message
    Du coup comme c'est toi qui va générer la note tu pourras faire les duplications que tu veux
    .
    Bonjour Tête de chat,

    Merci de ta proposition mais le problème c'est que ce n'est pas moi qui ajoute ou modifie les notes. Le fichiers est ouvert par beaucoup de salariés.
    Moi je cherche justement à écrire un code qui puisse détecter quand une note est créée ou modifiée pour ensuite la dupliquer ou pas suivant si c'est une vieille note déjà existante ou une nouvelle.

    Merci de me permettre d'éclaircir ce point.😉
    Bonne journée !

  4. #4
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Re,
    c'est que ce n'est pas moi qui ajoute ou modifie les notes
    J'avais bien compris

    Ce que je voulais dire, c'est qu'une fois que tu as protégé tes onglets la seule façon de saisir des notes sera via le formulaire que tu auras mis à disposition donc en ce sens c'est toi qui insère le commentaire.
    il suffira donc d'inclure ton code derrière le bouton OK.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 88
    Par défaut
    Citation Envoyé par Tête de chat Voir le message
    Re,

    J'avais bien compris

    Ce que je voulais dire, c'est qu'une fois que tu as protégé tes onglets la seule façon de saisir des notes sera via le formulaire que tu auras mis à disposition donc en ce sens c'est toi qui insère le commentaire.
    il suffira donc d'inclure ton code derrière le bouton OK.
    Désolé pour le retard de ma réponse, je n'étais pas au bureau ces derniers jours.

    Merci pour tes précisions car je n'avais pas compris le principe et je restais focalisé sur la gestion classique des notes mais effectivement avec ta proposition ça devrait le faire. 👍

    Je vais tenter de mettre ça en place et je reviendrai te dire si c'est OK.😊

    Bonne journée,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CR 9.1] comment faire pour ajouter un tableau dans un état?
    Par anneso108 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 28/03/2006, 14h40
  2. Réponses: 8
    Dernier message: 26/03/2006, 15h09
  3. Réponses: 2
    Dernier message: 03/01/2006, 14h58
  4. Comment faire pour ajouter une ligne seulement !
    Par Fredri dans le forum Access
    Réponses: 1
    Dernier message: 26/12/2005, 11h44
  5. comment lister les ajouts/suppression ?
    Par debdev dans le forum Access
    Réponses: 4
    Dernier message: 21/11/2005, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo