Bonjour le forum,

je test les valeurs des cellules d'une colonne N-1 pour renseigner la valeur de la cellule de la colonne N. La position de la colonne N est variable.
Pour cela j'utilise le code suivant qui fonctionne ;

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public Sub taches_faites()
'remplissage des taches terminées
Dim Real As Range, CellReal As Range
Application.ScreenUpdating = False
'On Error Resume Next
 
If ActiveCell.Value = "Réalisé" Then
    Set Real = Range(ActiveCell.Offset(1, 0), ActiveCell.Offset(100, 0))
     For Each CellReal In Real
        If CellReal.Offset(0, -1) <> "" Then
           CellReal.Value = "Fait"
        End If
      Next CellReal
    Set Real = Nothing
 
Else: MsgBox ("veuillez sélectionner une case : Réalisé ")
      ActiveCell.Offset(0, 1).Select
End If
 
End Sub
maintenant j' aimerais ajouter une deuxiéme condition qui est la valeur correspondante de la même ligne mais dans la colonne fixe D
en traduction :
If CellReal.Offset(0, -1) <> "" and range ( colonne (D),row de CellReal).value ="blabla" Then execution du code

Comme la position de ma colonne contenant CellReal est variable, je ne peux pas utiliser la propriété Offset.
après plusieurs essais infructueux, je m'en suis tirer avec une formule dans le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Public Sub taches_faites()
'remplissage des taches terminées
Dim Real As Range, CellReal As Range
Application.ScreenUpdating = False
'On Error Resume Next
 
If ActiveCell.Value = "Réalisé" Then
    Set Real = Range(ActiveCell.Offset(1, 0), ActiveCell.Offset(100, 0))
     For Each CellReal In Real
        If CellReal.Offset(0, -1) <> "" Then
            If CellReal = "" Then
                With CellReal
                    .FormulaR1C1 = "=IF(AND(RC[-1]>0.5,RC4=R2C5),""Fait"","""")"
                    .Value = .Value
                End With
            End If
        End If
      Next CellReal
    Set Real = Nothing
 
Else: MsgBox ("veuillez sélectionner une case : Réalisé ")
      ActiveCell.Offset(0, 1).Select
End If
 
End Sub
mais je pense que je peux mettre directement les deux conditions dans le code sans pour cela utiliser de formule. Toute l'astuce se trouvant dans la référence absolue de la colonne D et la référence relative de CellReal

Si quelqu'un pouvait m'indiquer une piste...
merci beaucoup.

Cordialement
Dom