Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 VBA division : dépassement de capacité

VBA_dev_Anne_Marie

XLDnaute Occasionnel
Bonjour,

Je ne comprends pas pourquoi je reçois une erreur de dépassement de capacité, alors que je voudrais juste diviser deux colonnes :


Les données sont bien numérique.
Merci pour votre aide !
 

Pièces jointes

  • test.xlsm
    270.3 KB · Affichages: 5
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
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

Du coup ne serait-il pas mieux d'utiliser ceci :
VB:
.Cells(i,19)=.Cells(i,18)/iif(val("" & .Cells(i,23))=0,1,.Cells(i,23).value)
 

Dranreb

XLDnaute Barbatruc
En cas de 0 je voudrais diviser par 1 ou bien afficher une erreur dans la cellule.
Au fond pourquoi ne pas le faire en formule :
VB:
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
Comme ça il met #DIV/0!
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…