Erreur Division par Zéro
Résolu
otto_81
Messages postés
5
Statut
Membre
-
otto_81 Messages postés 5 Statut Membre -
otto_81 Messages postés 5 Statut Membre -
Bonjour à tous,
Etant novice dans le développement VBA, j'ai un petit soucis lors du lancer de ma macro.
En effet, je dois remplir un tableau automatiquement grâce à une macro et j'ai un message qui apparait division par Zéro en erreur, je ne comprend pas comment le résoudre. Je pense que cela vient du nombre de ventes. Est-ce que quelqu'un peut m'aider. Car je vois pas pourquoi. Je suis sur Mac je précise, si il peut y avoir des différences.
EDIT : Ajout de la coloration syntaxique
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Etant novice dans le développement VBA, j'ai un petit soucis lors du lancer de ma macro.
En effet, je dois remplir un tableau automatiquement grâce à une macro et j'ai un message qui apparait division par Zéro en erreur, je ne comprend pas comment le résoudre. Je pense que cela vient du nombre de ventes. Est-ce que quelqu'un peut m'aider. Car je vois pas pourquoi. Je suis sur Mac je précise, si il peut y avoir des différences.
Sub Macro_examenVBA()
'''''''''''''''''''''''''''''''''''''''''''''''''''''BLOC DECLARATION'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim tbl_workbook As Workbook
Dim read_workbook As Workbook
Dim name As String
Dim I As Integer
Dim J As Integer
Dim nb_articles As Integer
Dim nb_ventes As Integer
Dim montant_ventesHT As Double
Dim montant_achatsHT As Double
Dim marge As Double
Dim panier_moyen As Double
Dim marge_moyenne As Double
Dim marge_livres As Double
Dim achat_livres As Double
Dim vente_livres As Double
''''''''''''''''''''''''''''''''''''''''''''''''''''''BLOC OUVERTURE ET CHOIX FICHIER'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set tbl_workbook = ActiveWorkbook ' nous prenons le tableau de travail qui est le tableau r_capitulatif
MsgBox "S_lectionner le fichier n_cessaire ^ la compilation du tableau."
Set read_workbook = Application.Workbooks.Open(Application.GetOpenFilename) ' on va choisir le fichier li_ au mois --> Octobre, Novembre, D_cembre
name = InputBox("Veuillez entrer le nom du mois que vous souhaitez archiver.", "Choix")
'''''''''''''''''''''''''''''''''''''''''''''''''''''''BLOC DE CALCUL''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For I = 2 To read_workbook.Sheets(1).Range("A1").End(xlDown).Row
nb_articles = nb_articles + read_workbook.Sheets(1).Range("F" & I)
If read_workbook.Sheets(1).Range("A" & I) <> read_workbook.Sheets(1).Range("A" & I - 1) Then '
nb_ventes = nb_ventes + 1
End If
montant_ventesHT = montant_ventesHT + read_workbook.Sheets(1).Range("I" & I)
montant_achatsHT = montant_achatsHT + read_workbook.Sheets(1).Range("G" & I)
If read_workbook.Sheets(1).Range("C" & I) = "LIVRES" Then
achat_livres = achat_livres + read_workbook.Sheets(1).Range("G" & I) '
vente_livres = vente_livres + read_workbook.Sheets(1).Range("I" & I) '
End If
Next I
marge = montant_ventesHT - montant_achatsHT
panier_moyen = montant_ventesHT / nb_ventes
marge_moyenne = marge / nb_ventes
marge_livres = vente_livres - achat_livres
''''''''''''''''''''''''''''''''''''''''''''''''''BLOC ECRITURE''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For I = 2 To 13 ' il y a 13 colonnes dans le tableau r_capitulatif des donn_es (mois)
If tbl_workbook.Sheets(1).Cells(1, I) = name Then
tbl_workbook.Sheets(1).Cells(2, I) = nb_articles
tbl_workbook.Sheets(1).Cells(3, I) = nb_ventes
tbl_workbook.Sheets(1).Cells(4, I) = montant_ventesHT
tbl_workbook.Sheets(1).Cells(5, I) = marge
tbl_workbook.Sheets(1).Cells(6, I) = panier_moyen
tbl_workbook.Sheets(1).Cells(7, I) = marge_moyenne
tbl_workbook.Sheets(1).Cells(8, I) = marge_livres
End If
Next I
MsgBox "La manipulation s'est réalisée avec succès."
End Sub
Sub Remplir_Tableau_Recapitulatif()
Dim Remplir_Tableau_Recapitulatif(11, 1) As String
Dim Nom_Mois As String
Dim I As Integer
Remplir_Tableau_Recapitulatif(0, 0) = "Janvier"
Remplir_Tableau_Recapitulatif(0, 1) = "01"
Remplir_Tableau_Recapitulatif(1, 0) = "Fevrier"
Remplir_Tableau_Recapitulatif(1, 1) = "02"
Remplir_Tableau_Recapitulatif(2, 0) = "Mars"
Remplir_Tableau_Recapitulatif(2, 1) = "03"
Remplir_Tableau_Recapitulatif(3, 0) = "Avril"
Remplir_Tableau_Recapitulatif(3, 1) = "04"
Remplir_Tableau_Recapitulatif(4, 0) = "Mai"
Remplir_Tableau_Recapitulatif(4, 1) = "05"
Remplir_Tableau_Recapitulatif(5, 0) = "Juin"
Remplir_Tableau_Recapitulatif(5, 1) = "06"
Remplir_Tableau_Recapitulatif(6, 0) = "Juillet"
Remplir_Tableau_Recapitulatif(6, 1) = "07"
Remplir_Tableau_Recapitulatif(7, 0) = "Aout"
Remplir_Tableau_Recapitulatif(7, 1) = "08"
Remplir_Tableau_Recapitulatif(8, 0) = "Septembre"
Remplir_Tableau_Recapitulatif(8, 1) = "09"
Remplir_Tableau_Recapitulatif(9, 0) = "Octobre"
Remplir_Tableau_Recapitulatif(9, 1) = "10"
Remplir_Tableau_Recapitulatif(10, 0) = "Novembre"
Remplir_Tableau_Recapitulatif(10, 1) = "11"
Remplir_Tableau_Recapitulatif(11, 0) = "Decembre"
Remplir_Tableau_Recapitulatif(11, 1) = "12"
Application.Dialogs(xlDialogOpen).Show
EDIT : Ajout de la coloration syntaxique
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
A voir également:
- Erreur Division par Zéro
- Remettre a zero un pc - Guide
- Comment recuperer whatsapp supprimé par erreur - Guide
- Comment remettre un iphone à zéro - Guide
- Remettre chromecast a zero - Guide
- Remettre un pc a zero sans mot de passe - Guide
4 réponses
Bonjour,
Si le problème vient du nombre de ventes... il te suffit de faire comme ça :
Si le problème vient du nombre de ventes... il te suffit de faire comme ça :
if nb_ventes >0 then panier_moyen = montant_ventesHT / nb_ventes marge_moyenne = marge / nb_ventes else panier_moyen = 0 marge_moyenne = 0 End if
Sachant que le nombre de vente ne peut jamais être égale à Zéro
Sachant que le nombre de vente ne peut jamais être égale à Zéro
Ton Nb Vente est dépendant d'un IF ....
If read_workbook.Sheets(1).Range("A" & I) <> read_workbook.Sheets(1).Range("A" & I - 1) Then '
nb_ventes = nb_ventes + 1
End If
Donc... si à un moment ton IF n'est pas vérifié... ton nb_ventes n'est pas incrémentés... et donc sera à zéro.
Ne disposant pas de ton classeur... il nous sera difficile de comprendre pourquoi ....
Pour essayer de trouver la raison de cette erreur... places des points d'arrêts dans ta macro et regardent ce que valent les différentes variables.... cela devrait t'aider à comprendre.
Très bien je vais essayer de résoudre le problème. Si je n'y arrive pas, est ce que je peux te mettre mon fichier ? Je suis totalement novice et c'est un peu compliqué au début.