Microsoft 365 Paramétrage fichier avec sous-totaux

pascalmatthys

XLDnaute Nouveau
Bonjour à tous,
J'ai un fichier Excel avec des sous-totaux, que je veux rendre le plus présentable/exploitable possible.
Vous le trouverez en annexe.
le dernier point que je voudrais fixer : il faudrait que l'information dans la colonne I et J se recopie à côté du sous total.
donc par ex pour la ligne 2, il faut que je puisse voir SOMA dans la cellule I2 et Soco Martinez dans la colonne J2

Je ne vois pas trop quel formule ou fonctionnalité utiliser... ?

Merci d'avance pour votre aide.
 

Pièces jointes

  • Postes_ouverts_clients au 30-04-22.xlsx
    80.2 KB · Affichages: 5

chris

XLDnaute Barbatruc
Bonjour

Cette fonctionnalité vieillotte n'est maintenue que pour des problèmes de compatibilité mais ne fonctionne pas avec tout ce qu'Excel a ajouté depuis 2003 et notamment les tableaux structurés...

On évite de façon générale de mélanger détail et synthèse car le mélange est peu percutant.

On a le choix entre les synthèses par TCD ou par PowerQuery

Si tu tiens à garder cette juxtapositon 2 solutions :
  • insérer des formules manuellement ou par VBA sur chaque ligne de sous total,
  • ne pas effectuer de sous totaux par groupe mais à droite des données : voir fichier joint où un segment permet de filtrer d'un clic
 

Pièces jointes

  • Sous_Totaux.xlsx
    77.2 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Leprofesseur, Chris,
Tout à fait d'accord, de plus ça fait de gros tableaux illisibles.
On peut facilement construire une synthèse par N° de dossier.
Voir PJ. La synthèse s'effectue lorsqu'on sélectionne la feuille "Synthèse". Avec :
VB:
Sub Worksheet_Activate()
    Dim T, Tableau, DL%, Taille%, Indice%, i%
    [A2:D65000].ClearContents
    Application.ScreenUpdating = False
    With Sheets("Sélection et Rapport")
        DL = .Range("A65500").End(xlUp).Row
        T = .Range("A1:J" & DL)
    End With
    Taille = UBound(T)
    Indice = 0
    ReDim Tableau(Taille, 3)
    For i = 2 To Taille
        If Left(T(i, 1), 5) <> "Total" Then
            If T(i, 1) <> T(i - 1, 1) Then
                Tableau(Indice, 0) = T(i, 1)
                Tableau(Indice, 1) = T(i, 9)
                Tableau(Indice, 2) = T(i, 10)
                Indice = Indice + 1
            End If
        End If
    Next i
    [A2].Resize(UBound(Tableau, 1), UBound(Tableau, 2)) = Tableau
    DL = Range("A65500").End(xlUp).Row
    Range("D2:D" & DL).FormulaLocal = "=SOMME.SI.ENS('Sélection et Rapport'!H:H;'Sélection et Rapport'!A:A;A2)"
    Range("D2:D" & DL) = Range("D2:D" & DL).Value
End Sub
 

Pièces jointes

  • Postes_ouverts_clients au 30-04-22.xlsm
    110.3 KB · Affichages: 2

Discussions similaires

Réponses
6
Affichages
330
Réponses
2
Affichages
270

Statistiques des forums

Discussions
312 088
Messages
2 085 203
Membres
102 818
dernier inscrit
NeoMaint