Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

tri par filtre...

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

O

olivierdeudeu

Guest
Bonjour,

Je possede un document excel qui récupere les données provenant d'une requete.
Ces données sont automatiquement triées par 'id'.
Avec l'id, j'ai egalement un libellé et un prix.

Actuellement à la fin de toutes mes lignes j'ai un montant total qui est calculé, et lorsque j'applique un filtre, le montant s'adapte bien à ce que je filtre.

Ce que j'aimerai c'est inserer à la fin de chaque serie d'id identique cette ligne montant total qui calcul le montant total des lignes qui ont l'id identique.

Je suis clair ? ce qui me permettrai de ne pas avoir besoin de trier par id, pour avoir les montants

Merci

Cordialement

Ci joint un fichier identique.
 

Pièces jointes

Re : tri par filtre...

Re bonjour,

juste un truc, tu peux expliquer un peu le fonctionnement du script ? car jm bien comprendre ;-)

J'ai ajouté des commentaires dans le code. Pour bien comprendre ce qui ce passe je te suggère de lancer la macro en "pas à pas" (touche F8 dans l'éditeur de macro VBE)

Code:
Sub test()
Dim I As Long, Lig As Long, LigDeb As Long
'on désactive l'affichage. Permet une execution plus rapide de la macro
Application.ScreenUpdating = False
'pour chaque ligne "I" de la colonne A en partant de la dernière jusqu'à la 2
For I = [A65536].End(xlUp).Row To 2 Step -1
'si la ligne du dessous est différente de la ligne actuelle on insert une ligne
  If Range("A" & I + 1).Value <> Range("A" & I).Value Then Rows(I + 1).Insert
Next
Lig = 2
'la boucle ci-dessous va ajouter les sous-totaux
Do
  Lig = Range("A" & Lig).End(xlDown).Row
'"LigDeb" compte le nombre d'id pour la "zone en cours"
  LigDeb = Application.CountIf(Range("A2", Range("A" & Lig)), Range("A" & Lig).Value)
'ici on écrit la fonction somme en colonne I
  Range("I" & Lig + 1).FormulaLocal = "=SOMME(I" & Lig - LigDeb + 1 & ":I" & Lig & ")"
'"TOTAL" en colonne B
  Range("B" & Lig + 1).Value = "TOTAL:"
'et le N° id en colonne A
  Range("A" & Lig + 1).Value = "id" & Range("A" & Lig).Value
'on insert 2 lignes avant et après le total
  Rows(Lig + 2).Insert: Rows(Lig + 1).Insert
'colore la ligne total en rouge
  Rows(Lig + 2).Interior.Color = vbRed
  Lig = Lig + 4
Loop Until Lig - 2 = [A65536].End(xlUp).Row
Application.ScreenUpdating = True
End Sub

Sans vouloir te vexer, je veux bien t'aider mais pas tout faire non plus donc prépare quelque chose et on verra (n'oublie pas qu'il s'agit d'un forum d'entraide!)
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
565
Réponses
9
Affichages
703
Réponses
2
Affichages
462
Réponses
12
Affichages
962
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…