OVH Cloud OVH Cloud

sous-totaux et macros

3 réponses
Avatar
Pascale
Bonjour à toutes et à tous

Voici mon problème (excel97)

Dans une feuille mensuelle, je dois répartir les heures travaillées de
chaque salarié par mission soit :

Col A Col B Col C Col D.....Col S Col
T
jours/mois Salariés Mission1 Mission2 Mission17 Total

avec une macro je fais un sous total par salarié et par mission

ces totaux et sous totaux me servent à renseigner d'autres tableaux dans la
feuille, toujours avec macro

Mon problème est que je lorsque je rajoute des salariés les lignes des
totaux et sous totaux se décalent et tous mes tableaux qui en découlent sont
totalement faux.

y a t-il un moyen d'y remédier ou dois-je tout simplement refaire toutes les
macros dès que je rajoute un salarié ?

Macro pour sous-totaux

Sub sous_totaux()
' sous_totaux Macro
'
Selection.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(3, 4,
5, 6, _
7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20), Replace:=True,
PageBreaks:=False, _
SummaryBelowData:=True
ActiveSheet.Outline.ShowLevels RowLevels:=2
End Sub

et une des macros calculs à partir des soustotaux

Sub Pourc_Mission_par_salarié()
'
' Pourc_Mission_par_salarié Macro

Range("C130").Select
ActiveCell.FormulaR1C1 = "=R[-96]C/R[-31]C"
Range("C131").Select
ActiveCell.FormulaR1C1 = "=R[-65]C/R[-32]C"
Range("C132").Select
ActiveCell.FormulaR1C1 = "=R[-34]C/R[-33]C"
Range("C133").Select
Selection.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)"
Range("C130:C133").Select
ActiveWindow.SmallScroll ToRight:=1
Selection.AutoFill Destination:=Range("C130:S133"), Type:=xlFillDefault
Range("C130:S133").Select
ActiveWindow.ScrollColumn = 1
Range("C130").Select
End Sub


Merci à vous

Pascale

3 réponses

Avatar
Jean-François Aubert
Salut Pascale,

A mon avis, il faut nommer ( menu insertion/non/définir)
les cellules référencées dans les formules de ton code.
Ainsi, les lignes ajoutées ne fausseront pas les formules.

à la place de :
Range("C130").Select
ActiveCell.FormulaR1C1 = "=R[-96]C/R[-31]C"
.......

........
etc....

cela devrait donner quelque chose du genre:

Sub Pourc_Mission_par_salarié()

'c130
range("toto").FormulaR1C1 = "=toto2/toto3"
'c131
range("titi").FormulaR1C1 = "=titi2/titi3"
'c132
range("zaza").FormulaR1C1 = "=zaza2/zaza3"
'c133
range("dodo").FormulaR1C1 = "=SUM(toto:zaza)"
range("toto:dodo").select
ActiveWindow.SmallScroll ToRight:=1
Selection.AutoFill Destination:=Range("toto").Resize(4, 17), Type:=xlFillDefault
ActiveWindow.ScrollColumn = 1
range("toto").select
End sub

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Pascale" a écrit dans le message de
news:
Bonjour à toutes et à tous

Voici mon problème (excel97)

Dans une feuille mensuelle, je dois répartir les heures travaillées de
chaque salarié par mission soit :

Col A Col B Col C Col D.....Col S Col
T
jours/mois Salariés Mission1 Mission2 Mission17 Total

avec une macro je fais un sous total par salarié et par mission

ces totaux et sous totaux me servent à renseigner d'autres tableaux dans la
feuille, toujours avec macro

Mon problème est que je lorsque je rajoute des salariés les lignes des
totaux et sous totaux se décalent et tous mes tableaux qui en découlent sont
totalement faux.

y a t-il un moyen d'y remédier ou dois-je tout simplement refaire toutes les
macros dès que je rajoute un salarié ?

Macro pour sous-totaux

Sub sous_totaux()
' sous_totaux Macro
'
Selection.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(3, 4,
5, 6, _
7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20), Replace:=True,
PageBreaks:úlse, _
SummaryBelowData:=True
ActiveSheet.Outline.ShowLevels RowLevels:=2
End Sub

et une des macros calculs à partir des soustotaux

