Écrire dans une cellule Excel si changement
Résolu
marie-delphine
-
marie-delphine -
marie-delphine -
Bonsoir à tous,
J'ai besoin de votre aide en VBA. Parfaite débutante, je voudrais créer une macro dans mon fichier Excel qui fasse que si on change le contenu d'une cellule, sur la même ligne mais dans des colonnes beaucoup plus à droite s'écrivent la date de modification, l'heure et l'utilisateur.
J'y suis +/- arrivée, sauf que si je modifie la cellule A1, quand je tape Enter et donc que je descend en A2, c'est H2, I2 et J2 qui prennent les valeurs demandées. Par contre, si je delete le contenu de A1, C'est H1, I1 et J1 qui prennent les valeurs, ce qui est bien sur le but de la manoeuvre!
Voilà mon petit code.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("A1:G10000")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Workbooks("test.xlsx").Sheets("Feuil1").Range("H" & ActiveCell.Row).Value = Time
Workbooks("test.xlsx").Sheets("Feuil1").Range("I" & ActiveCell.Row).Value = Date
Workbooks("test.xlsx").Sheets("Feuil1").Range("J" & ActiveCell.Row).Value = Environ("USERNAME")
End If
End Sub
Je suis certaine qu'un connaisseur pourra me renseigner :)
Merci!
J'ai besoin de votre aide en VBA. Parfaite débutante, je voudrais créer une macro dans mon fichier Excel qui fasse que si on change le contenu d'une cellule, sur la même ligne mais dans des colonnes beaucoup plus à droite s'écrivent la date de modification, l'heure et l'utilisateur.
J'y suis +/- arrivée, sauf que si je modifie la cellule A1, quand je tape Enter et donc que je descend en A2, c'est H2, I2 et J2 qui prennent les valeurs demandées. Par contre, si je delete le contenu de A1, C'est H1, I1 et J1 qui prennent les valeurs, ce qui est bien sur le but de la manoeuvre!
Voilà mon petit code.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("A1:G10000")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Workbooks("test.xlsx").Sheets("Feuil1").Range("H" & ActiveCell.Row).Value = Time
Workbooks("test.xlsx").Sheets("Feuil1").Range("I" & ActiveCell.Row).Value = Date
Workbooks("test.xlsx").Sheets("Feuil1").Range("J" & ActiveCell.Row).Value = Environ("USERNAME")
End If
End Sub
Je suis certaine qu'un connaisseur pourra me renseigner :)
Merci!
A voir également:
- Je n'arrive pas à écrire dans une cellule excel
- Écrire plusieurs lignes dans une cellule excel mac - Guide
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Proteger cellule excel - Guide
- Déplacer une colonne excel - Guide
2 réponses
Bonjour,
Par exemple :
Par exemple :
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect([A1:G10000], Target) Is Nothing Then Target.EntireRow.Cells(1, "H").Value = Time Target.EntireRow.Cells(1, "I").Value = Date Target.EntireRow.Cells(1, "J").Value = Environ("USERNAME") End If End Sub
Patrice33740
Messages postés
8930
Statut
Membre
1 780
Ou mieux (fonctionne aussi en cas de saisie matricielle) :
Bonjour,
Si c'est sur la ligne que tu as modifié que tu veux écrire.. ce n'est pas activecell que tu dois utiliser mais target
Si c'est sur la ligne que tu as modifié que tu veux écrire.. ce n'est pas activecell que tu dois utiliser mais target
Private Sub Worksheet_Change(ByVal Target As Range) Dim KeyCells As Range Set KeyCells = Range("A1:G10000") If Not Application.Intersect(KeyCells, Range(Target.Address)) _ Is Nothing Then ThisWorkbook.Sheets("Feuil1").Range("H" & Target.Row).Value = Time ThisWorkbook.Sheets("Feuil1").Range("I" & Target.Row).Value = Date ThisWorkbook.Sheets("Feuil1").Range("J" & Target.Row).Value = Environ("USERNAME") End If End Sub