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…
ç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 !
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