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+
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+