Macro qui calcul une somm en fction de 3 crit

el-doyon Messages postés 43 Statut Membre -  
el-doyon Messages postés 43 Statut Membre -
Bonjour, je suis stagiaire dans une boite et mon embauche dépend de ce tableau, HELP ! Je ne connais pas les macros et mon responsable veut absolument une macro ici.
Je vous explique mon problème : J'ai un fichier ci-joint avec deux onglets, base et report.
Dans la base, la colonne D « ligne IM » regroupe des codes identiques sur plusieurs lignes pas forcément contigues.
Il faudrait que lorsque je tombe sur le même code avec dans la colonne E « projet » le même projet et dans la colonne G « site » le même site que j'obtienne dans l'onglet « report » la somme de toutes les lignes IM, avec un projet et un site identique dans les colonnes nommées « 1 » à « 5 ».
Je m'en sors avec des somme.si mais mon responsable veut une macro qui ferait le report via un bouton ou sans.
Pouvez vous m'aider,
Merci d'avance.

https://www.cjoint.com/?flkANMl8zV

A voir également:

2 réponses

rachid_04 Messages postés 213 Statut Membre 32
 
J aimerais bien tenter avec ce problem ..si tu peux m expliquer un ti peu plus ... et sans stress merci
1
el-doyon Messages postés 43 Statut Membre
 
Ok, je respire...alors pour être plus clair car effectivement je suis dans le stress.
dans l'onglet report il faudrait que des les colonnes 1 à 5 j'obtienne le total pour chaque ligne IM, projet et site identiques. Par exemple :
Dans l'onglet base, dans les colonnes D, E et G, j'ai respectivement 4 fois l'information
SH-GIS1-00 Rénovation Céré La Ronde avec des chiffres associés en colonnes 1 à 5.
Il faudrait donc dans l'onglet report que je ne retrouve qu'une ligne de SH-GIS1-00 Rénovation Céré La Ronde avec la somme des chiffres en colonnes 1 à 5.
j'espère avoir été plus clair, merci pour l'aide.
0
el-doyon Messages postés 43 Statut Membre
 
Désolé, c'est encore moi avec mon pb rachid_04 mais si tu as un peu de temps, ça me sauverait.
Le pb c'est qu'une fois le report fait, je dois faire le sous total ds les colonnes 1 à 5 des lignes IM identiques (donc un seul critère cette fois ci). par ex apres le report il y a 3 lignes IM de SH-GIS1-00 qui ne sont pas contigues, mais il faudrait que je puisse faire le sous total juste à la ligne en dessous.
Comme il y à déjà la macro je ne peux pas faire de filtre élaboré alors je voulais savoir si c'était possibe d'intégrer ce filtre dans la macro et si possible le sous total aussi mais avec que l'intégration du filtre dans la macro je pourrais m'en sortir. Jespère que mon énoncé est assez clair. Que tu puisses où pas, merci encore rachid_04 !
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 770
 
Salut,
Ne sachant pas à qui tu t'adresses, je t'ai bricolé vite fait une macro pour les sous totaux.
Je t'ai aussi créé un nouveau bouton, mais la macro peux être lancée en même temps que le report.
voici le classeur complet
Et pour celles et ceux, passant par ici, qui seraient juste intéressés par le code "sous totaux" :
Sub sous_toto()
Dim derlign, i, j, k As Integer
With Sheets("report")
derlign = .Range("D65536").End(xlUp).Row
.Range("D2:K" & derlign).Sort Key1:=.Range("D3")
For i = derlign To 3 Step -1
If .Cells(i, 4) <> "" Then
j = i
Do While .Cells(j, 4).Value = .Cells(j - 1, 4).Value
j = j - 1
Loop
.Cells(i + 1, 1).EntireRow.Insert
.Range(.Cells(i + 1, 7), .Cells(i + 1, 11)).Font.Bold = True
For k = i To j Step -1
.Cells(i + 1, 7).Value = .Cells(i + 1, 7).Value + .Cells(k, 7).Value
.Cells(i + 1, 8).Value = .Cells(i + 1, 8).Value + .Cells(k, 8).Value
.Cells(i + 1, 9).Value = .Cells(i + 1, 9).Value + .Cells(k, 9).Value
.Cells(i + 1, 10).Value = .Cells(i + 1, 10).Value + .Cells(k, 10).Value
.Cells(i + 1, 11).Value = .Cells(i + 1, 11).Value + .Cells(k, 11).Value
Next k
End If
i = i - (i - j)
Next i
End With
End Sub
0
el-doyon Messages postés 43 Statut Membre
 
