cumuler les doublons dans excel

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

L

lhymn

Guest
Bonjour,

Voila j'ai un petit soucie
Je récupère plusieurs foie par jours des fichiers Excel avec des tableaux avec des lignes dont il faut que je cumule les articles identiques et que je supprime les lignes en double. Pour le moment j'utilise la fonction filtre automatique

exemple :
E5225244883 BORN M4/6.3G+ALVEOLE AL2 60
E5225244883 BORN M4/6.3G+ALVEOLE AL2 24
E5225255778 FLASQUE FEMG GRIS 1
E5225255778 FLASQUE FEMG GRIS 1
E5225558105 FUS. 10X38 AM 2A/500V 2

ce qui me donne :
E5225244883 BORN M4/6.3G+ALVEOLE AL2 84
E5225255778 FLASQUE FEMG GRIS 2
E5225558105 FUS. 10X38 AM 2A/500V 2

Je recherche une macro ou un script qui me permettrai de faire cela plus rapidement

Merci d'avance
Ci joint un fichier d'exemple
 

Pièces jointes

Re : cumuler les doublons dans excel

Bonjour lhymn,
Une proposition, si tu as des problèmes pour l'adaptation je commenterai le code demain.
VB:
Sub Tri()
Dim D As Object, i&, j As Variant, T As Variant, K()
Set D = CreateObject("Scripting.Dictionary")
With Sheets("Feuil1")
    For i = 8 To .Cells(Rows.Count, 2).End(xlUp).Row
        D(.Cells(i, 2) & "_" & .Cells(i, 4)) = D(.Cells(i, 2) & "_" & .Cells(i, 4)) + .Cells(i, 7).Value
    Next i
End With
T = D.Keys
ReDim K(0 To UBound(T), 1 To 2)
For i = LBound(T) To UBound(T)
    K(i, 1) = Split(T(i), "_")(0)
    K(i, 2) = Split(T(i), "_")(1)
Next i
With Sheets("Feuil2")
    .Cells(2, 1).Resize(UBound(K) + 1, 2) = K
    .Cells(2, 3).Resize(D.Count, 1) = Application.Transpose(D.Items)
End With
End Sub
Cordialement
 

Pièces jointes

Re : cumuler les doublons dans excel

ça marche super bien mais effectivement des petits commentaire afin de comprendre le fonctionnement et l'adapter au évolution futur serait pas mal
mais en tout cas merci beaucoup

Par contre je viens de m'apercevoir il faut que je récupéré aussi les autres colonnes qui sont après la quantité, et je ne voie pas ce qu'il faut modifier (vraiment newb sur les scriptes)
merci d'avance
Greg
 
Dernière modification par un modérateur:
Re : cumuler les doublons dans excel

Bonjour lhymn, le fil, le forum
Par contre je viens de m'apercevoir il faut que je récupéré aussi les autres colonnes qui sont après la quantité
Alors ma proposition n'est plus valable, désolé.
Comme je l'ai fait, je laisse quand même le code commenté.
Bon courage.
Cordialement
 

Pièces jointes

Re : cumuler les doublons dans excel

Bonjour lhymn, le fil, le forum

Alors ma proposition n'est plus valable, désolé.
Comme je l'ai fait, je laisse quand même le code commenté.
Bon courage.
Cordialement

Arff domage cela m'aurai bien aidé merci comme même
Y a pas moyen de l'adapté ???? car les colonne HIJ sont identique pour chaque même article
exemple :
E5225244883 BORN M4/6.3G+ALVEOLE AL2 60 CH 2
E5225244883 BORN M4/6.3G+ALVEOLE AL2 24 CH 2
E5225255778 FLASQUE FEMG GRIS 1 CH 2
E5225255778 FLASQUE FEMG GRIS 1 CH 2

ce que cela doit donnée :
E5225244883 BORN M4/6.3G+ALVEOLE AL2 84 CH 2
E5225255778 FLASQUE FEMG GRIS 2 CH 2

Merci encore
et si d'autre on des idée sur ma problématique je suis preneur
merci d'avance
Lhymn
 
Re : cumuler les doublons dans excel

