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 -
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
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
il serait peut-être plus logique de faire:
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