EXCEL - Savoir qui a modifié une cellule

Résolu/Fermé
Galileo75 Messages postés 6 Date d'inscription lundi 10 août 2009 Statut Membre Dernière intervention 11 août 2009 - 10 août 2009 à 20:41
jerome173 Messages postés 1 Date d'inscription vendredi 21 octobre 2016 Statut Membre Dernière intervention 21 octobre 2016 - 21 oct. 2016 à 14:14
Bonjour,

Très très grand débutant en programmation sous excel, je dois dans le cadre de mon travail créer un tableau permettant de lister un nombre important de contacts. Mis en ligne sur un disque dur partagé en réseau, il aura vocation à être complété et/ou corrigé par plusieurs personnes. Aussi, afin de permettre un suivi des modifications effectuées, j’ai besoin qu’apparaissent dans des cellules à côté du titre les éléments suivants :
• la date de la dernière modification (pas dernière ouverture)
• le nom de la personne qui a fait cette modification

Le premier problème je l’ai résolu en errant sur les forums où j’ai trouvé la formule =SI(NBVAL(B33:P939)>0;datation();"") que j’ai collée dans la cellule qui m’intéressait après avoir télécharger une macro qui s’appelle « datation » : ça marche parfaitement, merci +++ à celui qui l’a créé.

Je n’ai en revanche pas trouvé de solution au second problème, à savoir faire en sorte que dès qu’une modification est faite dans un tableau (B33:P939 en l’occurrence), le nom de la personne ayant fait en dernier la ou les modification(s) s’inscrive automatiquement dans une cellule de mon choix.

J’ai vaguement tâtonné avec la commande « Application.UserName », mais sans succès pour le moment…

Quelqu’un aurait-il une solution, idéalement sous la forme d’une macro que je pourrais copier/coller dans mon VBA sous Excel ?

Avec tous mes remerciements d’avance !
Galileo

PS : j'utilise Excel 2003 au bureau

14 réponses

Mike-31 Messages postés 18341 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 14 octobre 2024 5 101
10 août 2009 à 22:10
Salut,

Colles ce code dans les propriétés de ta feuille,

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Contrôle As String
Do
If Not (Target.Column > 1 And Target.Column < 17) Then Exit Sub
Contrôle = InputBox("Veuillez vous identifier", _
"Accès réglementé", "Votre Nom") ' Valeur de la variable.
If Contrôle = "Votre Nom" Or Contrôle = "" Then
MsgBox "Erreur de saisie !"
MyValue = MsgBox("Souhaitez-vous renoncer à la modification ?", _
vbYesNo + vbCritical + vbDefaultButton1, "Votre Décision")
If MyValue = vbYes Then
ThisWorkbook.Saved = True
ActiveWorkbook.Close
End If
Else
Range("A1000").End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "Fichier modifié par " & Contrôle & " Le " & Now
ActiveWorkbook.Save
End If
Loop Until Contrôle <> "" And Contrôle <> "Votre Nom"
End Sub

Avec ce lien un petit exemple de fichier, colonne A les noms de personnes apportant une motif de la colonne B à la colonne P est archivé

https://www.cjoint.com/?ikwjgs2EaI



A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
1