Boucle de cumul sous conditions

Bonjour à tous :slight_smile:

J’ai besoin d’aide svp, dans le fichier exemple joint, je faire une lecture VBA et je n’y arrive pas…
Pour chaque CODE ESI je dois faire un cumul des valeurs de TEMOIN EDL
sous condition que TYPE OE = PLAF ou PLPC
je dois faire un cumul par CODE PIECE
et un cumul général par CODE ESI

J’ai essayé une boucle de lecture, et des if pour tester le code pièce, mais ça ne fonctionne pas. Il faut peut-être enchaîner 2 for each sur le CODE ESI puis sur le code pièce, mais je suis largué sur ce type de script…

HELP PLEASE :slight_smile:
VBA Boucle avec Cumul.xlsm (566,5 Ko)

Bonjour,
Je sais pas si j’ai bien compris :

=SOMMEPROD((($C$2:$C$5662="PLAF")+($C$2:$C$5662="PLPC"))*($D$2:$D$5662))

Cordialement
Will-Fread

Non tu n’as pas bien compris :wink:
Il me faut faire un cumul par ESI, puis par pièce, des quantités en colonne D, si la colonne C est égale à PLAF ou PLPC

Ah oui, j’ai pas vu qu’il y avait plusieurs ESI.

Avez vous la version 365 ?

Oui je suis sous M365

Re,
Essayez avec ces fonctions,
Cumul (ESI) :
VBA Boucle avec Cumul.xlsx (182,6 Ko)

Cordialement

ça ne fonctionne pas ça ne ramène pas les PLPC
De toute façon je veux le faire en VBA car je vais écrire les résultats dans un autre fichier, et de façon dissociée, les cumul par ESI dans un onglet, les cumuls par ESI-Code Pièce dans un autre onglet. J’ai modifié mon fichier, tu as dû ouvrir la première version que j’avais mise, qui ne comportait pas de macro, désolé…
Je fais des recherches sur les boucles for each en cascade, mon script avec 2 boucles for next renvoie une erreur dépassement de capacité… et m’écrit des lignes qu’il ne devrait pas… plein de bugs quoi ! :wink:

Eh bien, on n’a pas de PLPC dans votre Type OE.
On va tenter de l’faire avec des formules et si on n’a pas d’ solution, on passe sur VBA.

Mea culpa c’est les PLPLC

Une petite mise à jour:
VBA Boucle avec Cumul.xlsx (182,7 Ko)
Cordialement

Bonjour à tous,

Une proposition avec Power query.
Cordialement.
VBA Boucle avec Cumul.xlsx (192,4 Ko)

Re,
Et voici votre boucle VBA que vous attentez tant:

Sub Cumul()
Columns("P:Q").Clear
Dim a As Integer, c As Integer, b As Integer
Range(Range("A2"), Range("A2").End(xlDown)).Copy
a = Range(Range("A2"), Range("A2").End(xlDown)).Count - 1
Range("P2").PasteSpecial (xlPasteAll)
Selection.RemoveDuplicates Columns:=1, Header:=xlNo
Range("A2").Select
c = Range("P2").CurrentRegion.Count
Application.Speech.Speak "Veuillez patienter pendant l'exécution de votre macro Monsieur Patrick !", True
Application.ScreenUpdating = False
For b = 0 To c
For d = 0 To a
If ActiveCell.Offset(d, 0) = ActiveCell.Offset(b, 15) And ActiveCell.Offset(d, 2) = "PLAF" Then
ActiveCell.Offset(b, 16) = ActiveCell.Offset(b, 16) + ActiveCell.Offset(d, 3)
ElseIf ActiveCell.Offset(d, 0) = ActiveCell.Offset(b, 15) And ActiveCell.Offset(d, 2) = "PLPLC" Then
ActiveCell.Offset(b, 16) = ActiveCell.Offset(b, 16) + ActiveCell.Offset(d, 3)
End If
Next
Next
Application.ScreenUpdating = True
Application.Speech.Speak "Félicitation, la macro a été exécutée avec succès !", True

'Will-Fread
End Sub

Le résultat sera mis dans la colonne P

VBA Boucle avec Cumul.xlsm (192,8 Ko)

Cordialement
Will-Fread :laughing:

1 « J'aime »

Trop fort ! Merci Will :slight_smile:

1 « J'aime »

Ce fut un plaisir
Will-Fread

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.