Merci de bien vouloir vous pencher sur mon problème
Est-il possible de déclencher un code
Si la cellule qui vient d’être calculée (Colonne S) est identique avec la valeur de la cellule de la (colonne B) de la même ligne
VB:
Private Sub Worksheet_Calculate()
[COLOR=rgb(0, 0, 0)]'If Cells(Rows(Target.Row), 2) = Cells(Rows(Target.Row), 20) Then[/COLOR]
MsgBox ("fin de série mettre en archive")
End If
End sub
Juste pour infos
Les () ne sont pas nécessaires pour afficher le MsgBox
(cf post#1 et post#2) MsgBox "fin de série mettre en archive"
fonctionnera pareillement
Private Sub Worksheet_Calculate()
Dim Derlig As Integer
Dim NumLig As Integer
Derlig = Range("B" & Rows.Count).End(xlUp).Row
NumLig = 2
For i = 2 To Derlig
If Range("B" & NumLig).Value = Range("S" & NumLig).Value Then
'Ici ton code que tu veux faire ......
MsgBox ("fin de série mettre en archive pour la ligne B") & NumLig
End If
NumLig = NumLig + 1
Next i
End Sub
Dans ce cas ne passez pas par Worksheet_Calculate qui oblige à faire une boucle.
Passez par Worksheet_Change sur les colonnes F:S.
Si modif dans une de ces colonnes on déclenche la vérification que sur cette ligne.
Un essai ( sans archivage ) en PJ avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("F3:S100")) Is Nothing Then
Ligne = Target.Row
If Cells(Ligne, "T") = Cells(Ligne, "B") Then
MsgBox "Ligne " & Ligne & " à archiver."
End If
End If
End Sub
J'allais le dire sylvanu.
Mais sur T c'est suffisant, l'événement change se déclenche à son évaluation.
On pourrait ajouter B s'il est amené à changer.
eric