Somme d'une plage de cellules d'une feuille X suite à un clic dans une autre feuille

coumba

XLDnaute Nouveau
Bonjour,

Je souhaite sommer des cellules d'une feuille nommée "RM&C Production" une fois que l'utilisateur clic sur le bouton "Results" se trouvant dans une autre feuille "Use and Disposal".
J'ai essayé plusieurs codes qui ne marchent pas, ci-aprés ma derniére tentative.

Private Sub Results_Click()
'Calculs
ligne1 = Sheets("RM&C Production").Range("A65536").End(xlUp).Row + 1
Sheets("RM&C Production").Cells(ligne1, 9).Value = "Total"
Sheets("RM&C Production").Cells(ligne1, 10).Value = Application.WorksheetFunction.Sum(Range(Sheets("RM&C Production").Cells("J16"), Sheets("RM&C Production").Cells(ligne1 - 1, 10)))
End Sub


Pour plus de précision, j'ai un classeur composé de plusieurs feuilles. Dans chaque feuille, l'utilisateur doit rentrer un certain nombre d'information. Une fois toutes les informations renseignées, un clic sur le bouton "Results" doit faire la somme des cellules adequat dans chaque feuille. Ici, je veux sommer le premiére cellule remplie de la colonne J (J16) à la dernière cellule remplie de la colonne (Cells(ligne1 - 1, 10) .
A la compilation j'ai l'erreur "Argument ou appel de procedure incorrect". Je suis archi-débutant, pour les besoins d'un stage j'ai du me former dans le tas... Je suis incapable de trouver l'ereur même aprés plusieurs heures de recherche qui n'ont fait que m'embrouiller encore plus.

Merci de votre aide !

Trés bonne journée
 

CHALET53

XLDnaute Barbatruc
Re : Somme d'une plage de cellules d'une feuille X suite à un clic dans une autre feu

Bonjour,

Adapte ceci (ton "J16" doit poser problème : si ligne1=5, tu fais la somme de J16 à J4 avec un total en J5 !!!)
J'ai mis ligne 1 colonne 10 à la place

ligne1 = Sheets("Feuil1").Range("A65536").End(xlUp).Row + 1
Set myrange = Range(Cells(1, 10), Cells(ligne1 - 1, 10))
Sheets("Feuil1").Cells(ligne1, 9).Value = "Total"
Sheets("Feuil1").Cells(ligne1, 10).Value = Application.WorksheetFunction.Sum(myrange)
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Somme d'une plage de cellules d'une feuille X suite à un clic dans une autre feu

Bonjour Coumba et bienvenue, Chalet, bonjour le forum,

Peut-être comme ça :
Code:
Private Sub Results_Click()
Dim pl As Integer 'déclare la variable pl (Première Ligne)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)

With Sheets("RM&C Production") 'prend en compte l'onglet "RM&C Production"
    'définit la premièr ligne pl de la colonne J (1 si J1 n'est pas vide, sinon la première ligne éditée de la colonne J)
    pl = IIf(.Range("J1") <> "", 1, .Range("J1").End(xlDown).Row)
    'définit la dernière ligne dl de la colonne J
    dl = .Cells(Application.Rows.Count, 10).End(xlUp).Row
    .Cells(dl + 1, 9).Value = "Total" 'place "Total" en cellule ligne dl+1, colonne I
    'place la somme de la plage pl:dl de la colonne J en cellule ligne dl+1, colonne J
    .Cells(dl + 1, 10).Value = Application.WorksheetFunction.Sum(Range(.Cells(pl, 10), .Cells(dl, 10)))
End With 'fin de la prise en compte de l'onglet "RM&C Production"
End Sub
 

coumba

XLDnaute Nouveau
Re : Somme d'une plage de cellules d'une feuille X suite à un clic dans une autre feu

Bonjour à tous,

Bonjour chalet, bonjour Robert,

