Espionnage: Comment limiter macro á qques colonnes?

Bonjour!

Sur le formidable site http://boisgontierjacques.free.fr/ , j'ai trouvé les lignes de code qu'il mme manquait pour espionner les utilisateurs de mon fichier...

Tout marche parfaitement, la macro permet de voir quelles cellules ont été modifiées, par qui, quand...ect, c'est super....

Mais le pb est que je souhaiterais limiter l'espionnage á seulement qques colonnes de certaines de mes feuilles...

Qq'un pourrait adapter mes lignes de codes á un espionnage qui se limite aux colonnes 1 et 2 de la feuill1 et a la colonne 3 de la feuill2 par exemple!

Voici le code:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  If Sh.Name <> "Espion" Then
    Application.EnableEvents = False
    temp = Application.CountA(Sheets("espion").Range("a:a")) + 1
    Sheets("espion").Cells(temp, 1) = Sh.Name
    Sheets("espion").Cells(temp, 2) = Target.Address
    Sheets("espion").Cells(temp, 3) = Now
    Sheets("espion").Cells(temp, 4) = [mémo]
    Sheets("espion").Cells(temp, 5) = Target
    Sheets("espion").Cells(temp, 6) = Environ("username")
    Application.EnableEvents = True
  End If
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
   If Target.Count = 1 Then
      ActiveWorkbook.Names.Add Name:="mémo", RefersToR1C1:="=" & Chr(34) & Target.Value & Chr(34)
   End If
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    ActiveWorkbook.Names.Add Name:="mémo", RefersToR1C1:="=" & Chr(34) & ActiveCell.Value & Chr(34)
End Sub

Car je vous avoue que je l'utilise sans vraiment le comprendre, dc j'arrive pas a le modifier...

Merci bcp de votre aide!

Bonjour,

remplace ton premier code par celui-ci (que j'ai commenté) :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name <> "Espion" Then 'si le nom de la feuille où une donnée est modifiée n'est pas "Espion"
If (Sh.Name = "Feuil1" And Target.Column <= 2) Or _
    (Sh.Name = "Feuil2" And Target.Column = 3) Then 'si dans les 2 premières colonnes de la feuille 1
                                                    ' ou dans la 3ème de la feuille 2
Application.EnableEvents = False    'désactivation des évènements
temp = Application.CountA(Sheets("espion").Range("a:a")) + 1    'calcul des données dans la première
                    'colonne de la feuille "Espion" + 1 correspondant à la première ligne vide
Sheets("espion").Cells(temp, 1) = Sh.Name   'inscription de la feuille modifiée
Sheets("espion").Cells(temp, 2) = Target.Address    'adresse de la cellule modifiée
Sheets("espion").Cells(temp, 3) = Now   'heure de la modification
Sheets("espion").Cells(temp, 4) = [mémo]    'ancienne valeur de la cellule, obtenue lorsque
        'tu changes de sélection dans ta feuille, ou que tu actives la feuille
        'par insertion d'un nom dont la valeur est celle de la cellule sélectionnée
Sheets("espion").Cells(temp, 5) = Target    'nouvelle valeur
Sheets("espion").Cells(temp, 6) = Environ("username")   'nom de l'ordinateur
Application.EnableEvents = True 'réactivation des évènements
End If
End If
End Sub

merci bcp! ca a l'air de marcher nikel!

faut encore que je fasse qques tests, mais ca a l'air bon!

merci bcp.... je te redis si je trouve un pb!

tchao bonne soirée!

hello

que voilà un code très commenté.

on devrait tous en prendre de la graine. Bravo !

Merci bcp pour les lignes de codes et les commentaires, ca marche et ca m'a bien aidé á comprendre!!!

Cependant, j'ai un bug (enfin le message debug) parfois sur cette ligne de code, qd j'utilise une autre macro... Mais ca ne le fait pas tout le tps... bizarre... en fait, ma macro est assez compliquée car elle a pour but de faire la somme de chiffres selectionnées, grace a un tri et a un sous total...

Bref, quand j'utilise cette macro, ca me fait une bug sur la ligne de l'espionnage parfois...

Est ce qu'il est possible d'utiliser une autre ecriture pour la ligne et peut etre qu'il n'y aurait plus le bug comme ca...!

Le code de l'espionnage est le suivant>>>c'est la ligne en gras qui bug!

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Sh.Name <> "Espion"

If (Sh.Name = "Feuil1" And Target.Column <= 2) Or _

(Sh.Name = "Feuil2" And Target.Column = 3) Then

Application.EnableEvents = False

temp = Application.CountA(Sheets("espion").Range("a:a")) + 1

Sheets("espion").Cells(temp, 1) = Sh.Name

Sheets("espion").Cells(temp, 2) = Target.Address

Sheets("espion").Cells(temp, 3) = Now

Sheets("espion").Cells(temp, 4) = [mémo]

Sheets("espion").Cells(temp, 5) = Target

Sheets("espion").Cells(temp, 6) = Environ("username")

Application.EnableEvents = True

End If

End If

End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

If Target.Count = 1 Then

ActiveWorkbook.Names.Add Name:="mémo", RefersToR1C1:="=" & Chr(34) & Target.Value & Chr(34)

End If

End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

ActiveWorkbook.Names.Add Name:="mémo", RefersToR1C1:="=" & Chr(34) & ActiveCell.Value & Chr(34)

End Sub

Merci de votre aide

je voudrais au moins comprendre ce que veut dire cette ligne... si c'est possible...

merci

Bonsoir,

@ jmd, merci pour ce compliment, mais j'ai un gros défaut, je suis parfois trop direct, et oublie bien souvent de commenter mes codes. Merci

@ dabom

je voudrais au moins comprendre ce que veut dire cette ligne... si c'est possible...

Bien sûr,

ce code te permet d'inscrire le nom de la valeur de la cellule que tu viens de sélectionner.

Pour en vérifier la valeur, tu vas dans Insertion/Nom/Définir, et tu cliques sur "mémo"

pour vérifier, dans une cellule vide, tu entres :

=mémo

et, ensuite, sélectionne des cellules non vides

dans ta cellule, tu auras la valeur de cette cellule

Maintenant, si tu couples cette macro, avec une autre, que je ne connais pas, il risque effectivement d'y avoir quelques interférences, surtout, si dans le code de l'autre macro, il apparait quelques

[Cellule_quelconque].Select

merci pour l'info!

Rechercher des sujets similaires à "espionnage comment limiter macro qques colonnes"