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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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
 
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"
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
223
Réponses
4
Affichages
243
Réponses
6
Affichages
299
Retour