FORUM Tom's Hardware » Programmation » VB / VBA / VBS » [VBA Excel] Somme de données avec condition
 

[VBA Excel] Somme de données avec condition

Il y a 423 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : [VBA Excel] Somme de données avec condition
 
Plus d'informations

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 :-)

zeb
Profil : Modérateur libre
Plus d'informations

http://site.voila.fr/zulu-echo-bravo/img/balisecodeppc.png

Plus d'informations

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


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

zeb
Profil : Modérateur libre
Plus d'informations

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 ;)
 

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


Message édité par zeb le 14-02-2007 à 13:44:40
Plus d'informations

merci pour tout !  
Bon en fait ca ne marche toujours pas, mais on m'a dirigé vers la fonction SOMME.SI de excel directement. Et ca me suffit pour résoudre mon probleme.
Merci encore ;-)

zeb
Profil : Modérateur libre
Plus d'informations

Ah bah c'est bien la peine de vouloir faire des macros :o
Repasse quand tu veux avec des vrais problèmes de VB ;)

Plus d'informations

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... ;-)

zeb
Profil : Modérateur libre
Plus d'informations

:)


Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » VB / VBA / VBS » [VBA Excel] Somme de données avec condition
 

Annonces Google
Publicité