Copier une cellule
Fermé
maynou24
-
19 mars 2019 à 10:35
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 - 20 mars 2019 à 08:00
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 - 20 mars 2019 à 08:00
A voir également:
- Copier une cellule
- Comment copier une vidéo youtube - Guide
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Super copier - Télécharger - Gestion de fichiers
- Verrouiller cellule excel - Guide
1 réponse
rEVOLV3r
Messages postés
223
Date d'inscription
jeudi 12 août 2010
Statut
Membre
Dernière intervention
21 septembre 2022
28
19 mars 2019 à 11:43
19 mars 2019 à 11:43
Bonjour,
Vous devez passer par une macro VBA qui gère l'évènementiel de la page.
Mettre dans le module de la feuille en question :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws_histo As Worksheet
Set ws_histo = ThisWorkbook.Sheets("Histo")
Dim lastcell As Range
On Error GoTo fin
'Sélectionne uniquement la colonne n°1 pour l'évènementiel des changements
If Target.Column = 1 Then
Set lastcell = ws_histo.Columns(1).Find("*", , , , xlByColumns, xlPrevious)
lastcell.Offset(1, 0).Value = Target.Address
lastcell.Offset(1, 1).Value = Now
lastcell.Offset(1, 2).Value = Application.UserName
End If
Exit Sub
fin:
MsgBox "Une erreur est apparue, l'historique n'a pas été sauvegardé", vbCritical + vbOKOnly, "Error"
End Sub
Créer un onglet nommé "Histo"
Chaque modification d'une cellule de la colonne 1 engendrera une nouvelle entrée dans la page Histo
Vous devez passer par une macro VBA qui gère l'évènementiel de la page.
Mettre dans le module de la feuille en question :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws_histo As Worksheet
Set ws_histo = ThisWorkbook.Sheets("Histo")
Dim lastcell As Range
On Error GoTo fin
'Sélectionne uniquement la colonne n°1 pour l'évènementiel des changements
If Target.Column = 1 Then
Set lastcell = ws_histo.Columns(1).Find("*", , , , xlByColumns, xlPrevious)
lastcell.Offset(1, 0).Value = Target.Address
lastcell.Offset(1, 1).Value = Now
lastcell.Offset(1, 2).Value = Application.UserName
End If
Exit Sub
fin:
MsgBox "Une erreur est apparue, l'historique n'a pas été sauvegardé", vbCritical + vbOKOnly, "Error"
End Sub
Créer un onglet nommé "Histo"
Chaque modification d'une cellule de la colonne 1 engendrera une nouvelle entrée dans la page Histo
Modifié le 19 mars 2019 à 12:40
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws_histo As Worksheet
Set ws_histo = ThisWorkbook.Sheets("Histo")
Dim lastcell As Range
On Error GoTo fin
'Sélectionne uniquement la colonne n°1 pour l'évènementiel des changements
If Target.Column = 1 Then
Set lastcell = ws_histo.Columns(1).Find("*", , , , xlByColumns, xlPrevious)
lastcell.Offset(1, 0).Value = Target.Address
lastcell.Offset(1, 1).Value = Target.Value
lastcell.Offset(1, 2).Value = Now
lastcell.Offset(1, 3).Value = Application.UserName
End If
Exit Sub
fin:
MsgBox "Une erreur est apparue, l'historique n'a pas été sauvegardé", vbCritical + vbOKOnly, "Error"
End Sub
Bien entendu, a chaque changement, cela enregistrera le changement actuel et pas l'ancien. L'historique prendra la nouvelle valeur en dernière ligne et il suffira de le trier par rapport à l'adresse afin de voir tout son historique.
19 mars 2019 à 13:22
20 mars 2019 à 08:00
soit : remplacer la ligne set lastcell par celle-ci :
Set lastcell = ws_histo.Range("A4:A1048576").Find("*", , , , xlByColumns, xlPrevious)
ou plus simple : mettre des données dans les cellules A1, A2 et A3. cela peut être juste une valeur ou une lettre. la ligne de code set lastcell renvoi la première cellule non vide de la colonne 1.