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

Regroupement de données de 2 tableaux

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 !

pitchie1808

XLDnaute Nouveau
Salut tout le monde,

Je désespère de trouver une solution à mon problème.
J'ai 2 tableaux: 1 reprenant des facturations, et 1 reprenant des livraisons.
Je cherche à partir des données de livraisons de regrouper les données de facturation par référence.

Sur le fichier exemple, en gros je cherche à remplir le tableau à créer par les données en rouge.

Si quelqu'un a une solution à proposer, je suis preneur.....

Merci beaucoup
 

Pièces jointes

Salut,
J'ai du mal m'exprimer.
En fait, à partir du tableau livraison en haut à droite, je veux faire un tableau récapitulatif (en bas à droite) qui ferait une sorte de sous total par référence (ex : la référence 1234 qui est sur plusieurs lignes se retrouve sur une seule ligne avec la quantité totale), avec une recherche de toutes les factures qui s'y rapportent (tableau en haut à gauche) et les quantités facturées.

Je sais pas si je suis plus clair là..... La recherchev va me donner la première donnée du tableau mais pas l'exhaustivité des données (il me ramènera la première facture trouvée mais pas toutes.).


Merci en tout cas pour ta réponse rapide.
 
Super, mais de K17 à K20 doit aussi être le résultat d'une formule. Tout ce qui est en rouge doit être une formule qui récupère les données des tableaux en fonction des cellules I et J 17 à 20.

En tout cas merci beaucoup, c'est déjà pas mal.
 
Re,

Pour ce que j'en ai compris, un essai via une macro VBA. Cliquez sur le bouton Hop !

La macro est dans module1.
VB:
Sub Regrouper()
Dim Fact, Livre, dicFact, dicLivre, Res, ref, fac
Dim i&, n&, k&

   Application.ScreenUpdating = False
   With Sheets("feuil1")
      i = .Cells(.Rows.Count, "f").End(xlUp).Row
      Livre = .Range("f5:g" & i).Value
      i = .Cells(.Rows.Count, "b").End(xlUp).Row
      Fact = .Range("b5:d" & i).Value
      Set dicLivre = CreateObject("scripting.dictionary")
      For i = 1 To UBound(Livre)
         dicLivre(CStr(Livre(i, 1))) = dicLivre(CStr(Livre(i, 1))) + Livre(i, 2)
      Next i
    
      ReDim Res(1 To dicLivre.Count * UBound(Fact), 1 To 4)
      n = 0
      For Each ref In dicLivre.keys
         Set dicFact = CreateObject("scripting.dictionary")
         For k = 1 To UBound(Fact)
            If CStr(Fact(k, 1)) = ref Then
               dicFact(Fact(k, 2)) = dicFact(Fact(k, 2)) + Fact(k, 3)
            End If
         Next k
        n = n + 1
        Res(n, 1) = CLng(ref)
         Res(n, 2) = dicLivre(ref)
         n = n - 1
         For Each fac In dicFact
            n = n + 1
            Res(n, 3) = fac
            Res(n, 4) = dicFact(fac)
         Next fac
      Next ref
    
      .Range("i5:L" & .Rows.Count).Clear
      .Range("i5").Resize(n, 4) = Res
      .Range("i5").Resize(n, 4).Borders.LineStyle = xlContinuous
      .Range("i5").Offset(, 2).Resize(n, 2).Font.Color = RGB(255, 0, 0)
   End With
End Sub
 

Pièces jointes

Bonsoir le fil, le form

@mapomme
[aparté]
Pointillisme d'avant minuit quand tu nous tiens
(à tester sur une feuille vide)
VB:
Sub PointOuPasPoint()
Dim i&,j&
With ActiveSheet
    .Range("A1:A1600") = [PI()]
    i = .Cells(Rows.Count, 1).End(xlUp).Row 'sans le point
    j = .Cells(.Rows.Count, 1).End(xlUp).Row 'avec le point
End With
MsgBox i & Space(3) & j
End Sub
[/aparté]
Cet aparté était motivé simplement par le plaisir de croiser mapomme 😉
(avec un petit taquinement d'avant dodo en bonus)
 
Bonsoir taquin Staple1600 😉,

Pointillisme d'avant minuit quand tu nous tiens
(à tester sur une feuille vide)
J'avais l'habitude de ne pas utiliser le point pour Rows.Count et Columns.Count.
Puis on m'a demandé de commenter un code l'utilisant. Pour ne pas me lancer dans de longues explications pour un néophyte en VBA, j'ai décidé depuis de préfixer ces deux termes. D'ailleurs, cela me semble respecter une certaine logique. On travaille sur une feuille et cette feuille est désignée au moyen de With... donc on utilise le point pour des propriétés relatives à cette feuille. Même si la propriété est identique quelque soit la feuille.

Quoique ! Dans le fichier joint, un exemple (de derrière les fagots) où le point est indispensable. Cliquer sur le bouton Hop! de la feuille graphique 😛

Bonnet de nuit 😎
 

Pièces jointes

Dernière édition:
Re

Je me dispense de l'indispensable 😉
VB:
Sub PointOuPasPoint()
Dim i&, j&, z&
z = Feuil1.Rows.Count
With Sheets("Feuil1")
      j = .Cells(z, 1).End(3).Row   'sans le point
      i = .Cells(z, 1).End(3).Row   'le point, non merci
End With
MsgBox i & Space(1600 / 1600) & j
End Sub

By the way, tu peux m'expliquer pourquoi End(xlUP) équivaut à End(3), stp.
(Pour t'aider dans le solutionnement de la chose, enfin peut-être 😉 )
https://www.excel-downloads.com/threads/de-laide-pour-une-macro-boucle.20021658/page-4
 
- 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
5
Affichages
615
Réponses
5
Affichages
130
Réponses
6
Affichages
256
Réponses
2
Affichages
154
Réponses
13
Affichages
608
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…