OVH Cloud OVH Cloud

Aide macro somme

3 réponses
Avatar
Michel
Voici ma commande pour faire la somme de certaines cellules selon le format
d'autres cellules.

G un tableau croisé dynamique qui me donne ceci:
Ressources Janvier
BEN J 0
BEN J 15
Total BEN J 15

BFX 20
BFX 12
Total BFX 32

DB 19
1
Total DB 20

Et ce sur plusieurs colonnes et lignes. Les lignes total sont grisées avec
une macro.
Maintenant, ce que je souhaite faire, c'est entrer la formule de calcul de
chaque total, ainsi si je modifie ce tableau, et bien le total est
automatiquement calculé sans avoir à le faire à la main.

Voici ma macro mais elle ne marche pas.

'Mise en gris des lignes totaux
R = Sheets("Plan de charge ASC").Columns("A:A").Find(What:="*Total*",
LookAt:=xlWhole).Row
T = Sheets("Plan de charge ASC").Columns("B:B").Find(What:="*Total*",
LookAt:=xlWhole).Row
Y = Sheets("Plan de charge ASC").Rows("2:2").Find(What:="Total",
LookAt:=xlWhole).Column
Dim i0 As Integer
i0 = 3
For i = 3 To R
If Range("B" & i).Value Like "*Total*" Then
Range(("B" & i), Cells(i, Y)).Interior.Color = 12040119
End If
If Range("A" & i).Value Like "*Total*" Then
Range(("A" & i), Cells(i, Y)).Interior.Color = 12040119
End If
For j = 3 To T
If Range(("E" & j), Cells(j, Y)).Interior.Color = 12040119 Then
'Cells(j, 5).Value = "WorksheetFunction.Sum(Range(Cells(i0, 5), Cells(j,
5)))"
'Range("E" & j).Formula = "=sum(cells(i0,2).address:cells(j-1,2).address)"
Range("E" & j).Formula = "=sum(cells(i0,2).address:cells(j-1,2).address)"
'Range("E" & j).Value = "3"
'Cells(j, 5).Value = Application.Sum(Range(Cells(i0, 5), Cells(j - 1, 5)))
i0 = j + 1
End If
Next
Next
End Sub

Merci pour votre coup de main.

3 réponses

Avatar
isabelle
bonjour Michel,

il doit y avoir un erreur sur la commande :
Range(Cells(i0, 5), Cells(j - 1, 5))
variable i0 ??

isabelle


Voici ma commande pour faire la somme de certaines cellules selon le format
d'autres cellules.

G un tableau croisé dynamique qui me donne ceci:
Ressources Janvier
BEN J 0
BEN J 15
Total BEN J 15

BFX 20
BFX 12
Total BFX 32

DB 19
1
Total DB 20

Et ce sur plusieurs colonnes et lignes. Les lignes total sont grisées avec
une macro.
Maintenant, ce que je souhaite faire, c'est entrer la formule de calcul de
chaque total, ainsi si je modifie ce tableau, et bien le total est
automatiquement calculé sans avoir à le faire à la main.

Voici ma macro mais elle ne marche pas.

'Mise en gris des lignes totaux
R = Sheets("Plan de charge ASC").Columns("A:A").Find(What:="*Total*",
LookAt:=xlWhole).Row
T = Sheets("Plan de charge ASC").Columns("B:B").Find(What:="*Total*",
LookAt:=xlWhole).Row
Y = Sheets("Plan de charge ASC").Rows("2:2").Find(What:="Total",
LookAt:=xlWhole).Column
Dim i0 As Integer
i0 = 3
For i = 3 To R
If Range("B" & i).Value Like "*Total*" Then
Range(("B" & i), Cells(i, Y)).Interior.Color = 12040119
End If
If Range("A" & i).Value Like "*Total*" Then
Range(("A" & i), Cells(i, Y)).Interior.Color = 12040119
End If
For j = 3 To T
If Range(("E" & j), Cells(j, Y)).Interior.Color = 12040119 Then
'Cells(j, 5).Value = "WorksheetFunction.Sum(Range(Cells(i0, 5), Cells(j,
5)))"
'Range("E" & j).Formula = "=sum(cells(i0,2).address:cells(j-1,2).address)"
Range("E" & j).Formula = "=sum(cells(i0,2).address:cells(j-1,2).address)"
'Range("E" & j).Value = "3"
'Cells(j, 5).Value = Application.Sum(Range(Cells(i0, 5), Cells(j - 1, 5)))
i0 = j + 1
End If
Next
Next
End Sub

Merci pour votre coup de main.


Avatar
Michel
Bonjour Isabelle