Sub Pourc_Mission_par_salarié()
'
' Pourc_Mission_par_salarié Macro

Range("C130").Select
ActiveCell.FormulaR1C1 = "=R[-96]C/R[-31]C"
Range("C131").Select
ActiveCell.FormulaR1C1 = "=R[-65]C/R[-32]C"
Range("C132").Select
ActiveCell.FormulaR1C1 = "=R[-34]C/R[-33]C"
Range("C133").Select
Selection.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)"
Range("C130:C133").Select
ActiveWindow.SmallScroll ToRight:=1
Selection.AutoFill Destination:=Range("C130:S133"), Type:=xlFillDefault
Range("C130:S133").Select
ActiveWindow.ScrollColumn = 1
Range("C130").Select
End Sub


Merci à vous

Pascale




Avatar
Jean-François Aubert
Re-salut,

En relisant ton problème, je m'apercois que tes formules font réference à des totaux et sous totaux.
Ce qui veux dire qu'il faut nommer les cellules situées en dessus des sous totaux utilisés dans les
formules,
et utiliser un truc du genre:
range("toto")= range("toto").offset(-96,0) / range("toto").offset(-31,0)
à la place de :
range("toto").FormulaR1C1 = "=toto2/toto3"


.....A moins que des lignes soient rajoutées entre la cellule toto
et les cellules situées 96 et 31 lignes plus haut.....

Si j'ai dit trop de c...eries, j'espère que quelqu'un le soulignera......

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Jean-François Aubert" <à a écrit dans le message de
news:%
Salut Pascale,

A mon avis, il faut nommer ( menu insertion/non/définir)
les cellules référencées dans les formules de ton code.
Ainsi, les lignes ajoutées ne fausseront pas les formules.

à la place de :
Range("C130").Select
ActiveCell.FormulaR1C1 = "=R[-96]C/R[-31]C"
.......

........
etc....

cela devrait donner quelque chose du genre:

Sub Pourc_Mission_par_salarié()

'c130
range("toto").FormulaR1C1 = "=toto2/toto3"
'c131
range("titi").FormulaR1C1 = "=titi2/titi3"
'c132
range("zaza").FormulaR1C1 = "=zaza2/zaza3"
'c133
range("dodo").FormulaR1C1 = "=SUM(toto:zaza)"
range("toto:dodo").select
ActiveWindow.SmallScroll ToRight:=1
Selection.AutoFill Destination:=Range("toto").Resize(4, 17), Type:=xlFillDefault
ActiveWindow.ScrollColumn = 1
range("toto").select
End sub

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Pascale" a écrit dans le message de
news:
Bonjour à toutes et à tous

Voici mon problème (excel97)

Dans une feuille mensuelle, je dois répartir les heures travaillées de
chaque salarié par mission soit :

Col A Col B Col C Col D.....Col S Col
T
jours/mois Salariés Mission1 Mission2 Mission17 Total

avec une macro je fais un sous total par salarié et par mission

ces totaux et sous totaux me servent à renseigner d'autres tableaux dans la
feuille, toujours avec macro

Mon problème est que je lorsque je rajoute des salariés les lignes des
totaux et sous totaux se décalent et tous mes tableaux qui en découlent sont
totalement faux.

y a t-il un moyen d'y remédier ou dois-je tout simplement refaire toutes les
macros dès que je rajoute un salarié ?

Macro pour sous-totaux

Sub sous_totaux()
' sous_totaux Macro
'
Selection.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(3, 4,
5, 6, _
7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20), Replace:=True,
PageBreaks:úlse, _
SummaryBelowData:=True
ActiveSheet.Outline.ShowLevels RowLevels:=2
End Sub

et une des macros calculs à partir des soustotaux

Sub Pourc_Mission_par_salarié()
'
' Pourc_Mission_par_salarié Macro

Range("C130").Select
ActiveCell.FormulaR1C1 = "=R[-96]C/R[-31]C"
Range("C131").Select
ActiveCell.FormulaR1C1 = "=R[-65]C/R[-32]C"
Range("C132").Select
ActiveCell.FormulaR1C1 = "=R[-34]C/R[-33]C"
Range("C133").Select
Selection.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)"
Range("C130:C133").Select
ActiveWindow.SmallScroll ToRight:=1
Selection.AutoFill Destination:=Range("C130:S133"), Type:=xlFillDefault
Range("C130:S133").Select
ActiveWindow.ScrollColumn = 1
Range("C130").Select
End Sub


