Comparer 2 dates et mettre une valeur dans une autre colonne

Bonjour

j'ai un problème avec VBA.

j'ai en colonne AI et AJ des dates.

si AJ3 < AI3 alors je veux afficher sur en AK3 le texte "à contacter"

je veux faire ceci pour toutes les lignes de mon tableau qui sont renseignées.

Voilà ce que j'ai fait mais ça bug (fermeture inopinée d'excel)

Merci pour votre aide

Private Sub Worksheet_Change()

Dim NbLigne As Integer
NbLigne = Range("I65536").End(xlUp).Row
For I = 3 To NbLigne
If Not (IsEmpty(Range("A" & I))) And Range("AI" & I) < Range("AJ" & I) Then
Range("AK" & I).Value = "à contacter"
End If
Next
End Sub

Bonjour

Cela fait 13 ans que les onglets n'ont plus 65536 lignes mais plus d'un million

Quand on utilise Worksheet_Change il faut limiter la portée (il n'y a aucune raison de déclencher l'écriture de AK si les modifications ne portent ni sur AI, ni sur AJ)

et là en plus tu fais une boucle infinie : à chaque fois que tu écris en colonne AK cela relance le code

Pourquoi pas tout simplement une formule à base de SI ?

Comment le transcrire?

RE

=SI(AJ3 < AI3;"A contacter";"") à recopier jusqu'en bas ou, mieux, travailler en tableau structuré : la formule se propagera sur toute nouvelle ligne

Je veux le faire en vba et que la formule ne se voit pas pour les autres utilisateurs

RE

Alors comme déjà dit, limite ta procédure : vérifie l'intersection entre Target et range("AI:AJ") et utilise le Target.row pour remplir la cellule AK de la ligne modifiée et pas l'intégralité de la feuille

Ok Merci ça fonctionne

Rechercher des sujets similaires à "comparer dates mettre valeur colonne"