Merci pour vos réponses qui m'ont bien aider. Je comprend mieux la méthode et je n'ai plus d'erreur de compilation. Cependant le résultat de la somme reste nulle malgrés plusieurs tentatives avec des valeurs différentes. J'ai testé mon range (pl et dl), il renvoie bien ce qu'il faut.
Code:
With Sheets("RM&C Production")
dl = .Cells(Application.Rows.Count, 10).End(xlUp).Row
pl = IIf(.Range("J1") <> "", 1, .Range("J1").End(xlDown).Row)
Set myrange = Range(Cells(16, 10), Cells(dl, 10))
.Cells(dl + 1, 7).Value = pl
.Cells(dl + 1, 8).Value = dl
.Cells(dl + 1, 9).Value = "Total"
.Cells(dl + 1, 10).Value = Application.WorksheetFunction.Sum(myrange)
End With

Mon classeur excel est assez volumineux, alors je joint une copie de la feuille concernée pour vous permettre de mieux visualiser !

Chaleureusement merci,
 

Pièces jointes

  • Copie de Essai1.xlsm
    57.6 KB · Affichages: 67
  • Copie de Essai1.xlsm
    57.6 KB · Affichages: 63
  • Copie de Essai1.xlsm
    57.6 KB · Affichages: 64

Robert

XLDnaute Barbatruc
Repose en paix
Re : Somme d'une plage de cellules d'une feuille X suite à un clic dans une autre feu

Bonjour le fil, bonjour le forum,

Bon tu vois, avec un fichier exemple c'est tout de suite plus facile à comprendre... Je pensais que la première ligne pouvait être variable mais visiblement se sera toujous la ligne 16 donc inutile d'utiliser une variable pl pour elle...
Comme je n'ai pas ta version d'Excel je n'arrive pas à faire tourner le moindre code sur ton fichier, dans lequel d'ailleurs, je n'ai pas retrouver le code que tu soumets (???). J'ai donc recopié les données de l'onglet "RM&C Production" dans un fichier version Excel 2003 et adapté le code. Ça semble fonctionner correctement. À tester sur ton fichier à toi.
Le code est placé dans le module Module1 :
Code:
Public Sub Macro1()
Dim dl As Integer
Dim myrange As Range


With Sheets("RM&C Production")
    dl = .Cells(Application.Rows.Count, 10).End(xlUp).Row
    Set myrange = .Range(.Cells(16, 10), .Cells(dl, 10))
    .Cells(dl + 1, 8).Value = dl
    .Cells(dl + 1, 9).Value = "Total"
    .Cells(dl + 1, 10).Value = Application.WorksheetFunction.Sum(myrange)
End With
End Sub
Le fichier :
 

Pièces jointes

  • Coumba_v01.xls
    62.5 KB · Affichages: 46

coumba

XLDnaute Nouveau
Re : Somme d'une plage de cellules d'une feuille X suite à un clic dans une autre feu

Ouff ça marche, j'ai enfin une somme exacte !!
J'avais:
Code:
Set myrange = Range(Cells(16, 10), Cells(dl, 10))
Que j'ai remplacé par:
Code:
Set myrange = .Range(.Cells(16, 10), .Cells(dl, 10))
J'en déduis donc que les points sont nécessaires pour signifier que c'est l'onglet courant du "with".

Robert, c'est normal que t'a pas trouver le code. J'ai fait un copier coller de ma feuille surtout dans l'idée de vous permettre de visualiser le fichier excel.

Merci Robert, Merci Chalet, vous me sauver la mise!!! Je découvre VBA sur excel, et je kiffe...:)
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Somme d'une plage de cellules d'une feuille X suite à un clic dans une autre feu

Bonjour le fil, bonjour le forum,

Oui Coumba, le point est nécessaire pour signifier que ce qui le suit se rapporte à la partie que tu as désignée après le With. Cela évite de la répéter tout au long du code...

Code:
With NimporqueQuoi
     .valeur (la valeur du NimporteQuoi)
     .couleur (la couleur du NimporteQuoi)
     .etc. (l'etc. du NimporteQuoi)
End With
Sinon méfie-toi du VBA. On devient vite accro...

 

Discussions similaires

Statistiques des forums

Discussions
312 023
Messages
2 084 714
Membres
102 637
dernier inscrit
TOTO33000