Merci à vous

Pascale








Avatar
Pascale
Bonjour,

Merci beaucoup pour ton aide, je m'y colle ce week-end et te tiens au
courant

bonne journée

Pascale


"Jean-François Aubert" <à a écrit dans le message de
news:
Re-salut,

En relisant ton problème, je m'apercois que tes formules font réference à
des totaux et sous totaux.

Ce qui veux dire qu'il faut nommer les cellules situées en dessus des sous
totaux utilisés dans les

formules,
et utiliser un truc du genre:
range("toto")= range("toto").offset(-96,0) / range("toto").offset(-31,0)
à la place de :
range("toto").FormulaR1C1 = "=toto2/toto3"


.....A moins que des lignes soient rajoutées entre la cellule toto
et les cellules situées 96 et 31 lignes plus haut.....

Si j'ai dit trop de c...eries, j'espère que quelqu'un le soulignera......

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Jean-François Aubert" <à a écrit dans le message
de

news:%
Salut Pascale,

A mon avis, il faut nommer ( menu insertion/non/définir)
les cellules référencées dans les formules de ton code.
Ainsi, les lignes ajoutées ne fausseront pas les formules.

à la place de :
Range("C130").Select
ActiveCell.FormulaR1C1 = "=R[-96]C/R[-31]C"
.......

........
etc....

cela devrait donner quelque chose du genre:

Sub Pourc_Mission_par_salarié()

'c130
range("toto").FormulaR1C1 = "=toto2/toto3"
'c131
range("titi").FormulaR1C1 = "=titi2/titi3"
'c132
range("zaza").FormulaR1C1 = "=zaza2/zaza3"
'c133
range("dodo").FormulaR1C1 = "=SUM(toto:zaza)"
range("toto:dodo").select
ActiveWindow.SmallScroll ToRight:=1
Selection.AutoFill Destination:=Range("toto").Resize(4, 17),
Type:=xlFillDefault


ActiveWindow.ScrollColumn = 1
range("toto").select
End sub

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Pascale" a écrit dans le message de
news:
Bonjour à toutes et à tous

Voici mon problème (excel97)

Dans une feuille mensuelle, je dois répartir les heures travaillées de
chaque salarié par mission soit :

Col A Col B Col C Col D.....Col S
Col



T
jours/mois Salariés Mission1 Mission2 Mission17
Total




avec une macro je fais un sous total par salarié et par mission

ces totaux et sous totaux me servent à renseigner d'autres tableaux
dans la



feuille, toujours avec macro

Mon problème est que je lorsque je rajoute des salariés les lignes
des



totaux et sous totaux se décalent et tous mes tableaux qui en
découlent sont



totalement faux.

y a t-il un moyen d'y remédier ou dois-je tout simplement refaire
toutes les



macros dès que je rajoute un salarié ?

Macro pour sous-totaux

Sub sous_totaux()
' sous_totaux Macro
'
Selection.Subtotal GroupBy:=2, Function:=xlSum,
TotalList:=Array(3, 4,



5, 6, _
7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20),
Replace:=True,



PageBreaks:úlse, _
SummaryBelowData:=True
ActiveSheet.Outline.ShowLevels RowLevels:=2
End Sub

et une des macros calculs à partir des soustotaux

Sub Pourc_Mission_par_salarié()
'
' Pourc_Mission_par_salarié Macro

Range("C130").Select
ActiveCell.FormulaR1C1 = "=R[-96]C/R[-31]C"
Range("C131").Select
ActiveCell.FormulaR1C1 = "=R[-65]C/R[-32]C"
Range("C132").Select
ActiveCell.FormulaR1C1 = "=R[-34]C/R[-33]C"
Range("C133").Select
Selection.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)"
Range("C130:C133").Select
ActiveWindow.SmallScroll ToRight:=1
Selection.AutoFill Destination:=Range("C130:S133"),
Type:=xlFillDefault



Range("C130:S133").Select
ActiveWindow.ScrollColumn = 1
Range("C130").Select
End Sub


Merci à vous

Pascale