Erreur dans mon code

Résolu/Fermé
DGVDR Messages postés 158 Date d'inscription vendredi 10 août 2012 Statut Membre Dernière intervention 20 juillet 2015 - 7 mai 2013 à 10:06
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 7 mai 2013 à 13:52
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

Gigatrappeur Messages postés 226 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 3 juillet 2014 25
7 mai 2013 à 10:31
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
7 mai 2013 à 10:33
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 vendredi 10 août 2012 Statut Membre Dernière intervention 20 juillet 2015
7 mai 2013 à 10:42
Bonjour,

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

Merci à vous deux,
DGVDR
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
7 mai 2013 à 10:49
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 vendredi 10 août 2012 Statut Membre Dernière intervention 20 juillet 2015
7 mai 2013 à 11:11
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 vendredi 10 août 2012 Statut Membre Dernière intervention 20 juillet 2015
7 mai 2013 à 11:34
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
7 mai 2013 à 11:59
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 vendredi 10 août 2012 Statut Membre Dernière intervention 20 juillet 2015
7 mai 2013 à 12:17
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
7 mai 2013 à 12:33
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 vendredi 10 août 2012 Statut Membre Dernière intervention 20 juillet 2015
7 mai 2013 à 13:41
Entendu, j'ai donc pris la première solution !

Merci !
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
7 mai 2013 à 13:52
de rien.
A+
0