Création de synthèse + noms onglets + sommes

Bonjour à tous,

J'aimerais crée une sorte de synthèse sur ma feuille principale en allant récupérer les noms de tous les onglets présent à l'instant T (sauf certain évidement) et avec une colonne qui irais faire la sommes de tous les totaux des feuilles présente dans mon classeur,

La difficulté est que nous ne pouvons pas faire référence à des cellules précises car la taille de mes tableaux sont de différentes taille. Par contre la somme des totaux à récupérer est toujours en colonne J...

Pour peut-être faciliter la chose, j'ai ajouté du texte "Total" à gauche de ma cellules des totaux, peut-être il serait possible d'aller chercher la valeur des cellules situé à droite de la cellule "total" et les additionner, puis renvoyer la valeur vers ma feuille principe appelée "Base" en Colonne S ligne 5

Je précise que je ne connais pas les nombes de mes feuilles à l'avance car elle sont généré par du VBA dans mon classeur du boulot

J'ai donc crée un petit coin synthèse à droite de mon classeur.

Le mieux sera de joindre un classeur test car on me dit souvent que mes explications ne sont pas clair

Dans mon cas la somme à additionner est J18 ET J36 des feuilles 1 et 2

9v1.xlsm (42.64 Ko)

merci

Bonjour,

Un essai, ouvrez le fichier et cliquez sur le bouton "Récupération des totaux":

Cdlt

Bonjour,
Une autre proposition avec Power Query et une actualisation VBA.
Cdlt.

6v1.xlsm (90.11 Ko)

Bonjour les gars,

Merci pour vos retours, voici mes critiques sur les deux retours,

Pour Arturo83,

C'est intéressant, c'est ce que je voulais, ça m'a l'air tout bon, au début je pensais que ça beugué car j'ai crée une nouvelle feuille vide pour voir si il allait récupérer le nom et j'ai eu un plantage du VBA, mais je me suis rendu compte que c’était parce que la feuille était vide, donc pas de tableau à taquiner dessus.

Ensuite j'aimerais savoir pourquoi un espace vide à été laissé lorsque tu nomme la feuille Base, j'ai cru à une erreur de ta part mais enfaite non mdr

Set f1 = Sheets("Base ")

La seule amélioration que j'aimerais c'est avoir plus de liberté sur les noms de feuilles à exclure du style comme ça :

Dim xWs As Worksheet

If xWs.Name <> "Base" And xWs.Name <> "Mafeuille" And xWs.Name <> "Mafeuille" And xWs.Name <> "Mafeuille" Then

J'utilise ce code dans un autre module qui me sert à supprimer toutes les feuilles de mon classeur sauf celle que j'ai nommée ci-dessus.

Enfin je pense que c'est aussi possible d'ajouter plusieurs nom de feuille à la variable f1 ? Je n'ai juste pas trouvé la bonne syntaxe à écrire car j'obtiens des erreurs lorsque j’essaie d'ajouter d'autres nom de feuilles.

A part cela c'est très fonctionnel, j'ai vu que tu avais ajouté une petite formules au dessus de la ligne total,

Merci

Pour Jean-Eric,

Lorsque j'ajoute une copie d'une des feuilles en la nommant par exemple "3" elle n'est pas ajouté au tableau des synthèse, j'ai bien une nouvelles lignes qui se crée mais cellule vide sans le nom, juste la somme du total à cause de la contrainte de devoir nommée mes tables en T_

Je précise qu'avant cette histoire de synthèse j'ai des feuilles crée en VBA

Il me semble que c'est toi qui m'a aidé sur le sujet suivant, par contre bizarrement le sujet est vide alors que quelqu’un m'avais bien aidé et répondu à ma demande,

En gros mes tables se crée avec des noms bien spécifique par VBA je n'ai donc pas la main pour les nommer en T_ ou alors ce serait trop long à faire modifier ou à expliquer.

https://forum.excel-pratique.com/excel/trier-reclasser-donne-en-vba-182446

Cordialement,

Bonjour,

Revoici le code avec des commentaires.

Sub Totaux()
    'Déclaration des variables
    Dim f1 As Worksheet, f2 As Worksheet, f3 As Worksheet, f4 As Worksheet
    Dim i As Long, Lig_Dest_f1 As Long, x As Long

    Application.ScreenUpdating = False
    'Attribution des variables aux feuilles à exclure pour la récupération des totaux
    Set f1 = Sheets("Base") 'feuille de synthèse, on lui attribue la variable f1
    Set f3 = Sheets("Feuil3") 'autre feuille n'entrant pas dans la recherche du total
    Set f4 = Sheets("Feuil4") 'autre feuille n'entrant pas dans la recherche du total
    'en ajouter d'autres si nécessaire

    f1.Range("L5:M100").ClearContents 'on efface les précédents résultats
    Lig_Dest_f1 = 5 'première ligne de destination des résultats
    For i = 1 To Sheets.Count
        'si la feuille à traiter est différente de celles ci-dessous, sinon on passe à la suivante
        If Sheets(i).Name <> f1.Name And Sheets(i).Name <> f3.Name And Sheets(i).Name <> f4.Name Then
            Set f2 = Sheets(Sheets(i).Name) 'si cette feuille est à récupérer, on lui attribue la variable f2
            On Error Resume Next 'si on trouve une erreur en exécutant la ligne suivante
            x = Application.Match("Total", f2.Columns("I"), 0) 'on recherche le mot "Total"
            If Err.Number = 0 Then 'S'il n'y a pas d'erreur, on récupère les données
                f1.Cells(Lig_Dest_f1, "L") = f2.Name
                f1.Cells(Lig_Dest_f1, "M") = f2.Cells(x, "J")
            End If
            On Error GoTo 0 'on réinitialise la gestion d'erreur
            Lig_Dest_f1 = Lig_Dest_f1 + 1 'on incrémente la ligne de destination dans la feuille "Base"
        End If
    Next i
    f1.Range("N4").FormulaR1C1 = "=SUM(INDIRECT(""M5:M""&COUNTA(C12:C13)-1))" 'Formule pour le total de toutes les feuilles

    'Libération de la mémoire
    Set f1 = Nothing
    Set f2 = Nothing
    Set f3 = Nothing
    Set f4 = Nothing
End Sub

Ce qui vous reste à faire, c'est d'attribuer les noms des feuilles à ignorer aux variables f3, f4 etc.. (ajoutez-en autant que nécessaire) sur le même principe.

On attribue la variable f2 uniquement aux feuilles qui doivent être prises en compte pour les totaux, et pas avant comme vous le demandez.

le fichier avec les commentaires:

Cdlt

Re,

C'est parfait merci beaucoup

Rechercher des sujets similaires à "creation synthese noms onglets sommes"