Problème avec script VBA excel

Résolu
Signaler
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
-
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
-
Bonjour à tous,

Je rencontre un problème avecun script vba excel.

Voici le script:
<hr size="2" width="100%" />
'nombre de réparation
Ref = Range("K3").Value
Set Plge1 = Sheets("Tableau Cumulatif").Range("J7:J" & Range("J7").End(xlDown).Row)
Set Plge2 = Sheets("Tableau Cumulatif").Range("N7:N" & Range("N7").End(xlDown).Row)
For Each cel In Sheets("COUT PAR PÉRIODE").Range("A5:A" & Range("A5").End(xlDown).Row)
If cel.Value <> "" Then
cel.Offset(0, 10) = Application.WorksheetFunction.CountIf(Plge1, cel & Ref)
cel.Offset(0, 11) = Application.WorksheetFunction.SumIf(Plge1, cel & Ref, Plge2)
End If
Next

'Total argent
    nbLignes = Cells(Rows.Count, "A").End(xlUp).Row
 Set Plage = Sheets("COUT PAR PÉRIODE").Range("L5:L" & nbLignes)
    For Each CELL In Plage
        Range("L1") = Application.WorksheetFunction.Sum(Plage)
        Next
       
       
        '% SELON TYPE
 On Error Resume Next
    nbLignes = Cells(Rows.Count, "A").End(xlUp).Row
   
    Set Plage = Sheets("COUT PAR PÉRIODE").Range("K5:K" & nbLignes)
  
   
    For Each CELL In Plage
        CELL.Offset(0, 2).Value = CELL.Value / Application.WorksheetFunction.Sum(Plage)
    Next CELL
   
  '% SELON Montant
   
       nbLignes = Cells(Rows.Count, "A").End(xlUp).Row
   
    Set Plage = Sheets("COUT PAR PÉRIODE").Range("L5:L" & nbLignes)
    For Each CELL In Plage
        CELL.Offset(0, 2).Value = CELL.Value / Application.WorksheetFunction.Sum(Plage)
    Next CELL 
       
MsgBox "Terminé"
End Sub
<hr size="2" width="100%" />
Mon problème est que quand il va chercher le nombre de fois ou apparait un nom dans la feuille "COUT PAR PÉRIODE", il me donne un nombre de 34 fois quand pourtant il y en à 680 dans la colone J. J'ai l'impression qu'il vois que les 43 première lignes.

Pouvez-vous m'aider svp?

Merci de votre aide.

2 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Salut,

Dans certains cas, tu utilises xlDown
S'il y a une cellule vide dans la colonne ou le Range, xlDown va s'arrêter sur cette ligne. Il est donc toujours préférable d'utiliser xlUp en partant de la fin quand on veut retourner le nombre de lignes totales. C'est possiblement à cause de ça que ton CountIf ne donne pas le bon total.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
Merci Beaucoup, tu as raison. Là, ça fonctionne.

Désolé aussi pour le retard :)