Erreur Division par Zéro

Résolu/Fermé
otto_81 Messages postés 5 Date d'inscription dimanche 8 février 2015 Statut Membre Dernière intervention 8 février 2015 - Modifié par jordane45 le 8/02/2015 à 12:42
otto_81 Messages postés 5 Date d'inscription dimanche 8 février 2015 Statut Membre Dernière intervention 8 février 2015 - 8 févr. 2015 à 14:53
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.
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

4 réponses

jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689
8 févr. 2015 à 12:45
Bonjour,

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

0
otto_81 Messages postés 5 Date d'inscription dimanche 8 février 2015 Statut Membre Dernière intervention 8 février 2015
8 févr. 2015 à 12:51
Merci beaucoup Jordane pour ta réponse seulement comment dois-je l'intégrer dans ma macro ?
0
otto_81 Messages postés 5 Date d'inscription dimanche 8 février 2015 Statut Membre Dernière intervention 8 février 2015
8 févr. 2015 à 13:03
Sachant que le nombre de vente ne peut jamais être égale à Zéro
0
jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689
8 févr. 2015 à 13:23

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.
0
otto_81 Messages postés 5 Date d'inscription dimanche 8 février 2015 Statut Membre Dernière intervention 8 février 2015
8 févr. 2015 à 13:32
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.
0
jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689
8 févr. 2015 à 13:47
En cas de besoin, tu peux déposer ton fichier sur un site de dépose comme : cijoint.com et nous coller le lien ici.
0
otto_81 Messages postés 5 Date d'inscription dimanche 8 février 2015 Statut Membre Dernière intervention 8 février 2015 > jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024
8 févr. 2015 à 14:53
C'est bon, je viens de tester mon fichier avec quelques modifications et ca marche. Merci beaucoup pour ton aide, ca fait plaisir d'avoir de l'aide quand on debute.

Bonne continuation a toi et encore merci pour ton aide.
0