Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

  • Initiateur de la discussion Initiateur de la discussion el-dyon
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

E

el-dyon

Guest
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.
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

I
Réponses
5
Affichages
1 K
IlyesT36
I
Y
Réponses
11
Affichages
3 K
Y
J
Réponses
4
Affichages
813
JTeks987
J
P
Réponses
0
Affichages
1 K
P
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…