Voici le code un peu modifié mais toujours des erreurs:
Un petit coup de main n'est pas de refus parce que là je craque :)
Sub total()
'On Error Resume Next
'Mise en gris des lignes totaux
R = Sheets("Plan de charge ASC").Columns("A:A").Find(What:="*Total*",
LookAt:=xlWhole).Row
T = Sheets("Plan de charge ASC").Columns("B:B").Find(What:="*Total*",
LookAt:=xlWhole).Row
Y = Sheets("Plan de charge ASC").Rows("2:2").Find(What:="Total",
LookAt:=xlWhole).Column
z = Range("B65536").End(xlUp).Row
For i = 3 To R
If Range("B" & i).Value Like "*Total*" Then
Range(("B" & i), Cells(i, Y)).Interior.Color = 12040119
End If
If Range("A" & i).Value Like "*Total*" Then
Range(("A" & i), Cells(i, Y)).Interior.Color = 12040119
End If
Next
Dim i0 As Integer
Dim k As Integer
i0 = 3
For j = i0 To R
For k = 5 To 16
'If Range("B" & j).Value Like "*Total*" Then
T = Sheets("Plan de charge ASC").Range(Cells(j, 2), Cells(R - 1,
2)).Find(What:="*Total*", LookAt:=xlWhole).Row
Set Rg = ActiveSheet.Range(Cells(i0, k), Cells(T - 1, k))
ActiveSheet.Cells(T, k).Formula = "=SUM(" & Rg.AddressLocal & " )"
'End If
Next
i0 = T + 1
Next

End Sub




bonjour Michel,

il doit y avoir un erreur sur la commande :
Range(Cells(i0, 5), Cells(j - 1, 5))
variable i0 ??

isabelle


Voici ma commande pour faire la somme de certaines cellules selon le format
d'autres cellules.

G un tableau croisé dynamique qui me donne ceci:
Ressources Janvier
BEN J 0
BEN J 15
Total BEN J 15

BFX 20
BFX 12
Total BFX 32

DB 19
1
Total DB 20

Et ce sur plusieurs colonnes et lignes. Les lignes total sont grisées avec
une macro.
Maintenant, ce que je souhaite faire, c'est entrer la formule de calcul de
chaque total, ainsi si je modifie ce tableau, et bien le total est
automatiquement calculé sans avoir à le faire à la main.

Voici ma macro mais elle ne marche pas.

'Mise en gris des lignes totaux
R = Sheets("Plan de charge ASC").Columns("A:A").Find(What:="*Total*",
LookAt:=xlWhole).Row
T = Sheets("Plan de charge ASC").Columns("B:B").Find(What:="*Total*",
LookAt:=xlWhole).Row
Y = Sheets("Plan de charge ASC").Rows("2:2").Find(What:="Total",
LookAt:=xlWhole).Column
Dim i0 As Integer
i0 = 3
For i = 3 To R
If Range("B" & i).Value Like "*Total*" Then
Range(("B" & i), Cells(i, Y)).Interior.Color = 12040119
End If
If Range("A" & i).Value Like "*Total*" Then
Range(("A" & i), Cells(i, Y)).Interior.Color = 12040119
End If
For j = 3 To T
If Range(("E" & j), Cells(j, Y)).Interior.Color = 12040119 Then
'Cells(j, 5).Value = "WorksheetFunction.Sum(Range(Cells(i0, 5), Cells(j,
5)))"
'Range("E" & j).Formula = "=sum(cells(i0,2).address:cells(j-1,2).address)"
Range("E" & j).Formula = "=sum(cells(i0,2).address:cells(j-1,2).address)"
'Range("E" & j).Value = "3"
'Cells(j, 5).Value = Application.Sum(Range(Cells(i0, 5), Cells(j - 1, 5)))
i0 = j + 1
End If
Next
Next
End Sub

Merci pour votre coup de main.





Avatar
Michel
Problème résolu, plus que le total des totaux à faire


Voici ma commande pour faire la somme de certaines cellules selon le format
d'autres cellules.

G un tableau croisé dynamique qui me donne ceci:
Ressources Janvier
BEN J 0
BEN J 15
Total BEN J 15

BFX 20
BFX 12
Total BFX 32

DB 19
1
Total DB 20

Et ce sur plusieurs colonnes et lignes. Les lignes total sont grisées avec
une macro.
Maintenant, ce que je souhaite faire, c'est entrer la formule de calcul de
chaque total, ainsi si je modifie ce tableau, et bien le total est
automatiquement calculé sans avoir à le faire à la main.

Voici ma macro mais elle ne marche pas.

'Mise en gris des lignes totaux
R = Sheets("Plan de charge ASC").Columns("A:A").Find(What:="*Total*",
LookAt:=xlWhole).Row
T = Sheets("Plan de charge ASC").Columns("B:B").Find(What:="*Total*",
LookAt:=xlWhole).Row
Y = Sheets("Plan de charge ASC").Rows("2:2").Find(What:="Total",
LookAt:=xlWhole).Column
Dim i0 As Integer
i0 = 3
For i = 3 To R
If Range("B" & i).Value Like "*Total*" Then
Range(("B" & i), Cells(i, Y)).Interior.Color = 12040119
End If
If Range("A" & i).Value Like "*Total*" Then
Range(("A" & i), Cells(i, Y)).Interior.Color = 12040119
End If
For j = 3 To T
If Range(("E" & j), Cells(j, Y)).Interior.Color = 12040119 Then
'Cells(j, 5).Value = "WorksheetFunction.Sum(Range(Cells(i0, 5), Cells(j,
5)))"
'Range("E" & j).Formula = "=sum(cells(i0,2).address:cells(j-1,2).address)"
Range("E" & j).Formula = "=sum(cells(i0,2).address:cells(j-1,2).address)"
'Range("E" & j).Value = "3"
'Cells(j, 5).Value = Application.Sum(Range(Cells(i0, 5), Cells(j - 1, 5)))
i0 = j + 1
End If
Next
Next
End Sub

Merci pour votre coup de main.