If et else vba

az71 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
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

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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
0