cibleo
XLDnaute Impliqué
Bonsoir le forum,
La formule ci-dessous me fait la somme des montants de février situées en colonne E, les dates se trouvant en colonne A.
En faisant un essai avec l'enregistreur de macro, j'obtiens ceci :
Comme vous le voyez, j'aimerais y rajouter 12 lignes d'instructions pour me faire un total pour chaque mois de l'année.
J'aimerais donc trouver la bonne formule pour ce calcul en me basant sur celle surlignée en rouge et d'autre part restructurer mon code en modifiant les parties en bleu si j'ai bien compris.
Si quelqu'un pouvait me trouver la solution pour 1 mois donné dans la formule et dans la structure de mon code, cela m'arrangerait, après je pense pouvoir me débrouiller pour le reste.
Le code initial est dans le fichier joint dans le formulaire "Rechercher".
Celui présenté ci-dessus est une version légèrement modifié mais la structure est identique.
Merci de votre aide Cibleo
La formule ci-dessous me fait la somme des montants de février situées en colonne E, les dates se trouvant en colonne A.
=SOMMEPROD((MOIS($A$2:$A$500)=2)*$E$2:$E$500)
En faisant un essai avec l'enregistreur de macro, j'obtiens ceci :
Dans le code ci-dessous, l'instruction en rouge me fait la somme de tous mes montants de l'année sans discerner les mois. Cela se fait de façon dynamique, ce code est une macro de Recherche. 2 totaux en colonne 4 et 5.ActiveCell.FormulaR1C1 = "=SUMPRODUCT((MONTH(R2C1:R500C1)=2)*R2C5:R500C5)"
Comme vous le voyez, j'aimerais y rajouter 12 lignes d'instructions pour me faire un total pour chaque mois de l'année.
Code:
Private Sub CommandButton1_Click()
Dim VSearch As String
ShtR.[F4].Value = CmbChauffeurs.Value
If CmbChauffeurs.Value = "" Then Exit Sub
Application.ScreenUpdating = False
x = 1
VSearch = Me.CmbChauffeurs.Value
For Each Ws In ThisWorkbook.Worksheets
With Ws
DerLiS = .Range("C65536").End(xlUp).Row
If Left(.Name, 6) = "Caisse" Then
i = Len(CmbChauffeurs.Value)
For Each Cellule In .Range("C7:C" & DerLiS)
If InStr(1, Cellule, VSearch, vbTextCompare) > 0 Then
trouve = True
DerLiR = ShtR.Range("A65536").End(xlUp).Row + 1
For col = 1 To 5
ShtR.Cells(DerLiR, col).Value = Ws.Cells(Cellule.Row, col).Value
Next
[COLOR=blue]Total(1) = Total(1) + ShtR.Cells(DerLiR, [B]4[/B]).Value[/COLOR]
[COLOR=blue]Total(2) = Total(2) + ShtR.Cells(DerLiR, [B]5[/B]).Value[/COLOR]
x = x + 1
End If
Next Cellule
End If
End With
Next Ws
For col = 4 To 5
[COLOR=red]ShtR.Cells(DerLiR + 2, col).FormulaLocal = "=SOMME(" & ShtR.Cells(7, col).Address & ":" & ShtR.Cells(DerLiR, col).Address & ")"[/COLOR]
Next
[COLOR=blue]With ShtR.Cells(DerLiR + 2, 2)[/COLOR]
[COLOR=blue].Value = "Total "[/COLOR]
.HorizontalAlignment = xlRight
.VerticalAlignment = xlCenter
End With
If trouve = False Then MsgBox "Pas de trace !"
Unload Me
Application.ScreenUpdating = True
End Sub
J'aimerais donc trouver la bonne formule pour ce calcul en me basant sur celle surlignée en rouge et d'autre part restructurer mon code en modifiant les parties en bleu si j'ai bien compris.
Si quelqu'un pouvait me trouver la solution pour 1 mois donné dans la formule et dans la structure de mon code, cela m'arrangerait, après je pense pouvoir me débrouiller pour le reste.
Le code initial est dans le fichier joint dans le formulaire "Rechercher".
Celui présenté ci-dessus est une version légèrement modifié mais la structure est identique.
Merci de votre aide Cibleo