Oups, en fait je m'adressais à toi, Pijaku donc, je me suis trompé.
ça fonctionne correctement sauf quand je veux changer un chiffre dans la base, si je refais sous total, j'ai des chiffres qui se répercutent en fin de tableau et qui ne partent pas même avec le RAZ report. Vois tu une solution ?
Sinon au niveau du résultat c'est ce que je souhaite avoir au final mais avec le sous total au dessus et non au dessous des lignes IM identiques comme je l'avais écrit précédemment. Désolé et merci pr ton aide
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 770
 
mais avec le sous total au dessus et non au dessous des lignes IM identiques comme je l'avais écrit précédemment
Ah bon?
j'ai cru que :
mais il faudrait que je puisse faire le sous total juste à la ligne en dessous.
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 770
 
Salut tout le monde,
Voici un exemple.
Je t'ai créé une feuille "report1" pour que tu puisses tester.
Pour lancer la procédure, ALT+F8 et exécuter "test".
En cas de souci, ou si tu veux que j'annote la macro "pas à pas" pour te l'expliquer, n'hésite pas à revenir ici.
1
el-doyon Messages postés 43 Statut Membre
 
Wouah ! Merci, c'est exactement ça que je voulais comme résultat. Il faudrait juste que la macro se déclenche via un bouton et via un autre bouton que je puisse faire un reset. Par contre j'accepte volontier si tu as le temps de m'expliquer ta macro, je ne comprends pas commen ça fait sommes et pourtant elles sont belles et bien faites. En tout cas même si tu n'as pas le temps pr la suite milles merci pour ton temps et surtout pr la solution à mon problème.
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 770
 
Voilà le tableau!!! se déclenche avec 2 boutons.
c'est détaillé. Pour accéder au code détaillé taper ALT+F11
0
el-doyon Messages postés 43 Statut Membre
 
C'est prodigieux, tes explications sont claires et le résultat parfait. Milles merci encore !
0
el-doyon Messages postés 43 Statut Membre
 
Bonjour pijaku,
désolé de t'embêter encore une fois avec ce probleme mais je n'y arrive pas. Pourtant je voudrais simplifier à savoir que le bouton report cette fois ci ne ferait la somme des colonnes 1 à 5 uniquement à l'aide du critere Ligne IM, si identique, faire la somme ds colonne 1 à 5.
je ne vois pas ce que je dois changer dans la formule, peux tu m'aider encore cette fois ?

Sub test()
Dim cherche As Range
Dim i, j, derlig As Integer
Dim concat As String
With Sheets("report1")
If .Range("C2") = "" Then .Range("C2") = "'"
derlig = .Range("D65536").End(xlUp).Row
.Range("C2:K" & derlig).ClearContents
End With
With Sheets("base")
derlig = .Range("D65536").End(xlUp).Row
End With
For i = 2 To derlig
With Sheets("base")
concat = .Cells(i, 4) & .Cells(i, 5) & .Cells(i, 7)
End With
With Sheets("report1")
Set cherche = .Columns(3).Cells.Find(concat)
If cherche Is Nothing Then
j = .Range("C65536").End(xlUp).Offset(1, 0).Row
.Cells(j, 3) = concat
.Cells(j, 4) = Sheets("base").Cells(i, 4)
.Cells(j, 5) = Sheets("base").Cells(i, 5)
.Cells(j, 6) = Sheets("base").Cells(i, 7)
.Cells(j, 7) = CLng(Sheets("base").Cells(i, 10))
.Cells(j, 8) = CLng(Sheets("base").Cells(i, 11))
.Cells(j, 9) = CLng(Sheets("base").Cells(i, 12))
.Cells(j, 10) = CLng(Sheets("base").Cells(i, 13))
.Cells(j, 11) = CLng(Sheets("base").Cells(i, 14))
Else
j = .Cells.Find(concat).Row
.Cells(j, 7) = CLng(.Cells(j, 7)) + CLng(Sheets("base").Cells(i, 10))
.Cells(j, 8) = CLng(.Cells(j, 8)) + CLng(Sheets("base").Cells(i, 11))
.Cells(j, 9) = CLng(.Cells(j, 9)) + CLng(Sheets("base").Cells(i, 12))
.Cells(j, 10) = CLng(.Cells(j, 10)) + CLng(Sheets("base").Cells(i, 13))
.Cells(j, 11) = CLng(.Cells(j, 11)) + CLng(Sheets("base").Cells(i, 14))
End If
End With
Next i
Sheets("report1").Columns(3).ClearContents
Set cherche = Nothing
End Sub
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 770
 
Salut,
Voici, nouveau bouton "REPORT IM" résultats en feuille "report1".
Par contre, la macro n'était pas nécessaire, penche toi sur les tableaux croisés dynamiques...
0