VBA Amélioration code Target + liste de donnée

VincEau

XLDnaute Nouveau
Bonjour à tous,

Je viens vers vous car j'ai un petit souci sur une macro :

J'ai créé le code suivant :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Row = True Then Exit Sub
ThisRow = Target.Row
Range("G" & ThisRow).Value = Now()

End Sub

Cela me permet à chaque modification dans une cellule d'afficher la date de la modification dans une cellule de la même ligne.
Cela fonctionne très bien, cependant j'ai un bug quand la modification vient d'une liste écrite en horizontale, ce qui parait logique au vu de mon code ...

Dans un souci de perfectionnement pourriez vous m'indiquer comment améliorer ma macro svp ?
Par exemple :
  • Amélioration globale de l'écriture, je débute et j'aimerais prendre les bonnes habitudes
  • Je ne suis pas arriver à prendre en compte une plage de donnée, car je veux que la date se modifie uniquement en cas de modification de la valeur de la cellule et non à la sélection de la cellule.
  • Dans un deuxième temps pour éviter les bugs sur les listes de données.

J'ai mis un fichier en copie pour exemple.

Par avance merci
Cordialement,
 

Pièces jointes

  • Classeur1.xlsm
    16.7 KB · Affichages: 29
  • Classeur1.xlsm
    16.7 KB · Affichages: 28

Tentative

XLDnaute Occasionnel
Re : VBA Amélioration code Target + liste de donnée

Bonjour,

Peut-être comme ceci :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Row = True Then Exit Sub
On error resume next  ' <<< ajout ici
ThisRow = Target.Row
Range("G" & ThisRow).Value = Now()

End Sub


Tentative
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA Amélioration code Target + liste de donnée

Bonjour à tous,

pas trop le temps de suivre la discussion,
si le code boucle à l'infini, il est nécessaire d'ajouter:

Application.EnableEvents=False en début de procédure

sans oublier de remettre à True en fin de procédure

à+
Philippe
 

VincEau

XLDnaute Nouveau
Re : VBA Amélioration code Target + liste de donnée

Bonjou Phlaurent,

Merci pour ta réponse, je viens de test avec le code à jour :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

If Target.Row = True Then Exit Sub
On Error Resume Next
ThisRow = Target.Row
Range("V" & ThisRow).Value = Now()

Application.EnableEvents = True

End Sub

Et j'ai l'erreur : "Mémoire insuffisante pour afficher un entier"
 

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16