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

Dans vba - erreur 11 - division par zéro

aredo

XLDnaute Occasionnel
bonjour,

J'ai un petit souci avec un code. Il permet de remplir et classer des valeurs dans un tableau. Mais lorsqu'on lui demande de faire le quotient de la colonne G/H, il bugge lorsqu'une des valeurs est à zéro. Et c'est normal, mais alors comment contourner cet état.

la partie du code en question

'quotient
For i = 1 To UBound(Tbl, 1)
Tbl(i, 8) = CDbl(Tbl(i, 6) / Tbl(i, 7))
Next i

Range("B3").Resize(UBound(Tbl, 1), UBound(Tbl, 2)) = Tbl

DerL = Range("B65536").End(xlUp).Row


For Each Cel In Range("J3:J" & DerL)
Range("B" & Cel.Row).Interior.Color = Cel.Value
Next

DerL = Range("B65536").End(xlUp).Row 'tri couleur
Range("B3:J" & DerL).Sort Key1:=Range("J3"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Set MonDico = CreateObject("Scripting.Dictionary")

For Each Cel In Range("J3:J" & DerL)
If Not MonDico.Exists(Cel.Value) Then MonDico.Add Cel.Value, Cel.Value
Next

merci au fofo
 

Pièces jointes

  • quotient.png
    7.5 KB · Affichages: 37
  • recap.png
    13.9 KB · Affichages: 48
Dernière édition:

Paf

XLDnaute Barbatruc
Re : Dans vba - erreur 11 - division par zéro

Bonjour à tous

une autre solution

Code:
For i = 1 To UBound(Tbl, 1)
    If Tbl(i, 7) > 0 Then
        Tbl(i, 8) = CDbl(Tbl(i, 6) / Tbl(i, 7))
    Else
        Tbl(i, 8) = à déterminer
    End If
Next i

A+
 

aredo

XLDnaute Occasionnel
Re : Dans vba - erreur 11 - division par zéro

bonjour,

La condition de chalet53 ne fonctionne pas ici. merci d'avoir tenté.
Par contre la solution de paf me va parfaitement. J'ai juste rajouté "Tbl(i, 8) = Tbl(i, 6)" pour être le plus proche du résultat escompté.
merci tout plein paf

merci au fofo
 
Dernière édition:

Discussions similaires

Réponses
11
Affichages
346
Réponses
12
Affichages
288
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…