Erreur dans mon code

Résolu
DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   -  
pijaku Messages postés 12263 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
A voir également:

4 réponses

Gigatrappeur Messages postés 226 Date d'inscription   Statut Membre Dernière intervention   25
 
Bonjour,

Peux-tu préciser ton problème ?

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

Cordialement,
Gigatrappeur
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
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
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
2 petites questions qui peuvent te sembler anodines :
1- quel problème as tu résolu?
2- comment l'as tu résolu?
0
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
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
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
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
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
 
Entendu, j'ai donc pris la première solution !

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