Peut on améliorer la macro?

Bonjour le forum

Dans ThisWorKbook j'ai "bricolé" ces 2 lignes et ajouté la conne H pour pouvoir mettre en majuscule le Jour et le mois

Peut-on faire mieux?

Par exemple ne pas ajouter colonne H

        Range("A" & Target.Row) = IIf(Range("B" & Target.Row) & Range("C" & Target.Row) = "", "", Application.Proper(Format(Ladate, "dddd dd mmmm yyyy")))
        Range("H" & Target.Row) = IIf(Range("B" & Target.Row) & Range("C" & Target.Row) = "", "", Ladate)

Merci pour vos éventuels retours

Cordialement

Bonjour AL87,

A quoi te sert la colonne H pour moi à rien, une date doit rester une date, sinon il y aura des problème de traitement pas la suite

Bonjour BrunoM45

Je me suis mal exprimé

Je voulais surtout parler de la macro

Peut-on la simplifier?

Merci à toi

Re,

Oui, supprimer la 2ème ligne

Re,

Oui sauf que si je supprime 3 cellule B21 ma ligne reste en couleur et ça je veux pas.

C'est pour ça que ça été fait comme ça

Je vais le garder comme ça

Merci à toi

Cordialement

Re,

Tu change les formules de tes MFC, mais tu es très mal parti avec ton tableau

Tes dates sont en fait du texte

A quoi te sert Excel, autant utiliser Word dans ce cas, bon courage

A+

Bonjour le forum BrunoM45

Ça fonctionne super bien comme ça

Je garde

Bonne fin de WE

Bonjour al87, Bruno,

pour l'optimisation de ton code VBA, ceci devrait t'aider :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  Dim lig&: lig = Target.Row: If Cells(lig, 2) & Cells(lig, 3) = "" Then Exit Sub
  Cells(lig, 1) = Application.Proper(Format(Ladate, "dddd dd mmmm yyyy")) 'date avec un format long
  Cells(lig, 8) = Ladate 'date avec un format court
End Sub

s'il y a des instructions qui sont dessous et avant le End Sub, utilise ceci :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  Dim lig&: lig = Target.Row
  If Cells(lig, 2) & Cells(lig, 3) <> "" Then 'attention : le = a été changé en <>
    Cells(lig, 1) = Application.Proper(Format(Ladate, "dddd dd mmmm yyyy")) 'date avec un format long
    Cells(lig, 8) = Ladate 'date avec un format court
  End If
  'mets ici les instructions supplémentaires
End Sub

tu as proposé de ne pas ajouter la colonne H, mais dans ce cas, tu ne verras pas la date au format court ; à toi de décider si tu veux la voir ou non ! (mais sans ton fichier, difficile de savoir ! je me trompe peut-être ?)

j'ai utilisé Workbook_SheetChange(..) mais c'est peut-être Workbook_SheetSelectionChange(..) ? ou autre ? c'était pas indiqué dans ton énoncé (voilà c'que c'est d'mettre juste un bout de code : on n'a pas le nom d'la sub, et on peut pas savoir si des instructions suivent !)

dhany

Bonjour dhany

Voici le fichier

Si tu peux appliquer tes modifs dans fichier joint ça serait mieux...un peu perdu là

Merci pour ton éventuel retour

Amicalement

3toto.zip (51.98 Ko)

voici ton fichier modifié :

7toto.zip (62.00 Ko)

amicalement,

dhany

Bonjour dhany

C'est une autre façon de faire que je garde en "m"moire" mais le résultat est le même

Merci à toi et à BrunoM45 d'avoir essayé

Bonne semaine à vous deux

Cordialement

Bonjour al87,

tu a écrit :

C'est une autre façon de faire que je garde en "mémoire", mais le résultat est le même.

oui, le résultat est le même, mais c'est normal : le but d'une optimisation de code n'est pas de modifier le résultat déjà obtenu ; c'est de raccourcir le code VBA afin qu'il arrive au même résultat de façon plus élégante ; 2 exemples dans mon optimisation de code :

la variable lig évite de répéter Target.Row plusieurs fois ; or Target.Row « recherche » la ligne en cours ; avec lig, cette « recherche » n'est faite qu'une seule fois ; alors que le temps de lecture de la variable mémoire lig doit être plus rapide.

dans ton code initial, il y avait ce test : IIf(Range("B" & Target.Row) & Range("C" & Target.Row) = "" ; j'ai réorganisé le code pour que ce test ne soit fait qu'une seule fois : If Cells(lig, 2) & Cells(lig, 3) <> "" Then

bonne semaine à toi aussi.

dhany

Re bonjour dhany

Exact. Pas vu je suis allé trop vite. C'est ce que je voulais

Bonne semaine à toi

Amicalement

Rechercher des sujets similaires à "ameliorer macro"