Partage
  • Partager sur Facebook
  • Partager sur Twitter

[VBA] Erreur 400 ?

Sujet résolu
    31 juillet 2018 à 9:39:26

    Bonjour tout le monde,

    je suis assez nouveau en VBA donc j'essaye de bidouiller avec ce que je sais. J'ai donc créé une macro qui sert à compter des messages écris sur 2 cases. Cependant, lorsque je l'exécute, j'ai une popup d'erreur qui s'ouvre (avec la croix blanche dans le rond rouge), sans texte, avec seulement écrit 400 à l'intérieur.

    La dernière fois que j'avais eu ça c'était quand j'essayais de faire un test sur une cellule avec du texte dedans et que je ne mettais pas de guillemets. Cependant ici j'ai aucune idée de ce à quoi est due l'erreur et de quoi faire pour la résoudre.

    Voici mon code : 

    Sub comptage_tramesData0()
    Dim i As Integer
    Dim j As Integer
    Application.ScreenUpdating = False
    i = 0
    j = 0
    For i = 1 To 350
        While (Cells(i, 6) <> Cells(j, 15) And Not (IsEmpty(Cells(j, 15))))
        j = j + 7
        Wend
        
        If (Cells(i, 6) = Cells(j, 15)) Then
            If (Cells(i, 7) = Cells(j, 16)) Then
                Cells(j, 17) = Cells(j, 17) + 1
            ElseIf (Cells(i, 7) = Cells(j + 1, 16)) Then
                Cells(j + 1, 17) = Cells(j + 1, 17) + 1
            ElseIf (Cells(i, 7) = Cells(j + 2, 16)) Then
                Cells(j + 2, 17) = Cells(j + 2, 17) + 1
            ElseIf (Cells(i, 7) = Cells(j + 3, 16)) Then
                Cells(j + 3, 17) = Cells(j + 3, 17) + 1
            ElseIf (Cells(i, 7) = Cells(j + 4, 16)) Then
                Cells(j + 4, 17) = Cells(j + 4, 17) + 1
            ElseIf (Cells(i, 7) = Cells(j + 5, 16)) Then
                Cells(j + 5, 17) = Cells(j + 5, 17) + 1
            ElseIf (Cells(i, 7) = Cells(j + 6, 16)) Then
                Cells(j + 6, 17) = Cells(j + 6, 17) + 1
            End If
        ElseIf (IsEmpty(Cells(j, 15))) Then
            Cells(j, 15) = Cells(i, 6)
            Cells(j, 16) = 0
            Cells(j + 1, 16) = 20
            Cells(j + 2, 16) = 40
            Cells(j + 3, 16) = 60
            Cells(j + 4, 16) = 80
            Cells(j + 5, 16) = "C0"
            Cells(j + 6, 16) = "E0"
            If (Cells(i, 7) = Cells(j, 16)) Then
                Cells(j, 17) = Cells(j, 17) + 1
            ElseIf (Cells(i, 7) = Cells(j + 1, 16)) Then
                Cells(j + 1, 17) = Cells(j + 1, 17) + 1
            ElseIf (Cells(i, 7) = Cells(j + 2, 16)) Then
                Cells(j + 2, 17) = Cells(j + 2, 17) + 1
            ElseIf (Cells(i, 7) = Cells(j + 3, 16)) Then
                Cells(j + 3, 17) = Cells(j + 3, 17) + 1
            ElseIf (Cells(i, 7) = Cells(j + 4, 16)) Then
                Cells(j + 4, 17) = Cells(j + 4, 17) + 1
            ElseIf (Cells(i, 7) = Cells(j + 5, 16)) Then
                Cells(j + 5, 17) = Cells(j + 5, 17) + 1
            ElseIf (Cells(i, 7) = Cells(j + 6, 16)) Then
                Cells(j + 6, 17) = Cells(j + 6, 17) + 1
            End If
        End If
    Next
     Application.ScreenUpdating = True
    End Sub

    Si vous arrivez à comprendre pourquoi ça ne marche pas, je vous en serai gré !

    D'avance merci

    • Partager sur Facebook
    • Partager sur Twitter
      31 juillet 2018 à 10:53:13

      Salut,

      Je pense que c'est parce que j vaut 0 au tout début alors que tu l'utilises pour accéder à une cellule.

      -
      Edité par Stormweaker 31 juillet 2018 à 10:53:36

      • Partager sur Facebook
      • Partager sur Twitter
        31 juillet 2018 à 11:13:57

        Stormweaker a écrit:

        Salut,

        Je pense que c'est parce que j vaut 0 au tout début alors que tu l'utilises pour accéder à une cellule.

        -
        Edité par Stormweaker il y a 19 minutes


        Bien joué, merci !

        Encore les mauvaise habitudes des autres langages où on commence les tableaux à 0 ;)

        • Partager sur Facebook
        • Partager sur Twitter

        [VBA] Erreur 400 ?

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown