Addition de valeur si plusieurs conditions sont réunies

Bonjour je me permets de relancer le sujet car je n'ai toujours pas trouvé de solution à mon problème.

Je cherche à pouvoir additionner les valeurs d'une colonne quand plusieurs conditions sont réunis:

Ci-joint un exemple des données que j'i à traiter (le vrai document est composé de plus de 30 000 lignes et 150 colonnes)

Dans mon exemple il faudrait que je puisse additionner les durées quand la date de fin et la date de début se suivent (date de début = date de fin) mais cela uniquement quand il s'agit de la même personne sur le même lieu.

Je vous remercie par avance de l'aide que vous pourrez m'apporter ...

Salut MENCYR,

comme je comprends l'affaire, dans ton fichier-exemple, seules les durées de ID 1002 doivent être additionnées... mais comment faut-il afficher les résultats et faut-il "fusionner" en une ligne les éventuelles lignes qui correspondent à la recherche ?

Autre point : pour moi, du 1 au 6, il y a 6 jours et pas 5!

Une illustration du résultat souhaité serait la bienvenue!

A+

Salut

un double-clic sur 'BDD' démarre la macro, résultat en 'Extract'.

Macro valable pour ton fichier-exemple !!

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim tTab, lgRow&
'
Cancel = True
Range("A1:G9").Sort key1:=Range("A2"), order1:=xlAscending, key2:=Range("D2"), order2:=xlAscending, key3:=Range("E2"), order3:=xlAscending, Orientation:=xlTopToBottom, Header:=xlYes
tTab = Range("A1:H10").Value
lgRow = 2
For x = 3 To UBound(tTab, 1)
    If tTab(x, 1) <> tTab(x - 1, 1) Or tTab(x, 4) <> tTab(x - 1, 4) Or tTab(x, 5) <> tTab(x - 1, 6) Then
        For y = lgRow To x - 1
            tTab(lgRow, 8) = CInt(tTab(lgRow, 8)) + CInt(tTab(y, 7))
        Next
        lgRow = x
    End If
Next
With Worksheets("Extract")
    .Cells.Delete
    .Range("A1").Resize(UBound(tTab, 1), UBound(tTab, 2)).Value = tTab
    .Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous
    .Range("A1").Resize(1, 8).Interior.ColorIndex = 15
    .Range("H1").Value = "Synthèse"
    .Columns.AutoFit
    .Activate
End With
'
End Sub

A+

2mencyr.xlsm (19.24 Ko)

Salut MENCYR,

comme je comprends l'affaire, dans ton fichier-exemple, seules les durées de ID 1002 doivent être additionnées... mais comment faut-il afficher les résultats et faut-il "fusionner" en une ligne les éventuelles lignes qui correspondent à la recherche ?

Autre point : pour moi, du 1 au 6, il y a 6 jours et pas 5!

Une illustration du résultat souhaité serait la bienvenue!

A+

Bonjour,

Oui c'est effectivement ce que je souhaiterais faire ^^

Au niveau du format je souhaiterais qu'il soit exploitable en TCD ou même uniquement par un filtre donc remplacer les lignes additionnées par une ligne "résultat" ?

Bien vu dans mon exemple je parle de jours (dans mon dossier réel je traite le nombre de nuitées d'où mon erreur )

Salut

un double-clic sur 'BDD' démarre la macro, résultat en 'Extract'.

Macro valable pour ton fichier-exemple !!

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim tTab, lgRow&
'
Cancel = True
Range("A1:G9").Sort key1:=Range("A2"), order1:=xlAscending, key2:=Range("D2"), order2:=xlAscending, key3:=Range("E2"), order3:=xlAscending, Orientation:=xlTopToBottom, Header:=xlYes
tTab = Range("A1:H10").Value
lgRow = 2
For x = 3 To UBound(tTab, 1)
    If tTab(x, 1) <> tTab(x - 1, 1) Or tTab(x, 4) <> tTab(x - 1, 4) Or tTab(x, 5) <> tTab(x - 1, 6) Then
        For y = lgRow To x - 1
            tTab(lgRow, 8) = CInt(tTab(lgRow, 8)) + CInt(tTab(y, 7))
        Next
        lgRow = x
    End If
Next
With Worksheets("Extract")
    .Cells.Delete
    .Range("A1").Resize(UBound(tTab, 1), UBound(tTab, 2)).Value = tTab
    .Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous
    .Range("A1").Resize(1, 8).Interior.ColorIndex = 15
    .Range("H1").Value = "Synthèse"
    .Columns.AutoFit
    .Activate
End With
'
End Sub

A+

Aouch j'aurais du préciser que je suis néophyte sur excel ^^ je ne sais donc absolument pas comment exploiter ta solution xD cependant je te remercies de te pencher sur mon problème et je te remercierai d'avantage encore si tu pouvais m'aiguiller

Salut MENCYR,

remplacer les lignes additionnées par une ligne "résultat"

Tu veux dire combiner sur une ligne l'addition des nuitées et l'amalgame des dates de début et de fin ?

Pour ce qui est de l'exploitation en TCD, faudra espérer le passage d'un expert dans ce genre d'animal que je n'ai pas encore apprivoisé!

A+

Rechercher des sujets similaires à "addition valeur conditions reunies"