HELP- Besoin macro qui calcul une somm en fction de 3 critères

el-dyon

XLDnaute Nouveau
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.

http://cjoint.com/?flkANMl8zV

Pouvez vous m’aider,
Merci d’avance.
 

Davidc57

XLDnaute Occasionnel
Re : HELP- Besoin macro qui calcul une somm en fction de 3 critères

Bonjour,

Oui bien sûr un TCD fait largement l'affaire. Néanmoins on cherche peut-être à tester tes compétences. Peut-être ce code t'aidera, il calcul pour la première date de la feuille report.

Code:
Sub test()
For i = 3 To Sheets("report").Range("D65536").End(xlUp).Row
    LigneIM = Sheets("report").Range("D" & i)
    projet = Sheets("report").Range("E" & i)
    site = Sheets("report").Range("F" & i)
    compteur = 0
    For j = 2 To Sheets("base").Range("D65536").End(xlUp).Row
        If LigneIM = Sheets("base").Range("D" & j) And projet = Sheets("base").Range("E" & j) And site = Sheets("base").Range("G" & j) Then
            compteur = compteur + Sheets("base").Range("J" & j)
        End If
    Next j
    Sheets("report").Range("G" & i) = compteur ' Ecriture du résultat
Next i
End Sub

Mais afin de construire entièrement la feuille report en partant de zéro, je te propose ceci que je ne développerai que si ca t'intéresse :

1. Copie de la feuille "base" en une feuille appelée "report"
2. Tri de la feuille report selon les trois colonnes LigneIM, projet et site ...
3. Boucle de i = 3 à la fin ... ndl
SI les trois cases valent celles du dessus ALORS on additionne les valeurs de la ligne testée avec celles du dessus (référence), on supprime alors la ligne testée et on termine la boucle en réinitialisant les compteurs i = i-1 et ndl = ndl-1
SINON on a une nouvelle occurence, on ne delete pas la ligne on passe à la suivante sans toucher aux compteurs.

Avec une petite clause de sortie pour éviter une boucle infinie genre if i > ndl then exit ....

A+
David
 

Discussions similaires

Statistiques des forums

Discussions
312 111
Messages
2 085 395
Membres
102 882
dernier inscrit
Sultan94