If et else vba

Bonjour,

J'ai un tableau dont la première colonne "Etat " soit des "oui" ou "non", deuxième colonne "Date et heure" ensuite des colonnes "RAF" , "RAP" , "RAM".
J'aimerai calculer l'écart entre une cellule et autre qui la precede selon etat "oui" ou "non" et selon le non de colonne RAF ou RAP ou RAM.

le code qui marche selon macro automatique :

Sub Calcul1()
z = Range("a" & Rows.Count).End(xlUp).Row
Range("c4:c" & z).FormulaR1C1 = _
"=IF(RC[-2]=""NON"",RC[-1]-R[-2]C[-1],IF(RC[-2]=""OUI"",""""))"
Range("d4:d" & z).FormulaR1C1 = _
"=IF(RC[-3]=""NON"",RC[-2]-R[-1]C[-2],IF(RC[-3]=""OUI"",""""))"
Range("e3:e" & z).FormulaR1C1 = _
"=IF(RC[-4]=""OUI"",RC[-3]-R[-1]C[-3],IF(RC[-4]=""NON"",""""))"
End Sub

le code qui n'a pas marché :

Sub Calcul2()
Sheets("Feuil1").Select
z = Range("a" & Rows.Count).End(xlUp).Row
For Each Cell In Range("a2:a" & z)
If Cell.Value = "NON" And Range("c1") = "RAF" Then
Cell.Offset(0, 2) = Cell.Offset(0, 1) - Cell.Offset(-2, 1)
Else
If Cell.Value = "NON" And Range("d1") = "RAP" Then
Cell.Offset(0, 3) = Cell.Offset(0, 1) - Cell.Offset(-1, 1)
Else
If Cell.Value = "OUI" And Range("e1") = "RAM" Then
Cell.Offset(0, 4) = Cell.Offset(0, 1) - Cell.Offset(-1, 1)
End If
End If
End If

Next
End Sub

Merci de me corriger le deuxième code

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    bonjour, peux-tu utiliser la coloration syntaxique quand tu partages du code?
    comment se comporte le code qui n'a pas marché: message d'erreur, comportement inattendu?
    tu souhaites que le deuxième code fasse la même chose que le premier?
    comme le premier est illisible, peux-tu expliquer ce que tu souhaites?
    au lieu de
     If Cell.Value = "NON" And Range("c1") = "RAF" Then 

    il serait peut-être plus logique de faire:
    If Cell.Value = "NON" And Cells(1, Cell.column) = "RAF" Then