Problème de formule

  • Initiateur de la discussion Initiateur de la discussion matrix
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

matrix

XLDnaute Occasionnel
Bonjour à tous,

Je rencontre un problème avec une formule.

Code:
'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

Le problème est que dans la feuille "Tableau Cumulatif", il y a 680 fois ou il est écrit "INSPECTION2" et quand je clique sur le bouton "PÉRIODE 2" de la feuille "Tableau Cumulatif" qui correspond au script plus haut, il me donne que 34 fois et non 680. j'ai l'impression qu'il voit seulement les 42 premières lignes.

Pouvez-vous m'aider svp?

Merci de votre aide!
 

Pièces jointes

Re : Problème de formule

Bonsoir,

comme tu es dans l'onglet (1), et que tu veux déterminer la plage dans l'onglet(2), il faut déterminer toutes les variables en fonction de cet onglet (2)

Donc ta définition de la plage :

Code:
Set Plge1 = Sheets("Tableau Cumulatif").Range("J7:J" & Range("J7").End(xlDown).Row)

doit être modifiée comme suit :

Code:
Set Plge1 = Sheets("Tableau Cumulatif").Range("J7:J" & Sheets("Tableau Cumulatif").Range("J7").End(xlDown).Row)

que tu peux raccourcir comme ceci :

Code:
With Sheets("Tableau Cumulatif")
    Set Plge1 = .Range("J7:J" & .Range("J7").End(xlDown).Row)
    Set Plge2 = .Range("N7:N" & .Range("N7").End(xlDown).Row)
End With

N'oublie pas les points devant Range

PS, j'ai pas testé plus loin.....Regarde si le résultat est bon

Edit : Bonsoir, Bruno

Edit2 : En regardant ton code, tu as commis la même erreur dans cette ligne :

Code:
For Each cel In Sheets("COUT PAR PÉRIODE").Range("A5:A" & Range("A5").End(xlDown).Row)

Ne sachant de quel onglet tu lances ton code, prend pour habitude de toujours définir l'onglet "source", et avec le With, End With, c'est facile
 
Dernière édition:
Re : Problème de formule

Salut Matrix,

Ton problème vient des 2 premières lignes ou tu définis tes plages

Code:
Set plge1 = Sheets("Tableau Cumulatif").Range("J7:J" & [COLOR=red][B]Range("J7").End(xlDown).Row[/B][/COLOR])
Set Plge2 = Sheets("Tableau Cumulatif").Range("N7:N" & [COLOR=red][B]Range("N7").End(xlDown).Row[/B][/COLOR])

La bvaleur récupérée est celle de la feuille sur laquelle tu te trouves, puisque non défini !

Il faut ajouter le nom de la feuille devant
Code:
Set plge1 = Sheets("Tableau Cumulatif").Range("J7:J" &[COLOR=green][B] Sheets("Tableau Cumulatif").[/B][/COLOR]Range("J7").End(xlDown).Row)
Set Plge2 = Sheets("Tableau Cumulatif").Range("N7:N" & [COLOR=green][B]Sheets("Tableau Cumulatif").[/B][/COLOR]Range("N7").End(xlDown).Row)

Edit : oups, salut bhbh

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
832
Réponses
7
Affichages
277
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
388
Retour