VBA : problème de division par "zéro"

Bonjour le Forum,

Je viens de rencontrer cette erreur de "dépassement de capacité" après avoir introduit ma ligne de calcul de pourcentage.

Dans ce même calcul, si je remplace Cumul_Revenu_total(M, 1), par la valeur 10, le problème disparaît.

Dim Cumul_Pourcent_IMPAYE(1 To 12, 1 To 1) As Double

For M = 1 To 12

'Revenu total (colonne M)

Cumul_Revenu_total(M, 1) = Cumul_P_htva(M, 1) + Cumul_P_htva(M, 2)

'Impayés Mensuel (colonne U)

Cumul_Montant_IMPAYE(M, 1) = Cumul_Revenu_total(M, 1) - Cumul_Ch_Aff_Mensuel(M, 1)

'Pourcentage des Impayés Mensuel (colonne V)

Cumul_Pourcent_IMPAYE(M, 1) = (Cumul_Montant_IMPAYE(M, 1) * 100) / Cumul_Revenu_total(M, 1) Next M.

J'ai une erreur "Erreur d'exécution '6': dépassement de capacité"

1) Est-ce que c'est à cause du formatage Double de Cumul_Pourcent_IMPAYE(M, 1) ?

2) Est-ce à cause de la division par zéro ?

Si quelqu'un du forum avait une piste pour "Comment régler ce problème" , ce serait vraiment apprécié.

Merci beaucoup

Guy

Bonjour,

Remplace

For M = 1 To 12

par

For M = 0 To 11

et teste

Si ça ne marche pas, joins nous ton fichier avec le code. A mon avis c'est un problème d'index du tableau.

Bonjour Guy,

mets à notre disposition une version, même édulcorée, de ton fichier réel pour que nous puissions faire quelque chose!

A+

Ah, bien vu Raja!

Bonjour Raja et curulis57 et le forum,

Voici une version allégée du fichier.

J'ai laissé l'erreur qui se trouve dans le module 1.

Il m'est difficile de changer l'indice de boucle (M=1 To 12)car il représente en même temps une condition de "mois ".

Merci de vous occuper de mon problème

Guy

Bonsoir,

je vais pas télécharger un fichier pour si peu... lorsque tu as ton message d'erreur clique sur "débuger" puis passe le curseur de ta souris pour vérifier la valeur de tes variables ...

si comme tu le dis

Cumul_Revenu_total(M, 1) est égal à 0 :

2) Est-ce à cause de la division par zéro ?

ben rajoute un test sur la valeur de "Cumul_Revenu_total(M, 1) " ...

 IF Cumul_Revenu_total(M, 1)  <> 0 then Cumul_Pourcent_IMPAYE(M, 1) = (Cumul_Montant_IMPAYE(M, 1) * 100) / Cumul_Revenu_total(M, 1) 
Guy55 a écrit :

Bonjour Raja et curulis57 et le forum,

Il m'est difficile de changer l'indice de boucle (M=1 To 12)car il représente en même temps une condition de "mois ".

Re,

Met alors le code suivant au à la première ligne de la macro :

Option Base 1

Bonjour,

Tu aurais dû laisser le calcul des montants figés et actu dans la même instruction conditionnelle comme je l'avais fait.

Tu as une erreur d'Offset, 21 au lieu de22, mais ce n'est pas ça qui provoque l'erreur.

La boucle 1 à 12 est normale, tous les tableaux sont indicés à partir de 1.

Le pourcentage ne se calcule pas comme tu le fais (on ne multiplie pas par 100), c'est le simple rapport des 2 valeurs, formaté en % au niveau cellule.

Reste plus qu'à trouver pourquoi les valeurs sont toutes à 0 ! ce qui explique l'erreur de division mais faut remonter à la source...


La macro a été modifiée par rapport à celle sur laquelle j'ai travaillé, donc il vaudrait mieux revenir à cette version qui fonctionnait et voir le cas échéant comment y introduire les calculs manquants... Là tu as vraisemblablement indroduit des erreurs.

