XL 2013 MAJ date automatiquemnt

Getthefunk

XLDnaute Nouveau
Bonjour à toutes et à tous,

Voici mon problème : j'ai trouvé il y a quelques semaines une macro permettant de mettre à jour automatiquement une date à la date du jour dans une cellule dès lors qu'une modification était faite sur la ligne de cette cellule.
Toutefois, je me suis rendue compte que cela ne fonctionnait que ligne par ligne, et que la date ne se mettait à jour que pour la première ligne lors de modification en masse. Par exemple lorsqu'on fait un copié/collé sur plusieurs lignes, il n'y a que la date de la première ligne (celle selectionnée pour le collé) qui se met à jour.

Cela me pose 2 problèmes
1/ J'aimerais que toutes les cellules des lignes modifiées soit mises à jour. La macro a fait buguer un fichier important dans lequel on change régulièrement plusieurs cellules par colonnes, à travers du copié/collé ou bien lorsqu'on tire. (dans le fichier joint, j'ai tiré les références à partir de A0003 et il n'y a que la date pour A0004 qui s'est mise à jour, idem si on copie colle les couleurs à partir de la ref A0007)
2/ Je voudrais aussi que la date ne se mette à jour que lorsqu'on modifie les informations de certaines colonnes. Par exemple, dans le fichier joint, j'aimerais que la date modification (colonne B) ne se mette à jour que lorqu'on modifie les cellules de la colonne C (Nom Couleur) et de la colonne E (date lancement).

Voici la macro en question, avec 2 la ligne à partir de laquelle la mise à jour se fait, et B la colonne dans laquelle la mise à jour est inscrite :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 2 Then Cells(Target.Row, "B") = Date
End Sub

Je voudrais spécifier quelque part que cela doit être fait pour chaque ligne dans la selection (enfin je crois que c'est ce qui résoudrait mon 1er problème), mais je suis extrêmement novice en VBA et ne sais pas l'écrire... Et je n'ai pas vraiment d'idée pour mon deuxième problème, je ne sais pas écrire des conditions comme "si l'info dans telle et telle colonne change, alors la date modif change, sinon rien"

Merci beaucoup pour votre aide,

Getthefunk
 

Pièces jointes

  • MAJdateautomatique.xlsm
    13.1 KB · Affichages: 25

Getthefunk

XLDnaute Nouveau
Après discussion sur un autre forum, nous sommes arrivés à ce code là :


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Colonne = Target.Column
If Target.Row > 5 Then
   Select Case Colonne
       Case 1, 3, 5
        For Each Cell In Target
            Cells(Cell.Row, "B") = Date
        Next Cell
   End Select
End If
End Sub


Je vais l'utiliser parce que je le comprends mieux, mais merci beaucoup pour votre aide!
 

Dranreb

XLDnaute Barbatruc
Si vous effacez la plage D5:E7 par exemple, où y copiez quelque chose, la date ne sera pas mise en B5:B7 parce que cette plage est en colonne 4 donc aucune des 1, 3, 5, alors que la E5:E7 aura pourtant été modifiée.
Mon instruction mettait de plus en une seule fois la date à toute les cellules concernées.
C'est à dire celles de la colonne 2 de l'ensemble des lignes entières contenant l'intersection, s'il en existe une, des colonnes C et E à partir de la ligne 3 et de la plage modifiée.
Intersect([C3:C1000000,E3:E1000000], Target).EntireRow.Columns(2).Value = Date
 

Discussions similaires

Réponses
5
Affichages
193
Réponses
46
Affichages
872
Réponses
2
Affichages
130
Réponses
14
Affichages
540

Statistiques des forums

Discussions
312 292
Messages
2 086 854
Membres
103 400
dernier inscrit
MINOU WILL