AjouterLastLinedansMacro.

ines009 Messages postés 27 Statut Membre -  
ines009 Messages postés 27 Statut Membre -
Bonjour,

j'ai mis le fichier sur cijoint.fr:
http://www.cijoint.fr/cjlink.php?file=cj201101/cijsU3JnnM.xls

Sub Macro1()
'
' Macro1 Macro
'

'
'Ce que je voudrais c mettre un For Sheets= 1 To Sheets.Count pour lui dire tu me fais ces calculs
'pour les 6 onglets pour les mettre ensuite dans une nouvelle feuille que je crér à la fin en result

Range("AY19:BN34").Select
Selection.FormulaArray = _
"=MINVERSE(MMULT(TRANSPOSE(R[1]C[-44]:R[1485]C[-29]),R[1]C[-44]:R[1485]C[-29]))"

'Pour le cas 3 cette matrice en Sheets cas3 que je veux mettre dans le range AY19:BN34 alors que mes données
'se terminent à la ligne 706 en sheets cas3 R[1]C[-44]:R[687]C[-29]),R[1]C[-44]:R[687]C[-29]
' c ette partie que j'arrive pas à modifier (R[1]C[-44]:R[1485]C[-29]),R[1]C[-44]:R[1485]C[-29]) faudrait mettre
'un R[1]C[-44]:R[Nombredelignes]C[-29]),R[1]C[-44]:R[Nombredelignes]C[-29] ou
'Nombredelignes(àdéfinir)=LastLine-20 parceque les données commencent en ligne 20

'"=MINVERSE(MMULT(TRANSPOSE(R[1]C[-44]:R[687]C[-29]),R[1]C[-44]:R[687]C[-29]))"

Range("AW19:AW34").Select
Selection.FormulaArray = _
"=MMULT(MINVERSE(MMULT(TRANSPOSE(R[1]C[-42]:R[1485]C[-27]),R[1]C[-42]:R[1485]C[-27])),MMULT(TRANSPOSE(R[1]C[-42]:R[1485]C[-27]),R[1]C[-43]:R[1485]C[-43]))"

Range("AP20:AP1504").Select
Selection.FormulaArray = "=MMULT(RC[-35]:R[1484]C[-20],R[-1]C[7]:R[14]C[7])"

Range("AY37").Select
ActiveCell.FormulaR1C1 = _
"=VARP(R[-17]C[-9]:R[1467]C[-9])/VARP(R[-17]C[-45]:R[1467]C[-45])"

Range("AY40:BN55").Select
Selection.FormulaArray = "=R[-3]C*(R[-21]C:R[-6]C[15])"

Range("AY60:BN75").Select
Selection.FormulaArray = "=IF(R[-20]C:R[-5]C[15]>0,R[-20]C:R[-5]C[15]^(1/2),"")"

Range("AW60").Select
ActiveCell.FormulaR1C1 = "=R[-41]C/RC[2]"
Range("AW61").Select
ActiveCell.FormulaR1C1 = "=R[-41]C/RC[3]"
Range("AW62").Select
ActiveCell.FormulaR1C1 = "=R[-41]C/RC[4]"
Range("AW63").Select
ActiveCell.FormulaR1C1 = "=R[-41]C/RC[5]"
Range("AW64").Select
ActiveCell.FormulaR1C1 = "=R[-41]C/RC[6]"
Range("AW65").Select
ActiveCell.FormulaR1C1 = "=R[-41]C/RC[7]"
Range("AW66").Select
ActiveCell.FormulaR1C1 = "=R[-41]C/RC[8]"
Range("AW67").Select
ActiveCell.FormulaR1C1 = "=R[-41]C/RC[9]"
Range("AW68").Select
ActiveCell.FormulaR1C1 = "=R[-41]C/RC[10]"
Range("AW69").Select
ActiveCell.FormulaR1C1 = "=R[-41]C/RC[11]"
Range("AW70").Select
ActiveCell.FormulaR1C1 = "=R[-41]C/RC[12]"
Range("AW71").Select
ActiveCell.FormulaR1C1 = "=R[-41]C/R[1]C[13]"
Range("AW72").Select
ActiveCell.FormulaR1C1 = "=R[-41]C/RC[14]"
Range("AW73").Select
ActiveCell.FormulaR1C1 = "=R[-41]C/RC[15]"
Range("AW74").Select
ActiveCell.FormulaR1C1 = "=R[-41]C/RC[16]"
Range("AW75").Select
ActiveCell.FormulaR1C1 = "=R[-41]C/RC[17]"

'Et là j'aimerai crérune nouvel onglet que j'appele Result pour y mettre les résultats des calculs pour les 6 onglets(cas1... cas6)

Sheets.Add
Sheets("Feuil2").Select
Sheets("Feuil2").Name = "Result"
Range("A2").Select
ActiveCell.FormulaR1C1 = "cas1"

Range("B2:Q2").Select
Selection.FormulaArray = "=TRANSPOSE('cas1'!R[17]C[47]:R[32]C[47])"

Range("R2").Select
Range("R2:AG2").Select
Selection.FormulaArray = "=TRANSPOSE('cas1'!R[58]C[31]:R[73]C[31])"
End Sub

Donc voila ce qui fait que j'y arrive pas c que on a pas le meme nombre de ligne dans les onglets, en cas1 les données se terminent à la ligne 1504, , 919 en onglet cas2...

Merci, avec le fichizer c plus facile à comprendre

1 réponse

ines009 Messages postés 27 Statut Membre
 
Par exemple la première formule(Range("AY19:BN34").Select
Selection.FormulaArray = _
"=MINVERSE(MMULT(TRANSPOSE(R[1]C[-44]:R[1485]C[-29]),R[1]C[-44]:R[1485]C[-29]))" ,

j'essaye de la remplacer par:

=MINVERSE(MMULT(TRANSPOSE(R[1]C[-44]:R[Derlig]C[-29]),R[1]C[-44]:R[Derlig]C[-29]))

en fesant calculer au début
LastLine = Range("D65536").End(xlUp).Row
Derlig = LastLine - 19
la macro calcule bien LastLine et Derlig mais ca bug dès cette première formule, donc c pas la bonne syntaxe?
et je vois pas ce que ca peut etre.

Merci pour votre aide.
0