Additioner des valeurs non unique sur plusieurs feuille exce
Bonjour,
Je suis débutant sur Excel et je ne sais pas si mon titre exprime bien ce que j'aimerais faire.
Pour le travail je dois créer un outil prédictif à partir d'extraction SAP, là où je bloque c'est que je dois additioner des entrées et des sorties d'articles ( une feuille pour les sorties, une feuille pour les entrées) sur une troisième feuilles.
Le problème est que un article peut apparaitre plusieurs fois, une ligne pour chaques sorties faites.
Et surtout je n'ai pas le même nombre d'article sortie et entré.
Il faut que sur la troisième feuilles, il n'y ai une seule ligne par numéro d'article avec l'addition de ses entrées et sorties donc additionant les deux tableaux certains article étant seulement sorties ou entrés..
Je sais que la solution dois surement passer par une recherche V de ce que j'ai pu voir avec les problèmes similaires mais je ne sais pas du tout l'utiliser
Si quelqu'un connait une fonction utilisable ou comment s'y prendre j'aimerais bien que l'on me l'explique car je vais devoir utiliser des formules comme ça plusieurs fois dans mon outil.
Je vous remercie par avance de votre aide !
Je vous est mis un échantillon car j'ai plus de 170 000 reférences en tout à traiter.
Bonsoir Stome, le forum
A tester :
Sub test()
Dim a, i As Long
a = Sheets(2).Range("b1").CurrentRegion.Value
With CreateObject("Scripting.Dictionary")
.CompareMode = 1
.Item("N° d'article") = "Quantité"
For i = 2 To UBound(a, 1)
.Item(a(i, 1)) = .Item(a(i, 1)) + a(i, 2)
Next
a = Sheets(1).Range("c1").CurrentRegion.Value
For i = 2 To UBound(a, 1)
.Item(a(i, 1)) = .Item(a(i, 1)) + a(i, 2)
Next
'restitution
If .Count > 1 Then
Sheets(3).Range("a1").Resize(.Count, 2).Value = _
Application.Transpose(Array(.keys, .items))
End If
End With
End Subklin89
Re Stome,
le code réajusté :
Option Explicit
Sub test()
Dim a, b(), i As Long
a = Sheets("Reintegration").Range("b1").CurrentRegion.Value
With CreateObject("Scripting.Dictionary")
.CompareMode = 1
.Item("N° d'article") = "Quantité"
For i = 2 To UBound(a, 1)
.Item(a(i, 1)) = .Item(a(i, 1)) + a(i, 2)
Next
a = Sheets("Sortie").Range("c1").CurrentRegion.Value
For i = 2 To UBound(a, 1)
.Item(a(i, 1)) = .Item(a(i, 1)) + a(i, 2)
Next
'pour eviter Application.Transpose
ReDim b(1 To .Count, 1 To 2)
For i = 0 To .Count - 1
b(i + 1, 1) = .keys()(i)
b(i + 1, 2) = .items()(i)
Next
'restitution
If .Count > 1 Then
Sheets(3).Range("a1").Resize(UBound(b, 1), UBound(b, 2)).Value = b
End If
End With
End Subklin89
Une solution bien plus simple aurait été de regrouper les entrées et sorties sur le même tableau (même feuille), et ensuite de faire un tableau croisé dynamique.
Tu rajoute une colonne qui te permet de distinguer entré et sortie et un filtre par dessus histoire de visualiser aux choix les entrée ou les sortie
Edit : A partir de la version 2013 d'Excel tu peux garder tes 2 feuilles et utiliser les modèles de données.
Merci beaucoup de vos réponse cela va mettre d'une grande aide !
C'est super sympa