Résumer plusieurs lignes en une seule

Bonjour à tous,

Je reviens vers vous aujourd'hui afin de vous demander une aide au sujet d'une macro que j'essaye de développer.

Le principe de ce que je recherche à faire est de d'importer des milliers de lignes, ne garder qu'une ligne par numéro de référence en faisant le total des prix et d'intégrer cela à une base de donnée dont toutes les lignes ont été soumises au même process.

L'intérêt est de ne pas s'encombrer de centaines de milliers de lignes qui peuvent d'ailleurs très vite rendre le fichier inexploitable.

Je vous mets ci joint une représentation de ce que j'attends comme résultat.

Cordialement.

11syntheseref.xlsx (26.93 Ko)

Salut Amayas,

un double-clic dans la feuille 'BDD' démarre la macro.

A tester en situation réelle...

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim tTab, lgPos&, lgPos1&, dbTot#, sItem$
'
Application.ScreenUpdating = False
'
iRow = Range("A" & Rows.Count).End(xlUp).Row
iCol = Cells(1, Columns.Count).End(xlToLeft).Column
Range("A1").Resize(iRow, iCol).Sort key1:=Range("A2"), order1:=xlAscending, Orientation:=xlTopToBottom, Header:=xlYes
tTab = Range("A1").Resize(iRow + 1, iCol).Value
'
lgPos = 3
lgPos1 = 2
sItem = tTab(2, 1)
Do
    If tTab(lgPos, 1) = sItem Then tTab(lgPos - 1, 1) = ""
    If tTab(lgPos, 1) <> sItem Then
        dbTot = 0
        For x = lgPos1 To lgPos - 1
            dbTot = dbTot + CDbl(tTab(x, UBound(tTab, 2)))
        Next
        tTab(lgPos - 1, UBound(tTab, 2)) = dbTot
        lgPos1 = lgPos
        sItem = tTab(lgPos, 1)
    End If
    lgPos = lgPos + 1
Loop Until lgPos > UBound(tTab, 1)
'
With Worksheets("Extract")
    .Range("A1").Resize(iRow, iCol).Value = tTab
    .Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete shift:=xlUp
    .Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous
    .Range("A1").Resize(1, iCol).Interior.ColorIndex = 15
    .Columns.AutoFit
    .Activate
End With
'
Application.ScreenUpdating = True
'
End Sub

A+

12amayas.xlsm (30.34 Ko)

Bonjour curulis57,

Je te remercie infiniment, ton code fonctionne à merveille !!!

Bonne journée et bonnes fêtes !!!

Bonjour,

Ton fichier était traité avec Power Query.

Quelle était la raison d'utiliser VBA ?

Cdlt.

Bonjour,

Ton fichier était traité avec Power Query.

Quelle était la raison d'utiliser VBA ?

Cdlt.

Bonjour Jean Eric ; Amayas ; Curulis je pense que le but final et de ne pas conserver l'onglet source.

"millier de lignes".

Sinon un Simple Tableau croisé faisait aussi la même chose

Re,

Bonjour Xmenpl,

Il suffisait alors de charger les données dans un classeur vierge avec PQ et de faire les mêmes opérations.

On ne touchait pas au classeur.

Cdlt.

Bonjour tout le monde,

Si je n'ai pas utilisé Power Query c'est tout d'abord parce que je n'y comprends rien du tout.

J'avais aussi commencé à développer une macro me permettant de faire un travail qui va au delà de la tache pour laquelle j'ai demandé de l'aide et mon intention première était d'insérer dans le travail global que j'avais entamé.

Bien à vous,

Rechercher des sujets similaires à "resumer lignes seule"