Cells(i,19)=Cells(i,18)/iif(val("" & cells(i,23))=0,1,Cells(i,23).value)
Cells(i,19)=Cells(i,18)/iif(val("" & cells(i,23))=0,1,Cells(i,23).value)
Merci, ça marche !Code:Cells(i,19)=Cells(i,18)/iif(val("" & cells(i,23))=0,1,Cells(i,23).value)
de plus il manque le point devant cells
.Cells(i, 3) = .Cells(i, 2) / .Cells(i, 4)
Remarque: en ajoutant les points à .Cells(i, 3) = .Cells(i, 2) / .Cells(i, 4) pour que l'expression du With soit assumée au lieu de ActiveSheet, on tombe sur l'erreur pour i = 8275 où à cette ligne effectivement D = 0
.Cells(i,19)=.Cells(i,18)/iif(val("" & .Cells(i,23))=0,1,.Cells(i,23).value)
Au fond pourquoi ne pas le faire en formule :En cas de 0 je voudrais diviser par 1 ou bien afficher une erreur dans la cellule.
Option Explicit
Sub Test()
Dim Wsh As Worksheet
On Error Resume Next
Set Wsh = Worksheets("Résultats")
If Err Then Err.Clear: Set Wsh = Worksheets("RESULTATS")
If Err Then MsgBox "L'onglet ""RESULTAT"" n'existe pas dans le classeur actif.", _
vbCritical, "Test": Exit Sub
If Wsh.[C1].Value <> "Coût" Then
Wsh.Columns("C").Insert
With Wsh.[C1]: .Value = "Coût": .Interior.Color = RGB(0, 128, 0): End With
End If
With Wsh.[C2].Resize(Wsh.[A1000000].End(xlUp).Row - 1)
.FormulaR1C1 = "=RC[-1]/RC[1]"
' .Value = .Value
End With
End Sub