Erreur dans mon code

Résolu
Bonjour,

Quelques soucis que je ne sais résoudre...

Je voudrais tout d'abord que ma macro ne prennent en compte que les lignes affichées.
Puis quelle regarde dans la colonne O, en fonction de ce qu'elle y trouve ( A , R ou Z) elle m'incrémente un indice. ("r" si elle à trouvée "R"," a" si elle à trouvée "A", "z" si elle à trouvée "Z")

Et pour finir que dans les Colonne B3, D3 et F3 j'effectue un ratio par rapport à ces indices . Voici le code posé :

Sub Tauxremplissage()

Dim a As Integer
Dim r As Integer
Dim z As Integer

    For i = 1 To 500
    If Not Rows(i).Hidden Then
        If Cells(i, "O").Value = "A" Then
        a = a + Cells(i, "M").Value
        ElseIf Cells(i, "O") = "R" Then
        r = r + Cells(i, "M").Value
        ElseIf Cells(i, "O") = "Z" Then
        z = z + Cells(i, "M").Value
        End If
      
     End If
    
    Range("B3") = a / 8974
    Range("D3") = r / 7320
    Range("F3") = z / 5120

    Next i
    
End Sub


Merci à vous,
DGVDR

4 réponses

  1. Bonjour,

    Peux-tu préciser ton problème ?

    Question : y a quoi dans la cellule (i , "M") ?

    Cordialement,
    Gigatrappeur
    0
    1. Modérateur
      Bonjour,

      Qu'elle est l'erreur dans ton code?
      Quel message d'erreur s'affiche? Qu'elle est la ligne surlignée par le débogage?
      0
      1. Bonjour,

        J'ai résolu le problème...

        Merci à vous deux,
        DGVDR
        0
        1. Modérateur
          2 petites questions qui peuvent te sembler anodines :
          1- quel problème as tu résolu?
          2- comment l'as tu résolu?
          0
        2. Le problème du "Next i" qui se trouvait en avant dernière ligne, et que j'ai remonté avant :

          Range("B3") = a / 8974
          Range("D3") = r / 7320
          Range("F3") = z / 5120

          Merci :)
          0
      2. Voulant affiner ma macro j'ai modifier mon code afin que ma macro cherche dans la colonne D si la valeur était comprise entre telle et telle valeur, si elle est comprise dans cet interval qu'elle m'incrémente un indice.

        Cependant il m'indique une erreur 13 au niveau de la ligne :
         a = a + Cells(i, "M").Value 


        Dans ma colonne M je retrouve des chiffres a virgule.

        Si j'ai bien compris l'erreur 13, c'est un problème de déclaration de variable, je ne vois pas d'ou cela provient.

        mon code :

        Sub Tauxremplissage()
        
        Dim a As Integer
        Dim r As Integer
        Dim z As Integer
        
            For i = 1 To 700
            If Not Rows(i).Hidden Then
                If Cells(i, "D").Value > 1 < 39 Then
                a = a + Cells(i, "M").Value
                ElseIf Cells(i, "D") > 40 < 47 Then
                r = r + Cells(i, "M").Value
                ElseIf Cells(i, "D") > 101 < 124 Then
                z = z + Cells(i, "M").Value
                End If
            
             End If
            Next i
            Range("B3") = a / 8974
            Range("D3") = r / 7320
            Range("F3") = z / 5120
        
          
            
        End Sub
        0
        1. Modérateur
          Essaye comme ceci :

          If Cells(i, "D").Value > 1 And Cells(i, "D").Value < 39 Then
                  a = a + Cells(i, "M").Value
                  ElseIf Cells(i, "D") > 40 And Cells(i, "D").Value < 47 Then
                  r = r + Cells(i, "M").Value
                  ElseIf Cells(i, "D") > 101 And Cells(i, "D").Value < 124 Then
                  z = z + Cells(i, "M").Value
                  End If
          
          0
        2. Ca marche !

          Par contre je pense que du coup , par exemple les différents intervales prennent ils en compte les cellules 1 et 39 pour le premier par exemple ?

          Il le faudrait !
          0
        3. Modérateur
          alors il convient d'indiquer, au choix :
          If Cells(i, "D").Value >= 1 And Cells(i, "D").Value <= 39 Then

          ou :
          If Cells(i, "D").Value > 0 And Cells(i, "D").Value < 40 Then

          La seconde solution n'est valable que si la colonne D contient uniquement des nombres entiers...
          0
        4. Entendu, j'ai donc pris la première solution !

          Merci !
          0
        5. Modérateur
          de rien.
          A+
          0