Erreur dans mon code

Résolu
DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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. Gigatrappeur Messages postés 230 Statut Membre 25
     
    Bonjour,

    Peux-tu préciser ton problème ?

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

    Cordialement,
    Gigatrappeur
    0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  3. DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour,

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

    Merci à vous deux,
    DGVDR
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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. DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
       
      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
  4. DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
     
    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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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. DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
       
      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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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. DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
       
      Entendu, j'ai donc pris la première solution !

      Merci !
      0
    5. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      de rien.
      A+
      0