Re
Peut être comme ça:
VB:
Sub Tri2()
Dim D As Object, i&, J&, Col&, TabReport()
Set D = CreateObject("Scripting.Dictionary")
Col = 6 'nombre de colonne dans le tableau final
With Sheets("Feuil1")
    For i = 8 To .Cells(Rows.Count, 2).End(xlUp).Row
        If Not D.Exists(.Cells(i, 2)) Then
            J = J + 1
            ReDim Preserve TabReport(1 To Col, 1 To J)
            TabReport(1, J) = .Cells(i, 2)
            TabReport(2, J) = .Cells(i, 4)
            TabReport(4, J) = .Cells(i, 8)
            TabReport(5, J) = .Cells(i, 9)
            TabReport(6, J) = .Cells(i, 10)
        End If
        D(.Cells(i, 2).Value) = D(.Cells(i, 2).Value) + .Cells(i, 7).Value
    Next i
End With
With Sheets("Feuil2")
    .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp).Offset(1, Col - 1)).ClearContents
    .Cells(2, 1).Resize(UBound(TabReport, 2), Col) = Application.Transpose(TabReport)
    .Cells(2, 3).Resize(D.Count, 1) = Application.Transpose(D.Items)
End With
End Sub
Cordialement
 

Pièces jointes

Re : cumuler les doublons dans excel

Malheureusement marche pas t'on bouton qui fait appel a Tri marche et me renvoi bien les premières ligne mais ne me retourne pas toute les colonnes la fonction Tri2 me retourne des lignes bizarre cumulé ou pas

Par contre si cela peux être utile l'ordre des colonne peuvent être changé avec l'exportation sur excel pour que la dernière colonne soit la valeur a cumulé
 
Re : cumuler les doublons dans excel

Re
Ilm semble que les N° d'articles seuls posent problème.
Essai comme ça (J'ai enlevé la colonne des "P" en mettant en remarque la ligne correspondante
VB:
Sub Tri2()
Dim D As Object, i&, j&, Col&, TabReport()
Set D = CreateObject("Scripting.Dictionary")
Col = 6 'nombre de colonne dans le tableau final
With Sheets("Feuil1")
    For i = 8 To .Cells(Rows.Count, 2).End(xlUp).Row
        If Not D.Exists(.Cells(i, 2) & "_" & .Cells(i, 4)) Then
            j = j + 1
            ReDim Preserve TabReport(1 To Col, 1 To j)
            TabReport(1, j) = .Cells(i, 2)
            TabReport(2, j) = .Cells(i, 4)
            TabReport(4, j) = .Cells(i, 8)
            TabReport(5, j) = .Cells(i, 9)
            'TabReport(6, j) = .Cells(i, 10)
        End If
        D(.Cells(i, 2) & "_" & .Cells(i, 4)) = D(.Cells(i, 2) & "_" & .Cells(i, 4)) + .Cells(i, 7).Value
    Next i
End With
With Sheets("Feuil2")
    .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp).Offset(1, Col - 1)).ClearContents
    .Cells(2, 1).Resize(UBound(TabReport, 2), Col) = Application.Transpose(TabReport)
    .Cells(2, 3).Resize(D.Count, 1) = Application.Transpose(D.Items)
End With
End Sub
Cordialement
 

Pièces jointes

Re : cumuler les doublons dans excel

Re
effectivement une foie la ligne commenté ça marche
Non, non, ça na venait pas de ça 😱.
J'avais oublié un .Value 😱
Je met le code complet, sans les "trucs" qui ne servent à rien et qui prend en compte les 6 colonnes.
VB:
Sub Tri3()
Dim D As Object, i&, J&, Col&, TabReport()
Set D = CreateObject("Scripting.Dictionary")
Col = 6 'nombre de colonne dans le tableau final
With Sheets("Feuil1")
    For i = 8 To .Cells(Rows.Count, 2).End(xlUp).Row
        If Not D.Exists(.Cells(i, 2).Value) Then
            J = J + 1
            ReDim Preserve TabReport(1 To Col, 1 To J)
            TabReport(1, J) = .Cells(i, 2)
            TabReport(2, J) = .Cells(i, 4)
            TabReport(4, J) = .Cells(i, 8)
            TabReport(5, J) = .Cells(i, 9)
            TabReport(6, J) = .Cells(i, 10)
        End If
        D(.Cells(i, 2).Value) = D(.Cells(i, 2).Value) + .Cells(i, 7).Value
    Next i
End With
With Sheets("Feuil3")
    .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp).Offset(1, Col - 1)).ClearContents
    .Cells(2, 1).Resize(UBound(TabReport, 2), Col) = Application.Transpose(TabReport)
    .Cells(2, 3).Resize(D.Count, 1) = Application.Transpose(D.Items)
End With
End Sub
Cordialement
 
Re : cumuler les doublons dans excel

super que dire de plus super
et encore merci pour le temps passé sur mon problème cela vas vraiment me simplifier la vie
bonne journée et bon week end
au besoin
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour