Cells(i,19)=Cells(i,18)/iif(val("" & cells(i,23))=0,1,Cells(i,23).value)
Bonsoir.
Il est vraisemblable que vous ayez déclaré DernLigne ou i As Integer, c'est à dire comme entier signé sur 2 octets, qui ne peut supporter de valeur supérieure à 32767.
Si tel est le cas changez pour As Long.
Sinon joignez le classeur, qu'on puisse chercher une autre c
Bonjour,Bonsoir.
Il est vraisemblable que vous ayez déclaré DernLigne ou i As Integer, c'est à dire comme entier signé sur 2 octets, qui ne peut supporter de valeur supérieure à 32767.
Si tel est le cas changez pour As Long.
Sinon joignez le classeur, qu'on puisse chercher une autre cause.
Bonjour,Bonjour.
Effectivement la feuille active est la "CALCUL" et Cells(2, 2).value et Cells(2, 4).Value y sont vides.
Mais j’ai dit bien dans le code With Worksheets(“RESULTATS”)J'ai dit dans la feuille "CALCUL", active lors du lancement, et donc assumée si non précisé devant les Cells par un point pour appliquer l'expression du With Worksheets("RESULTATS").
Là vous montrez ce qu'il y a dans "RESULTAT".
MerciRemarque: 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
Option Explicit
Sub Test()
Dim Wsh As Worksheet, TD(), LMax As Long, TR(), L As Long
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").Delete
TD = Wsh.[B2].Resize(Wsh.[A1000000].End(xlUp).Row - 1, 2).Value
LMax = UBound(TD, 1)
ReDim TR(1 To LMax, 1 To 1)
For L = 1 To LMax
If TD(L, 2) <> 0 Then TR(L, 1) = TD(L, 1) / TD(L, 2)
If Err Then
Application.Goto Wsh.[B1:C1].Offset(L)
MsgBox "Err " & Err & " sur :" & vbLf & TD(L, 1) & " / " & TD(L, 2) _
& vbLf & Err.Description, vbCritical, "Test"
Exit Sub: End If
Next L
Wsh.Columns("C").Insert
With Wsh.[C1]: .Value = "Coût": .Interior.Color = RGB(0, 128, 0): End With
Wsh.[C2].Resize(LMax).Value = TR
End Sub
Bonjour,Bonjour,
En cas de division par zéro le résultat est infinie,ce que explique le dépassement de capacité !
Que veux tu comme résultat en cas de division par zéro ?