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

tableau de synthèse (macro)

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

robinhood

XLDnaute Occasionnel
Bonjour Le Forum,

je m'adresse a vous pour m'aider sur ce sujet que je penses facile pour un expert, et me sera très utile dans mon travail.

Je vous remercie pour toute aide.

si c'est possible est ce que ça peut se faire avec une macro c'est a dire je clique sur un bouton et les tableaux de synthèse s'actualisent.

Merci d'avance.
Robinhood
 

Pièces jointes

Bonsoir à tous, 🙂

Pour le fun :
VB:
Option Explicit
Sub test()
Dim a, w(), i As Long, j As Long, n As Long, dico As Object
    Set dico = CreateObject("Scripting.Dictionary")
    dico.CompareMode = 1
    With Sheets("Base de données")
        a = .Range("b3").CurrentRegion.Value
        For i = 2 To UBound(a, 1)
            If Not dico.exists(a(i, 2)) Then
                Set dico(a(i, 2)) = _
                CreateObject("Scripting.Dictionary")
            End If
            If Not dico(a(i, 2)).exists(a(i, 3)) Then
                dico(a(i, 2))(a(i, 3)) = VBA.Array(a(i, 2), a(i, 3), Empty)
            End If
            w = dico(a(i, 2))(a(i, 3))
            w(2) = w(2) + a(i, 4)
            dico(a(i, 2))(a(i, 3)) = w
        Next
    End With
    Application.ScreenUpdating = False
    With Sheets("synthèse1").Range("b2")
        .CurrentRegion.Offset(1).Clear
        n = 1
        For i = 0 To dico.Count - 1
            For j = 0 To dico.items()(i).Count - 1
                With .Offset(n).Resize(1, UBound(dico.items()(i).items()(j), 1) + 1)
                    .Value = dico.items()(i).items()(j)
                End With
                n = n + 1
            Next
        Next
        With .CurrentRegion
            .Font.Name = "calibri"
            .Font.Size = 10
            .VerticalAlignment = xlCenter
            .BorderAround Weight:=xlThin
            .Borders(xlInsideVertical).Weight = xlThin
            .Columns.AutoFit
        End With
    End With
    Set dico = Nothing
    Application.ScreenUpdating = True
End Sub
klin89
 
Bonjour.
Sinon, pour Feuil2 (synthèse1):
VB:
Option Explicit

Private Sub Worksheet_Activate()
Dim T(), Réf As SsGr, Lot As SsGr, L As Long
ReDim T(1 To 1000, 1 To 3)
For Each Réf In Gigogne(Feuil1.[B4:E4], 1, 3)
   For Each Lot In Réf.Co
      L = L + 1
      T(L, 1) = Réf.Id
      T(L, 2) = Lot.Id
      T(L, 3) = Lot.Somme(4)
      Next Lot, Réf
Me.[B3].Resize(UBound(T, 1), UBound(T, 2)).Value = T
End Sub
Installez ce classeur et cochez la référence à GigIdx.
 

Pièces jointes

Dernière édition:
Pour Feuill3 (Synthèse2) ce serait :
VB:
Option Explicit

Private Sub Worksheet_Activate()
Dim T(), Réf As SsGr, L As Long
ReDim T(1 To 1000, 1 To 3)
For Each Réf In Gigogne(Feuil1.[B4:E4], 1)
   L = L + 1
   T(L, 1) = Réf.Id
   T(L, 2) = Réf.Co(1)(2)
   T(L, 3) = Réf.Somme(4)
   Next Réf
Me.[B3].Resize(UBound(T, 1), UBound(T, 2)).Value = T
End Sub
 
Bonjour A tous

je vous remercie pour vos réponses.
@Dranreb merci pour votre retour, j'ai installé le fichier et mis les codes et ça marche par contre je n'ai pas pu retranscrire le code pour qu'il marche sur le fichier d'origine (officiel) 🙁 je ne suis pas un connaisseur 😡, je te joint le fichier (je vais enlever toutes les données professionnelles et te l'envoyer, merci de mettre le code dans les deux pages que je vais indiquer dans le fichier, et merci beaucoup pour ton effort.

dans l'attente de ton retour
Robinhood
 

Pièces jointes

Bonjour Klin89, merci pour ton retour aussi j'ai mis le code dans le feuille "synthèse1", mais au lieu de mettre la référence du produit ça donne la désignation, merci de faire la modification pour ça me donne la référence, par contre je penses qu'il faudra aussi un code pour la feuille "synthèse2" pour faire la somme par référence.

Merci d'avance 🙂
Robinhood
 
Non, il n'est pas nécessaire de réinstaller le fichier à chaque utilisation.
Mais s'il n'y a pas d'autre classeur ouvert dans la même fenêtre d'application dont le projet VBA s'y réfère déjà, il peut être nécessaire de l'ouvrir pour pouvoir la cocher dans un projet qui ne l'a pas encore en référence. Le meilleur moyen pour ce faire c'est de cocher, au moins provisoirement, le complément "Fonction Gigogne", coté Excel cette fois.
Quel est le message d'erreur ?
Je ne testerai que votre code, dans un .xlsm, si ses réactions vous resteront inexplicables.
 
- 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
9
Affichages
152
Réponses
20
Affichages
551
Réponses
2
Affichages
182
D
  • Question Question
Réponses
5
Affichages
208
Didierpasdoué
D
Réponses
12
Affichages
449
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…