Remarque - ce n'est pas moi qui ai produit la macro d'origine, mais je partage le point de vue qui a pu y présider : je n'utilise jamais Option Base, risque d'erreur : quand on ne déclare pas d'indice inférieur on sait que c'est toujours 0.

J'avais par contre tiqué sur la déclaration d'une 2e dimension de tableau : 1 To 1. Mais celle-ci s'avère justifiée lorsqu'on arrive à la fin.

Raja, MFerrand,pierre-jy et curilus57

Voici le bon fichier avec les conditions Montant_ACTU et Montant_FIGÉ dans la même instructions.

J'ai volontairement retiré l'instruction fautive car mon éditeur visual basic se plantait.

j'aimerais un pourcentage d'impayés dans la colonne V par rapport au Revenu Total (Colonne M)

Je n'ai pas défini la variable et pas essayé non plus Option base 1.

Je ne peux pas modifier mon indice 0 to 11 a cause de la condition sur le mois .

Woaww ça en fait beaucoup !

Merci en tout cas pour tout

Guy

Tu as modifié le calcul du chiffre d'affaire pour en faire un calcul inexact : c'est par définition les factures émises qui permettent de l'évaluer, et non seulement celles qui sont payées !


Il faut évidemment mettre le calcul du pourcentage sous condition, ici en l'état des données, dès qu'on arrive en mai plus de chiffres, donc 0 partout !!!

Je rappelle que le calcul du % est faux.

Et que les modifications introduites faussent le chiffre d'affaire qui ne correspond plus aux factures émises.

D'autre part, les conditions de calcul que j'avais mises étaient suffisantes, il n'y avait pas de raison de les modifier.

Je décroche...

Bonsoir, le Forum,

Je joins le fichier corrigé et mon erreur de "division par zéro" existe encore.

Pour Raja,

J'ai essayé option base 1 sans résultat.

Pour MFerrand

J'ai fais les test en filtres auto dans l'onglet Factures et tout est fonctionnel comme demandé.

Il manquait ta condition sur "M"

Sans doute une mauvaise compréhension des termes ch d'AFF et Revenu total.

Quand aux doubles conditions, j'ai parfois l'habitude d'être trop prudent.¸

Un grand merci

Si quelqu'un pouvait m'aider

Merci

Guy

Si tu fais n'importe quoi sans lire...

J'ai répondu sur la division par zéro ! Elle est expliquée ! Tu défiles ton calcul sur 12 mois et tu n'as de données que de janvier à avril, à partir de mai les chiffres sont à 0, dont le diviseur quand tu fais une division !! Donc comme je l'ai dit (car c'est une situation récurrente de ne pas avoir 12 mois) les calculs de % sont à mettre sous condition (et à rectifier car faux).

Pour le reste, j'ai dit que je cessais d'intervenir dans une situation où les éléments supposés acquis se mettent à changer...

Il n'y a aucune incompréhension sur les termes ou les définitions. Ceux qui n'ont pas de définition comptable ou légale tu les définis comme tu veux. Ceux qui ont une définition précise comme le chiffre d'affaire, tu es tenu de t'y conformer. Ce qui était bien le cas au moment où je me suis penché sur le fichier, mais qui apparemment ne l'est plus.

Bonjour le Forum,

J'ai revu toutes vos réponses et comme indiqué, j'ai mis ce test

IF Cumul_Revenu_total(M, 1) <> 0 Then

Cumul_Pourcent_IMPAYE(M, 1) = Cumul_Montant_IMPAYE(M, 1) / Cumul_Revenu_total(M, 1)

Donc pas de calcul si Revenu est à zéro.

Reste à formater la valeur Pourcent_IMPAYE(M, 1) en pourcent

Merci à tout le monde pour votre aide , à bientôt

Guy

Rechercher des sujets similaires à "vba probleme division zero"