Insérer le user et date&heure dans cellule lorsque modifications

Bonjour à tous,

Je suis en train de créer un journal d'événements où plusieurs utilisateurs peuvent y inscrire des données.

Je souhaite pouvoir insérer automatiquement l'identification de l'utilisateur et la date de modification.

Je travaille sur un réseau pro et les utilisateurs sont identifiés par une smartcard, le login donc est obligatoire pour travailler sur une machine.

Je souhaiterais donc ces insertions automatiques.

Voilà ce que j'ai trouvé un jour... mais ça ne fonctionne pas/plus

Dans ma feuille:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.CountLarge > 1 Then Exit Sub

If Not Intersect(Target, Me.UsedRange.Columns(15)) Is Nothing Then

Target.Offset(, 1).Value = Application.UserName

'Target.Offset(, 2).Value = VBA.Date & Chr(10) & VBA.Time

End If

Set Rng = Nothing

End Sub

Dans un module:

Function login() As String

login = Application.UserName

End Function

Function Modification()

Modification = VBA.Now

End Function

Je dois oublié quelque chose... mais je ne sais plus

Quelqu'un pourrait m'aider ?

D'avance merci

Bonjour,

Je pense que les 2 Function sont inutiles.

La ligne à modifier ... si j'ai bien compris ...

Target.Offset(, 1).Value = Environ("username") & " " & Now

Environ("username") donne le nom du compte utilisateur Windows.

Application.UserName donne le nom inscrit dans Excel > clique sur Fichier et regarde à droite

ric

Bonjour,

La variable Rng n'est utilisée nulle part, pourquoi écrire cela en fin de code ?

Set Rng = Nothing

Tu as créé 2 fonctions, mais ne les utilises jamais.

Target.Offset(, 1).Value = Application.UserName
'Target.Offset(, 2).Value = VBA.Date & Chr(10) & VBA.Time

Alors qu'il y aurait fallu :

Target.Offset(, 1).Value = login
Target.Offset(, 2).Value = Modification

La fonction Modification() doit renvoyer quelque chose

Function Modification() As String
Modification = VBA.Date & Chr(10) & VBA.Time
End Function

Je ne comprends pas à quoi sert

Me.UsedRange.Columns(15)

Utilise ceci pour parler de toute la colonne P

If Not Intersect(Target, Columns(15)) Is Nothing Then

Bonjour Millaï

Merci pour ces précieuses remarques !!! Excellente analyse.

J'ai néanmoins actuellement un petit problème... S'agissant de la colonne 15 en référence (maintenant c'est la 23), il s'agit de cellules fusionnées soit de 23 à 29, respectivement des colonnes W à AC.

Existe-il un moyen d'adapter la formule :

If Not Intersect(Target, Columns(15)) Is Nothing Then ?

D'avance merci.

Willau

Il faut indiquer à Columns les colonnes voulut :

If Not Intersect(Target, Columns("W:AC")) Is Nothing Then

Top classe ! Merci beaucoup...

Y a-t-il possibilité d'enlever/effacer les données login et modification si le contenu de la colonne 23 est effacé (= à vide) ?

Navré d'abuser, mais tes connaissances me sont d'une utilité incommensurable

Willau

Il faut savoir où son écrit les données maintenant quand on clique dans une cellule de la colonnes "W:AC"

Le mieux c'est d'avoir le fichier pour se faire une idée plus global.

Bonjour,

Une suggestion ...

Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.CountLarge > 1 Then
      Target.Offset(, 1).ClearContents
      Target.Offset(, 2).ClearContents
      Exit Sub
   Else
      If Not Intersect(Target, Columns("W:AC")) Is Nothing Then
            Target.Offset(, 1).Value = login
            Target.Offset(, 2).Value = Modification
      End If
   End If
End Sub

ric

Rechercher des sujets similaires à "inserer user date heure lorsque modifications"