Se connecter avec
S'enregistrer | Connectez-vous

[VBA Excel] Somme de données avec condition

Dernière réponse : dans Programmation

Bonjour,

Je travaille sur une table dont une des colonnes est la région (A) et les autres sont des montants de différentes aides (B1, B2, B3 etc....).
Je travaille sur plusieurs onglet (1 par année).
Je cherche a faire une macro qui calcule pour chaque année, la somme des montants (SumB1, SumB2, SumB3 etc....) mais seulement pour les exploitations de la région A choisie.
J'ai fait la macro suivante :

Dim ligne As Integer
Dim Sum As Long

Sum = 0
ligne = 2 'mes données démarrent a partir de la seconde ligne'
While Cells(ligne, 14).Value <> Null 'données région sont en colonne 14'
If Cells(ligne, 14).Value = FR62 Then
Sum = Sum + Cells(ligne, 16).Value 'Montants B1'
End If
ligne = ligne + 1
Wend
Sheets("total FR62").Select 'je range mes résultats dans un autre onglet'
Cells(19, 2).Value = Sum



Mais voila, ca ne marche pas du tout. Ca m'écrit 0 dans la cellule 19,2 de l'onhlet total FR62. Et je non seulement je ne parvient pas a trouver l'erreur mais en plus je n'arrive pas a faure en sorte qu'il répete ca pour toutes les colonnes de montants B.

Merci beaucoup par avance de votre réponse :-)
Lassé par la pub ? Créez un compte

  1. Dim ligne As Integer
  2. Dim Sum As Long
  3.  
  4. Sum = 0
  5. ligne = 2 'mes données démarrent a partir de la seconde ligne'
  6. While Cells(ligne, 14).Value <> Null 'données région sont en colonne 14'
  7. If Cells(ligne, 14).Value = FR62 Then
  8. Sum = Sum + Cells(ligne, 16).Value 'Montants B1'
  9. End If
  10. ligne = ligne + 1
  11. Wend
  12. Sheets("total FR62" ).Select 'je range mes résultats dans un autre onglet'
  13. Cells(19, 2).Value = Sum


Voilou :-). Désolée....... Je recommencerais plus :-)
Expert Programmation

J 'ose espérer que tu as mis la clause Option Explicit au début de ton code :o 
Ce qui prouverait que FR62 ait un sens.

Si tu ne mets pas cette clause, ce crétin de VB permet d'utiliser des variables non définies.
Si FR62 est la valeur que tu attends trouver dans telle cellule, alors il faut la mettre entre guillemets.


Tant qu'à faire, je continue avec les remarques désagréables.

Les commentaires commencent par une quote ('), pas besoin d'en remettre une à la fin.

Ne plus utiliser While .. Wend (qui marche très bien) mais Do While .. Loop (Qui marche aussi bien [:spamafote])

As-tu vraiment besoin de sélectionner - c'est-à-dire de donner explicitement le focus - à la feuille "total FR62" ?
Si oui, pas de problème. Sinon, je t'ai tout réécrit pour me faire pardonner d'avoir été désagréable ;) 

  1. Option Explicit
  2.  
  3. Sub TaProcedure
  4.  
  5. Dim ligne As Integer
  6. Dim Sum As Long
  7.  
  8. Sum = 0
  9. ligne = 2 'tes données démarrent à partir de la seconde ligne
  10.  
  11. Do While Cells(ligne, 14).Value <> Null 'données région sont en colonne 14
  12. If Cells(ligne, 14).Value = "FR62" Then
  13. Sum = Sum + Cells(ligne, 16).Value 'Montants B1
  14. End If
  15. ligne = ligne + 1
  16. Loop
  17. 'je range tes résultats dans un autre onglet
  18. Sheets("total FR62").Cells(19, 2).Value = Sum
  19. [..]
  20. End Sub


Spoiler
Pour les jaloux à qui je ne réécris rien, z'avez qu'à supporter le Stade Toulousain.
Elendis, tu supportes le ST au moins.

disons, que ca m'aurais aidé de savoir faire cette macro car j'ai beaucoup de tables énormes et c'est quand meme plus simple et surtout plus rapide une macro (quand on sait se l'écrire) que de devoir refaire x fois la meme manip a la main...... D'autant que les autres calculs que je vais devoir faire sont nettement plus complexe qu'une simple somme et la la fonction SOMME.SI ne me sera d'aucune utilité.........

Je continue donc quand meme a essayer de faire marcher ma macro (ne serait ce que par simple obstination... ;-)
Lassé par la pub ? Créez un compte