SUM avec nbre de colonnes variable

Résolu
arnaud95000 Messages postés 46 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 18 décembre 2007 - 10 août 2007 à 11:31
arnaud95000 Messages postés 46 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 18 décembre 2007 - 13 août 2007 à 16:42
Bonjour,
Une nouvelle question en fait j'ai fouiné un peu partout et je n'ai pas trouvé de réponse qui convenait à mon cas, j'en suis sur que c'est un truc simple mais j'ai essayé pls choses et ça ne marche pas.
Mon code est le suivant.

Private Sub somme()
Worksheets("feuille1").Select
Dim k As Integer
Dim l As Integer
k = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
l = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
Worksheets("feuille2).Select
Worksheets("feuille2").Cells(1, 1).Formula = "=Sum(feuille1!A1:C1)"
Range("A1").Select
Selection.AutoFill Destination:=Range(Cells(1, 1), Cells(k, 1)), Type:=xlFillDefault
Range(Cells(1, 1), Cells(k, 1)).Select
End Sub

En fait ce que je voudrais c'est non pas avoir C1 mais un truc du genre cells(1,l) de manière à ce que la celulle dépende du l calculé précédemment. Merci par avcance de votre aide.@+

4 réponses

arnaud95000 Messages postés 46 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 18 décembre 2007
13 août 2007 à 16:42
Bon voici une réponse assez simple.



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 





Private Sub somme()





Dim k As Integer





Dim l As Integer





Dim rg As Object





Dim i As Integer





k = Sheets("feuil2").Cells.SpecialCells(xlCellTypeLastCell).Row





l = Sheets("feuil2").Cells.SpecialCells(xlCellTypeLastCell).Column





For i = 1 To k





Set rg = Range(Cells(i, 1), Cells(i, l))





Worksheets("feuil2").Cells(i, 1).Formula = "=SUM(feuil1!" & rg.AddressLocal & " )"





Next i





end sub
3
cs_etniqs Messages postés 201 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 10 mai 2016
10 août 2007 à 11:44
Pour décaler les références des cellules avec une base fixe , utilise offset(), l'équivalent de décaler() sous excel

range("base").offset(3,2)

ex : tu pointes donc la cellule décalée de 3 lignes et 2 colonnes (dans le sens excel) par rapport à la cellule référencée "base"
0
arnaud95000 Messages postés 46 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 18 décembre 2007
10 août 2007 à 14:09
J'ai testé avec offset() et j'ai toujours un souci, en fait je pense qu'il existe un moyen de remplacer la forme range comme je l'ai fait ds la macro...("=Sum(feuille1!A1:C1)") par une forme sous cells et de cette maniere avoir un truc du genrec range(cells(1,1),cells(1,l))
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
10 août 2007 à 23:18
Essaie ceci pour voir et dis-moi si ça ressemble à ce que tu cherches

Sub FormuleAddition()
    Dim nbLignes As Long
   
    nbLignes = Sheets("Feuil1").Cells(Rows.Count, "A").End(xlUp).Row
   
    Sheets("Feuil2").Range("A1:A" & nbLignes).Formula = "=SUM(Feuil1!A1:C1)"
End Sub

Si tu as des entêtes sur la première ligne, tu pourrais changer pour
Sheets("Feuil2").Range("A2:A" & nbLignes).Formula = "=SUM(Feuil1!A2:C2)"

MPi
0
Rejoignez-nous