Erreur 6 - Dépassement de capacité

Bonjour,

Je débute en langage VBA et j'essaie de coder le programme suivant :

capture

Je suis bloqué avec le terme count2 / planned2 qui est à l'origne de l'erreur 6.

Le problème est, je pense, que la variable planned2 reste à 0 entrainant une division par 0 et donc un nombre infini.

Ce que je ne comprend, c'est pourqoi le planned2 ne s'implemente pas alors que la variable planned, construit de la même manière, s'implemente.

Si vous avezla solution ou des pistes de solutions, je suis preneur.

Bonjour,

Pouvez vous joindre le code sous forme de texte (en utilisant les balises </>) et non d'image ?

Bonjour à tous,

99 chances / 100 que planned2 = 0 donnant l'erreur.

Idem pour planned ...

Le code en image, ce n'est pas sympa.

ric

Bonjour,

Pour le planned2 c'est ce que je pensais. Mais ce qui est étrange c'est que ça ne me le fasse pas pour le planned.

Avez-vous une explication de pourquoi j'obtiens 0 ?

Sub KPI1()
Dim count As Integer
Dim planned As Integer
Dim count2 As Integer
Dim planned2 As Integer
count = 0
planned = 0
count2 = 0
planned2 = 0
For i = 3 To 350
    If Sheet3.Cells(i, 4).Value = Sheet1.Cells(2, 1).Value Then
        If Sheet3.Cells(i, 5).Value <> 0 Then
            planned = planned + 1
            If Sheet3.Cells(i, 5) = Sheet3.Cells(i, 6) Then
                count = count + 1
            End If
        End If
    End If
    Sheet1.[B2] = count / planned

    If Sheet3.Cells(i, 4).Value = Sheet1.Cells(3, 1).Value Then
        If Sheet3.Cells(i, 5).Value <> 0 Then
            planned2 = planned2 + 1
            If Sheet3.Cells(i, 5) = Sheet3.Cells(i, 6) Then
                count2 = count2 + 1
            End If
        End If
    End If
    Sheet1.[B3] = count2 / planned2

Next
End Sub

Bonjour à tous,

N'ayant pas accès à un fichier comportant des données pour tester ...

Un essai ...

Option Explicit

Sub KPI1()
Dim count As Integer
Dim planned As Integer
Dim count2 As Integer
Dim planned2 As Integer
Dim i As Integer

    count = 0
    planned = 0
    count2 = 0
    planned2 = 0
    For i = 3 To 350
        If Feuil3.Cells(i, 4).Value = Feuil1.Cells(2, 1).Value Then
            If Feuil3.Cells(i, 5).Value <> 0 Then
                planned = planned + 1
                If Feuil3.Cells(i, 5) = Feuil3.Cells(i, 6) Then
                    count = count + 1
                End If
            End If
        End If

        If Feuil3.Cells(i, 4).Value = Feuil1.Cells(3, 1).Value Then
            If Feuil3.Cells(i, 5).Value <> 0 Then
                planned2 = planned2 + 1
                If Feuil3.Cells(i, 5) = Feuil3.Cells(i, 6) Then
                    count2 = count2 + 1
                End If
            End If
        End If
    Next i

    Feuil1.[B2].ClearContents
    Feuil1.[B3].ClearContents
    If count > 0 And planned > 0 Then Feuil1.[B2] = count / planned
    If count2 > 0 And planned2 > 0 Then Feuil1.[B3] = count2 / planned2
End Sub

ric

Bonjour,

Désolé, je n'ai connaissance des bonnes pratiques sur ce genre de forum.

J'ai essayé ton code. Il n'y a plus de bug mais rien n'est non plus affiché sur les cases souhaité puisque les valeurs de planned et plannedé sont zéro.

Voici le fichier et merci pour votre temps

Ca y est j'ai finalement trouvé. L'erreur venait du fait que je faisais le calcul de count2/planned 2 avant de sortir de la boucle for. Donc ça le calculait dès la première itération où planned2 est nul.

Rechercher des sujets similaires à "erreur depassement capacite"