Microsoft 365 Calculer et classer les factures en fonction de leur importance

  • Initiateur de la discussion Initiateur de la discussion Ines99
  • 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 !

Ines99

XLDnaute Occasionnel
Bonjour le forum,

Je vous sollicite pour trouver une façon de représenter "type Pareto" le pourcentage de factures en fonction de leur importance.
J'aimerais pouvoir distinguer un pourcentage de facture.
Par exemple, si je souhaite traiter que 30% de factures, alors me les colorier ou les mettre sur une autre feuille ?
Ci-joint mon fichier exemple

Merci pour votre aide

Ines
 

Pièces jointes

Solution
Re,
Ci-joint une version avec un outil d'aide à la mise à jour :
Il faut coller les nouvelles données en cellule A2 de la feuille "Nouvelles Données" puis cliquer sur le bouton "Clic pour importer".
La macro se charge d'effacer les anciennes données et de coller les nouvelles dans la feuilles "Factures" :
1756671032839.gif
Bonsoir,

Le code ci-dessous est a copier dans votre fichier Excel en Poste 1

Puis copier vos valeurs de votre poste #31 (en lieux et place de ceux de votre premier Poste #1 avec ce fichier excel qui est complèté des nouvelles données)

Copier la VBA dans ce fichier et le tour et joué.


VB:
Sub ParetoFactures()

    Dim ws As Worksheet
    Dim lastRow As Long
    Dim totalDebit As Double
    Dim i As Long
    Dim cumul As Double
    Dim seuil As Double
   
    Set ws = ThisWorkbook.Sheets("Factures") ' Adapter le nom de la feuille
   
    ' Paramètres
        'seuil = 0.3   ' 30% (modifiable)
        seuil = ws.Cells(4, 3)
   
    ' Dernière ligne
    lastRow = ws.Cells(ws.Rows.Count, "I").End(xlUp).Row
   
    ' Calcul total
    totalDebit = Application.WorksheetFunction.Sum(ws.Range("I7:I" & lastRow))
    ws.Range("B4").Value = totalDebit

    ' Nettoyage couleurs avant nouvelle exécution
    ws.Range("D8:L" & lastRow).Interior.Color = xlNone
   
    ' Trier les factures par montant décroissant
    ws.Sort.SortFields.Clear
    ws.Sort.SortFields.Add Key:=ws.Range("I7:I" & lastRow), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ws.Sort
        .SetRange ws.Range("D7:L" & lastRow)
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .Apply
    End With
   
    ' Boucle pour calculer % poids et % cumulé
    cumul = 0
    For i = 8 To lastRow
        ws.Cells(i, "J").Value = ws.Cells(i, "I").Value / totalDebit
        cumul = cumul + ws.Cells(i, "J").Value
        ws.Cells(i, "L").Value = cumul
       
        ' Colorier si dans les X% premiers
        If cumul <= seuil Then
            ws.Range("D" & i & ":L" & i).Interior.Color = RGB(255, 255, 0) ' Jaune
        Else
            ws.Rows(i).Interior.Color = xlNone
        End If
    Next i
   
    MsgBox "Analyse Pareto terminée - " & Format(seuil * 100, "0") & "% des factures sélectionnées."
   
End Sub
 
Dernière édition:
Re,
Voici une vidéo de l'exécution des macros avec tes données et le fichier exécuté.
Je n'ai pas de bug (j'ai dû placer tes données dans les bonnes colonnes et ajouter le calcul du pourcentage) et les délais me semblent raisonnables.
Regarde la pièce jointe 1221912


Voir le fichier joint
AtTheOne,
Quand je supprime la data de la feuille factures afin de mettre les nouvelles données, j'ai ceci.
Pourriez-vous rajouter le nombre de factures filtrées, enfin ....c'est déjà très bien, mais dites moi pour la mise à jour des donnés svp
Ines
1756665820057.png
 
AtTheOne,
Quand je supprime la data de la feuille factures afin de mettre les nouvelles données, j'ai ceci.
Pourriez-vous rajouter le nombre de factures filtrées, enfin ....c'est déjà très bien, mais dites moi pour la mise à jour des donnés svp
Ines
Regarde la pièce jointe 1221914

AtTheOne
Je viens de regarder le graphique qui réponds à ma question du nombre de factures filtrées.
J'espère que vous pourrez me dire pour la mise à jour de la data feuille.
Encore merci
Ines
 
Re,
Ci-joint une version avec un outil d'aide à la mise à jour :
Il faut coller les nouvelles données en cellule A2 de la feuille "Nouvelles Données" puis cliquer sur le bouton "Clic pour importer".
La macro se charge d'effacer les anciennes données et de coller les nouvelles dans la feuilles "Factures" :
1756671032839.gif
 

Pièces jointes

Bonsoir Le forum, AtTheOne,
Vraiment très fort la dernière mouture, un grand merci.
J'ai beaucoup appris aujourd'hui et toutes vos propositions de la 1ère à celle-ci sont vraiment très performantes.
Evidemment la dernière réponds de loin à mes attentes.
Vous êtes vraiment très fort
Merciiii
Ines
 
Bonjour le forum,

Je ne comprends rien à ce qu'a fait AtTheOne, pour moi cette macro dans le code de la feuille "Résultat" est évidente :
VB:
Private Sub WorkSheet_Activate()
Dim maxi#, tablo, i&, s#
maxi = [TotalDébit] * [Poids]
Application.ScreenUpdating = False
Cells.Delete 'RAZ
With UsedRange: End With 'actualise le UsedRange
With [TS_Factures].ListObject.Range 'tableau structuré
    .AutoFilter: .AutoFilter 'affiche tout
    .Copy [A1]
End With
With [A1].CurrentRegion
    .Sort .Columns(6), xlDescending, Header:=xlYes 'tri décroissant sur les montants
    tablo = .Columns(6).Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
    For i = 2 To UBound(tablo)
        If IsNumeric(tablo(i, 1)) Then s = s + CDbl(tablo(i, 1))
        If s > maxi Then Exit For
    Next
    If i < .Rows.Count Then .Rows(i + 1).Resize(.Rows.Count - i).Delete xlUp
End With
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub
Elle se déclenche quand on active la feuille.

Avec Poids = 33% => 0,15 seconde chez moi.

A+
 

Pièces jointes

- 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

Réponses
11
Affichages
279
Retour