JC de Lorient
XLDnaute Impliqué
Bonjour le forum
j'ai cette procédure
Sub analyse_mensuelle()
Application.ScreenUpdating = False
Sheets("Gest Mens").Range("B6:H100").ClearContents
Dim agent, D As Range
Dim a, C, ADRES
For Each agent In Sheets("Données").Range("C2:C" & Sheets("Données").Range("C65536").End(xlUp).Row)
With Sheets("Base").Columns(6)
Set C = .Find(agent)
If Not C Is Nothing Then
ADRES = C.Address
Do
If Month(Sheets("Base").Range(C.Address).Offset(0, -1)) _
= Month(Sheets("Gest Mens").Range("G1")) Then
a = Sheets("Gest Mens").Range("B65536").End(xlUp).Row + 1
Sheets("Gest Mens").Range("B" & a) = agent
Sheets("Gest Mens").Range("C" & a).FormulaR1C1 = "=SUMPRODUCT((Nom_Agent=RC[-1])*(MONTH(Terme)=MONTH(R1C7)))"
Sheets("Gest Mens").Range("D" & a).FormulaR1C1 = "=SUMPRODUCT((Nom_Agent=RC[-2])*(MONTH(Terme)=MONTH(R1C7))*(((Rbst>0)+(Réinvest>0))>0))"
Sheets("Gest Mens").Range("E" & a).FormulaR1C1 = "=SUMPRODUCT((Nom_Agent=RC[-3])*(MONTH(Terme)=MONTH(R1C7))*(Montant))"
Sheets("Gest Mens").Range("F" & a).FormulaR1C1 = "=SUMPRODUCT((Nom_Agent=RC[-4])*(MONTH(Terme)=MONTH(R1C7))*(Réinvest))"
Sheets("Gest Mens").Range("G" & a).FormulaR1C1 = "=SUMPRODUCT((Nom_Agent=RC[-5])*(MONTH(Terme)=MONTH(R1C7))*(Rbst))"
Sheets("Gest Mens").Range("H" & a).FormulaR1C1 = "=RC[-2]/RC[-3]"
End If
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> ADRES
End If
End With
Next
Application.ScreenUpdating = True
End Sub
je fais une boucle sur des "agent"
Je souhaiterais que lorsque la condition en rouge est vérifiée que la boucle passe a l'agent suivant (en bleu dans le code) puisque j'ai besoin d'une seule concordence pour mes calculs de SOMMEPROD
je me perdes un peu avec les Find Do While etc etc
Si le code peut etre simplifié je suis preneur
merci a tous et toutes pour l'aide
bonne après midi
j'ai cette procédure
Sub analyse_mensuelle()
Application.ScreenUpdating = False
Sheets("Gest Mens").Range("B6:H100").ClearContents
Dim agent, D As Range
Dim a, C, ADRES
For Each agent In Sheets("Données").Range("C2:C" & Sheets("Données").Range("C65536").End(xlUp).Row)
With Sheets("Base").Columns(6)
Set C = .Find(agent)
If Not C Is Nothing Then
ADRES = C.Address
Do
If Month(Sheets("Base").Range(C.Address).Offset(0, -1)) _
= Month(Sheets("Gest Mens").Range("G1")) Then
a = Sheets("Gest Mens").Range("B65536").End(xlUp).Row + 1
Sheets("Gest Mens").Range("B" & a) = agent
Sheets("Gest Mens").Range("C" & a).FormulaR1C1 = "=SUMPRODUCT((Nom_Agent=RC[-1])*(MONTH(Terme)=MONTH(R1C7)))"
Sheets("Gest Mens").Range("D" & a).FormulaR1C1 = "=SUMPRODUCT((Nom_Agent=RC[-2])*(MONTH(Terme)=MONTH(R1C7))*(((Rbst>0)+(Réinvest>0))>0))"
Sheets("Gest Mens").Range("E" & a).FormulaR1C1 = "=SUMPRODUCT((Nom_Agent=RC[-3])*(MONTH(Terme)=MONTH(R1C7))*(Montant))"
Sheets("Gest Mens").Range("F" & a).FormulaR1C1 = "=SUMPRODUCT((Nom_Agent=RC[-4])*(MONTH(Terme)=MONTH(R1C7))*(Réinvest))"
Sheets("Gest Mens").Range("G" & a).FormulaR1C1 = "=SUMPRODUCT((Nom_Agent=RC[-5])*(MONTH(Terme)=MONTH(R1C7))*(Rbst))"
Sheets("Gest Mens").Range("H" & a).FormulaR1C1 = "=RC[-2]/RC[-3]"
End If
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> ADRES
End If
End With
Next
Application.ScreenUpdating = True
End Sub
je fais une boucle sur des "agent"
Je souhaiterais que lorsque la condition en rouge est vérifiée que la boucle passe a l'agent suivant (en bleu dans le code) puisque j'ai besoin d'une seule concordence pour mes calculs de SOMMEPROD
je me perdes un peu avec les Find Do While etc etc
Si le code peut etre simplifié je suis preneur
merci a tous et toutes pour l'aide
bonne après midi