Somme sur une plage

Bonjour,

Je souhaite obtenir une somme sur les lignes qui ne sont jamais sur la même plage.

J'ai ajouté un fichier a titre d'exemple.

Je souhaite:

  • parcourir la colonne J et aller sur la dernière ligne où il y a un montant
  • faire un décalage jusqu'à à colonne M
  • faire la somme de toute ces lignes
  • mettre le résultat en M13

Voir mon fichier pour que cela soit plus clair.

Merci d'avance pour votre aide.

10test-calcul.xlsx (7.91 Ko)

Bonjour,

Est-il possible de mettre un exemple avec des chiffres là où il y en aurait dans ton fichier, et le résultat obtenu ?

Parce que là, avec l'exemple fourni, je te dis de mettre en M13:

= somme(J1:L10000)

Mais j'imagine que ce n'est pas ça et que tu ne veux pas juste ajouter 3 chiffres ...

Bonjour,

Merci pour ton aide.

En fait, le problème c'est ça. Dans mon exemple, j'ai des chiffres sur la ligne 10.

Par contre dans les extractions que je fais mensuellement, ces chiffres peuvent se retrouver n'importe ou. C'est en fonction de la taille du fichier. Par contre les chiffres sont toujours dans les mêmes colonnes à savoir, J, K, L, M.

Je souhaite donc séléctionner ces colonnes, aller a la fin, et faire le total de J, K, L, M.

J'espère que je suis clair

Bonjour,

Personne pour un coup de main ? Pourtant ça doit être très simple

Je m'explique mieux. A mon avis le problème vient de moi...

Je joins un fichier en PJ.

Sur ma première feuille, j'ai des données dans les colonnes A, B, C et D. A la fin de chaque colonne il y a le total. Je dois juste prendre les 4 totaux, les additionner et mettre le résultat (ici dans la cellule jaune).

J'ai fait un petit bout de code qui marche très bien sur une seule feuille.

Dès que je veux le mettre dans une boucle pour faire cette opération sur mes trois feuilles, cela ne marche plus.

Sub somme()
Dim a, b, c, d, total As Variant
Dim ws As Worksheet

For Each ws In Worksheets
     a = Range("A" & Rows.Count).End(xlUp).Value
     b = Range("B" & Rows.Count).End(xlUp).Value
     c = Range("C" & Rows.Count).End(xlUp).Value
     d = Range("D" & Rows.Count).End(xlUp).Value
     total = a + b + c + d

     Range("A" & Rows.Count).End(xlUp).Activate
     ActiveCell.Offset(2, 3).Select
     ActiveCell.Value = total
Next
End Sub

Vu mon code, il y a sûrement une manière plus élégante de faire cette opération

9test-sum.xlsm (17.95 Ko)

Bonjour,

Je ne comprends toujours pas ce que tu veux.

Tu parlais la dernière fois des colonnes JKL et M, et dans ton dernier exemple, on ne retrouve rien de ça ...

Je suis désolé, j'avais validé l'envoi du poste en voulant faire un aperçu. Il manquait donc la moitié des informations.

J'ai mieux expliqué et joins un fichier. J'espère que c'est plus clair.

Il n'y a pas de cellule jaune dans ton fichier.

Les totaux, c'est toi qui les fais à un moment, ou ils sont importés avec le reste ? Ils te servent à autre chose qu'à avoir ton total global ? (parce que sinon, ils ne servent à pas grand chose pour calculer ton total global, en fait ...)

Voir le fichier en pièce jointe.

Les totaux des colonnes sont faits par le logiciel de comptabilité, pas par moi.

Je les ai refait à la main ici juste pour expliquer ce que je veux faire. Sinon le fichier de bases est immense.

Je souhaite, pour chaque feuilles, faire le total des totaux en fait.

Pour la première feuille par exemple, ça sera 105 + 161 + 231 + 511 et mettre le total à la fin (1008€ dans le cellule D22).

Je te remercie pour ton aide en tout cas.

7test-sum.xlsm (18.11 Ko)

Re,

Par rapport au code que tu as donné, voici quelques petites modifications :

Sub somme()
Dim a, b, c, d, total As Variant
Dim Ws As Worksheet
Dim dernligne As Long

For Each Ws In ThisWorkbook.Worksheets
Ws.Activate
dernligne = Range("A" & Rows.Count).End(xlUp).Row

     a = Range("A" & dernligne).Value
     b = Range("B" & dernligne).Value
     c = Range("C" & dernligne).Value
     d = Range("D" & dernligne).Value
     total = a + b + c + d

     Range("D" & dernligne + 2).Value = total
Next
End Sub

Tu n'activais pas la feuille sur laquelle tu voulais mettre le calcul, ce qui fait que ça te mettait les résultats en boucle sur ta feuille1.

Et puis tu cherchais à chaque fois la denrière ligne occupée en D, ce qui fait que ça prenait ton total de la feuille d'avant, ce qui faussait tes résultats.

Un immense merci pour ton aide ! Ca marche très bien.

Merci aussi pour les explications liées à mes erreurs. Histoire de ne pas les refaire la prochaine fois.

Merci encore et sûrement à bientôt sur le forum

Tu dois même pouvoir pousser le vice jusqu'à

Sub somme()
Dim Ws As Worksheet
Dim dernligne As Long

For Each Ws In ThisWorkbook.Worksheets
Ws.Activate
dernligne = Range("A" & Rows.Count).End(xlUp).Row

Range("D" & dernligne + 2).Value = Application.Sum(Range("A" & dernligne, Range("D" & dernligne)))
Next
End Sub
Rechercher des sujets similaires à "somme plage"